ansibleで実行するPlaybookの書き方についてまとめました。
最初のコマンドおよび Playbook の実行 — Ansible Documentation
tasksディレクトリを作成する
Playbookを格納するために/etc/ansibleにtasksディレクトリを作成します。
[root@RHEL95 ansible]# mkdir tasks
[root@RHEL95 ansible]#
[root@RHEL95 ansible]#
[root@RHEL95 ansible]#
[root@RHEL95 ansible]# pwd
/etc/ansible
[root@RHEL95 ansible]#
[root@RHEL95 ansible]#
[root@RHEL95 ansible]# ls -la
合計 20
drwxr-xr-x 4 root root 64 4月 26 17:36 .
drwxr-xr-x. 139 root root 8192 4月 26 08:35 ..
-rw-r--r-- 1 root root 614 5月 24 2024 ansible.cfg
-rw-r--r-- 1 root root 1175 5月 24 2024 hosts
drwxr-xr-x 2 root root 6 5月 24 2024 roles
drwxr-xr-x 2 root root 6 4月 26 17:36 tasks
.ymlファイルにtaskを書いて保存する
以下のディレクトリに.yml(ヤムル)ファイルを作成して保存します。
/etc/ansible/tasks
viコマンドで.ymlファイルをを作成します。
[root@RHEL95 tasks]#
[root@RHEL95 tasks]# pwd
/etc/ansible/tasks
[root@RHEL95 tasks]#
[root@RHEL95 tasks]#
[root@RHEL95 tasks]#
[root@RHEL95 tasks]# vi test.yml
[root@RHEL95 tasks]#
[root@RHEL95 tasks]#
[root@RHEL95 tasks]#
[root@RHEL95 tasks]#
[root@RHEL95 tasks]# ls
test.yml
[root@RHEL95 tasks]#
RHEL9でSELinuxを無効にするタスクを例にします。
- name: RHEL9でのSELinux無効化
hosts: all
become: true
tasks:
- name: grubbyコマンドで selinux=0を設定する
ansible.builtin.command: >
grubby --update-kernel=ALL --args="selinux=0"
- name: 設定したパラメータを再起動によって適用する
ansible.builtin.reboot:
reboot_timeout: 60
inventoryファイル(/etc/ansible/hostsのこと)について
Ansibleのインベントリファイルに、AnsibleがSSH接続しに行くサーバーのIPアドレス、ホスト名を記載します。
以下のコマンドを実行した際に、このインベントリファイルを読み取ってAnsibleが対象のホストにSSH接続してタスクを実行します。以下の例では-iの後にhostsを直書きしていますが、ユーザーーが/etc/ansibleという場所でコマンドを実行していて、hostsファイルが/etc/ansible/hostsにあるため、このような形で実行しています。
ansible-playbook -i hosts <タスクを書いた.ymlファイル> -k
-kは –ask-passの省略形で、SSH接続する際のパスワードを入力するためにつけます。
以下はansible-playbook -hで確認できる-kオプションの説明です。
-k, --ask-pass ask for connection password
/etc/hostsと/etc/ansible/hostsは全くの別物
ネットワークの名前解決に使用する/etc/hostsと/etc/ansible/hostsは全くの別物です。
Playbookの実行
以下のコマンドでPlaybookを実行します。
ansible-playbook -i hosts ./tasks/test.yml -k
Playbookが正しく実行されるかのテスト
ansible-playbookコマンドに–checkをつけて実行すると、実際にクライアントにパラメータは適用されないが、正しく実行されるかどうかのテストを行うことができます。
実行例です。
[root@RHEL95 ansible]# ansible-playbook -i hosts ./tasks/test2.yml -k --check
SSH password:
PLAY [Disable SELinux via kernel parameter] ************************************
TASK [Gathering Facts] *********************************************************
ok: [※プライベートIPアドレス]
TASK [grubbyコマンドで selinux=0を適用する] ************************************
skipping: [※プライベートIPアドレス]
TASK [適用したパラメータを再起動によって適用する] ******************************
changed: [※プライベートIPアドレス]
PLAY RECAP *********************************************************************
192.168.10.2 : ok=2 changed=1 unreachable=0 failed=0 s kipped=1 rescued=0 ignored=0