
サーバーがグループ内にあるときに特定のタスクを実行し、グループ内にない場合は別のタスクを実行するプレイブックを用意するというアイデアを検討しています。
すべてのサーバーを備えた office1 があり、プライマリ DHCP サーバーがあるとします。
[office1]
server1
server2
server3
[dhcp]
server2
DHCP サーバーが 1 つだけあることを確認したいと思います。
- include: tasks/add-dhcp.yml
when: inventory_hostname in dhcp
- include: tasks/remove-dhcp.yml
when: inventory_hostname not in dhcp
そのため、DHCP を server3 に変更すると、3 にインストールされ、2 から削除されます。新しい DHCP の展開が完了すると、ロールはすべての office1 サーバーで実行されます。
これについて何かアイデアはありますか? これは悪いアイデアでしょうか? この問題をどのように解決しますか?
答え1
このアプローチがうまくいく場合は、それを採用してください。構成を定義する方法に良い点も悪い点もありません。それ以外では、変数を使用できます。
ただし、条件は次のようになります。
- include_tasks: tasks/remove-dhcp.yml
when: `dhcp` not in group_names
group_names
は魔法の変数実行ターゲットが属するすべてのグループのリストが含まれます。