新しいサーバーにデプロイし、他のサーバーから削除するための Ansible プレイブック

新しいサーバーにデプロイし、他のサーバーから削除するための Ansible プレイブック

サーバーがグループ内にあるときに特定のタスクを実行し、グループ内にない場合は別のタスクを実行するプレイブックを用意するというアイデアを検討しています。

すべてのサーバーを備えた 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魔法の変数実行ターゲットが属するすべてのグループのリストが含まれます。

関連情報