【ansible】Playbookの書き方と実行について

Linux

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

タイトルとURLをコピーしました