誰かが何かを行う方法を知っていますか(ポートを待つ/管理対象ノードの起動など)[〜#〜] before [〜#〜]事実を収集していますか?事実の収集をオフにできることを知っています
gather_facts: no
および[〜#〜] then [〜#〜]ポートを待機しますが、事実が必要な場合、ノードが起動するまで待機する必要がある場合はどうなりますか?
ファクトの収集は、 setup
モジュール を実行することと同等です。ファクトを実行して、ファクトを手動で収集できます。文書化されていませんが、次のようなタスクを追加するだけです。
- name: Gathering facts
setup:
プレイブックレベルでgather_facts: no
と組み合わせて、上記のタスクが実行されたときにのみファクトがフェッチされます。
サンプルプレイブックの両方:
- hosts: all
gather_facts: no
tasks:
- name: Some task executed before gathering facts
# whatever task you want to run
- name: Gathering facts
setup:
このような何かが動作するはずです:
- hosts: my_hosts
gather_facts: no
tasks:
- name: wait for SSH to respond on all hosts
local_action: wait_for port=22
- name: gather facts
setup:
- continue with my tasks...
Wait_forはansible Hostでローカルに実行され、サーバーがポート22で応答するのを待ってから、セットアップモジュールがファクトギャザリングを実行します。その後、他に必要なことを行うことができます。
Ec2からホストをプロビジョニングする方法を見つけようとしていました。sshが起動するのを待ってから、それに対してプレイブックを実行しました。これは基本的にあなたと同じユースケースです。私は次のようになりました:
- name: Provision App Server from Amazon
hosts: localhost
gather_facts: False
tasks:
# #### call ec2 provisioning tasks here ####
- name: Add new instance to Host group
add_Host: hostname="{{item.private_ip}}" groupname="appServer"
with_items: ec2.instances
- name: Configure App Server
hosts: appServer
remote_user: ubuntu
gather_facts: True
tasks: ----configuration tasks here----
恐らく用語は、プレイブックに2つのプレイがあり、それぞれが異なるホストグループ(localhost、およびappServerグループ)で動作していると思います