Ansible | replace モジュール

Ansible の replace モジュールで設定ファイルの内容を書き換えてみた。

設定

対象ファイルのホスト名 old.example.com を new.example.com に置換する。

対象ファイル

1
2
3
4
5
6
7
8
/tmp/hosts
127.0.0.1 localhost
127.0.1.1 old.example.com host01

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

### playbook.yml

1
2
3
4
5
6
7
8
- hosts: test-hosts
become: true
tasks:
- replace:
dest: /tmp/hosts
regexp: '(\s+)old\.example\.com(\s+.*)?$'
replace: '\1new.example.net\2'
backup: yes

実行

1
2
3
4
5
6
7
8
9
10
11
12
13
$ ansible-playbook -i hosts playbook.yml -K
SUDO password:

PLAY [test-hosts] **************************************************************

TASK [setup] *******************************************************************
ok: [192.168.1.201]

TASK [replace] *****************************************************************
changed: [192.168.1.201]

PLAY RECAP *********************************************************************
192.168.1.201 : ok=2 changed=1 unreachable=0 failed=0

確認

1
2
3
4
5
6
7
8
$ cat > /tmp/hosts
127.0.0.1 localhost
127.0.1.1 new.example.net host01

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters