Ansibleのinventoryのパターンを以下にまとめる。
良い例があれば随時追加。
Primary and Standby †
- PostgreSQLのようなDBサーバで、PrimaryとStandbyサーバをセットアップする。
- primaryとstandbyのグループで構成
- primaryは複数指定される可能性があるが、プレイブックで1つのノードを選択。
- standbyでは、同期と非同期のパターンがありhostvarsで処理分けする。
hosts
[primary] 127.0.0.1 [standby] 127.0.0.1 replica_mode=sync 192.168.3.4 replica_mode=async
playbook.yml
- hosts: primary[0] tasks: - debug: msg="setup a primary server" - hosts: standby tasks: - block: - debug: msg="Here is in synchronous server block" when: hostvars[inventory_hostname]['replica_mode'] == 'sync' - block: - debug: msg="Here is in asynchronous server block" when: hostvars[inventory_hostname]['replica_mode'] == 'async'
実行結果は以下のようになる。
$ ansible-playbook -i hosts playbook.yml -v PLAY [primary[0]] **************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************** ok: [127.0.0.1] TASK [debug] ********************************************************************************************************************* ok: [127.0.0.1] => { "msg": "setup a primary server" } PLAY [standby] ******************************************************************************************************************* TASK [Gathering Facts] *********************************************************************************************************** ok: [127.0.0.1] ok: [192.168.3.4] TASK [debug] ********************************************************************************************************************* skipping: [192.168.3.4] => {} ok: [127.0.0.1] => { "msg": "Here is in synchronous server block" } TASK [debug] ********************************************************************************************************************* skipping: [127.0.0.1] => {} ok: [192.168.3.4] => { "msg": "Here is in asynchronous server block" } PLAY RECAP *********************************************************************************************************************** 127.0.0.1 : ok=4 changed=0 unreachable=0 failed=0 192.168.3.4 : ok=2 changed=0 unreachable=0 failed=0