ansibleを使用して、サーバーのクラスターを作成したいと思います。
1つのメインプレイブックに、いくつかのサブプレイブックを含めています。
- include: playbook_commandserver.yml
- include: playbook_agent.yml
playbook_commandserver.ymlで、コマンドサーバー(aws上)を作成します。次に、set_fact
モジュールを使用してコマンドサーバーのDNS名を記憶するロールをトリガーします。
- name: Get hostname of command server
shell: /usr/bin/host $(/usr/bin/curl -s http://ipecho.net/plain) | /usr/bin/awk '{print $5}' | /usr/bin/awk -F 'aws.com' '{print $1"aws.com"}'
register: cs
- name: Set hostname of command server as fact
set_fact: commandserver="{{ cs.stdout }}"
commandserver
実際には、同じプレーではなく、同じ脚本で..おろかで提供されplaybook_agent.yml
、その後、含まれ得ることを、。そして、それはまさにそこにあり、そこでcommandserver-factにアクセスする必要があります。
では、完全なansible-runに有効な変数をどのように設定/保存するのでしょうか。
私はこれを見つけました:https : //stackoverflow.com/questions/26732241/ansible-save-registered-variable-to-file しかし、私にはこれは醜いハックのように見えます。
この問題に対するより良い解決策はありませんか?変数を設定する方法はありません、それはansible-run全体に有効ですか?