web-dev-qa-db-ja.com

Ansible-事実を収集する前のアクション

誰かが何かを行う方法を知っていますか(ポートを待つ/管理対象ノードの起動など)[〜#〜] before [〜#〜]事実を収集していますか?事実の収集をオフにできることを知っています

gather_facts: no

および[〜#〜] then [〜#〜]ポートを待機しますが、事実が必要な場合、ノードが起動するまで待機する必要がある場合はどうなりますか?

44
silverdr

ファクトの収集は、 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:
56
udondan

このような何かが動作するはずです:

- 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で応答するのを待ってから、セットアップモジュールがファクトギャザリングを実行します。その後、他に必要なことを行うことができます。

21
Bruce P

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グループ)で動作していると思います

1
Daniel Bower