Ansible を使用して EC2 インスタンスをセットアップし、アプリをデプロイしています。タグ関連のサーバーとグループ情報を収集するホスト スクリプトがあります。これらのアクションを 1 つの Playbook として実行したいので、
- 必要に応じて新しいインスタンスが作成されます
- ホスト スクリプトがインベントリをロードします (サーバーのファクトを含む)
- デプロイ プレイブックが機能する
ただし、インベントリは事前にロードされるため、プレイ中にサーバーが作成/更新された場合、サーバー/グループのデータはありません。1) プロビジョニングとデプロイの Playbook を分離する 2) add_host トリックを使用して、サーバーの更新時に動的インベントリをエミュレートできますが、これらのアプローチには欠点があります。
Ansible にインベントリーを強制的にリロードさせることはできますか? 私のテストファイルは次のとおりです:
hosts
スクリプト:
#!/bin/sh
echo `date` >> log.log
echo "{\"standalone\":[\"localhost\"]}"
サンプルplaybook.yml
:
---
- hosts: all
tasks:
- name: show inventory_hostname
command: echo {{ inventory_hostname }}
実行するansible-playbook -i hosts playbook.yml -v
と、次の 2 つの実行が表示されます。
$> cat log.log
Thu Mar 12 09:43:16 SAMT 2015
Thu Mar 12 09:43:16 SAMT 2015
しかし、それを2倍にするコマンドが見つかりませんでした。