事実を収集している場合は、通常の jinja2 + 変数ルックアップを介してホスト変数にアクセスできます。
例えば
- hosts: serverA.example.org
gather_facts: True
...
tasks:
- set_fact:
taco_tuesday: False
次に、これが実行されている場合は、別のホストで:
- hosts: serverB.example.org
...
tasks:
- debug: var="{{ hostvars['serverA.example.org']['ansible_memtotal_mb'] }}"
- debug: var="{{ hostvars['serverA.example.org']['taco_tuesday'] }}"
複数の Ansible コントロール マシン (呼び出し元と呼び出し先ansible
)がある場合、Ansible が事実/変数をキャッシュ(現在は Redis と json) にansible-playbook
保存できるという事実を利用する必要があることに注意してください。異なるホスト変数を持つ可能性が低くなります。これにより、コントロール マシンを共有フォルダー内のファイルを使用するように設定したり (これにはリスクがあります。2 つのコントロール マシンが同じホストで同時に実行されている場合はどうなるでしょうか?)、または Redis からファクトを設定/取得することができます。サーバ。
私の Amazon データの使用では、タグ/メタデータ ルックアップを使用して毎回リソースをフェッチすることを好みます。ホスト変数と実行順序について考えるよりもこれを好むので、これをもう少し簡単に行うことができる Ansible プラグインを作成しました (ただし、マイレージは異なる場合があります) 。