概要
Ansibleでファイルを修正してみる
ファイル構成
├ origin_file
│ └ hoge.txt <- 転送して修正するテキストファイル
├ hosts <- Inventryファイル
├ site.yml <- Playbookファイル
└ Vagrantfile
対象ファイル
修正対象のファイルを下記のように準備しておきます。
origin_file/hoge.txt
Hello World.
This is a sample file.
Remove Line Sample text.
hoge hoge
fuga fuga
条件に該当する行を修正する
正規表現にマッチする行を指定の文字列に修正します。
site.yml
---
- name: Playbook Sample
hosts: all
become: true
tasks:
- name: install libselinux-python
yum:
name: libselinux-python
state: present
- name: ファイル(./origin_file/hoge.txt)を転送する
copy:
src: origin_file/hoge.txt
dest: /tmp/hoge.txt
owner: vagrant
group: vagrant
mode: "u=rw,g=r,o=r"
- name: 条件に該当する行を修正する
lineinfile:
dest: /tmp/hoge.txt
regexp: '^Hello\s+'
line: Hello Hoge
playbookを実行する。
$ ansible-playbook -i hosts site.yml
条件に該当する行を削除する
正規表現にマッチする行を1行まるごと削除します。
site.yml
---
- name: Playbook Sample
hosts: all
become: true
tasks:
- name: install libselinux-python
yum:
name: libselinux-python
state: present
- name: ファイル(./origin_file/hoge.txt)を転送する
copy:
src: origin_file/hoge.txt
dest: /tmp/hoge.txt
owner: vagrant
group: vagrant
mode: "u=rw,g=r,o=r"
- name: 条件該当する行を削除する
lineinfile:
dest: /tmp/hoge.txt
regexp: '^Remove\s+'
state: absent
playbookを実行する。
$ ansible-playbook -i hosts site.yml
ファイル修正してコマンド実行する
sshd_configを修正してsshdを再起動し、RootでSSHログインを禁止する。
site.yml
---
- name: Playbook Sample
hosts: all
become: true
tasks:
- name: install libselinux-python
yum:
name: libselinux-python
state: present
- name: rootのパスワードでSSHログイン禁止
lineinfile:
dest: /etc/ssh/sshd_config
regexp: '^PermitRootLogin\s+'
line: PermitRootLogin no
validate: sshd -t -f %s
notify:
- sshdRestart
handlers:
- name: sshdRestart
service:
name: sshd
state: restarted
※ validate: 編集ファイルを検証するコマンド (リターン0 = 成功)
※ validateの場合は、%s指定が必須
※ notify: タスク実行結果がchangedの時に
実行される処理を指定する
playbookを実行する。
$ ansible-playbook -i hosts site.yml
参考文献
以上