2017-01-09 1 views
0

vCenterに仮想マシンを作成するためのプレイブックがあります。作成中にVMはisoイメージをマウントし、OSを自動的にインストールします。インストール後、VMはそのIPアドレスを取得します。私は、IPアドレスを使用して、演劇を続けていきたいです。実行中のプレイブックを遅らせる方法は?

私は約wait_forを読んでいますが、使用方法は分かりません。それとも別の方法がありますか?あなたはget_ip変数を割り当てる方法を示していないので、私はあなたがそれを参照することができると仮定し

- hosts: localhost 
    gather_facts: false 
    connection: local 
    user: ansible 
    become: true 
    vars_files: 
    - ../roles/vm-create/vars/default.yml 
    vars_prompt: 
    - name: "name_VM" 
     prompt: "VM name:" 
     private: no 
     default: "vm001" 

    - name: "vcenter_user" 
     prompt: "vCenter user" 
     private: no 
     default: "root" 

    - name: "vcenter_pass" 
     prompt: "Enter password vCenter" 
     private: yes 

    roles: 
    - vm-create 

# waiting for the installation and gets ip (Do-Until Loops or wait_for) 

- name: setting VM 
    become: true 
    hosts: '{{ get_ip }}' 
    roles: 
    - { role: ldap-client, tags: [ 'ldap' ] } 
+0

@techraf、SRY、私の英語は非常に悪いです。 – Nikita

+0

@Wtower、hm ... {インストールを待って起きる}以前に働いていた場所を表示したかったのです。私は続けて書き込みを試みます。私は編集する、理解してくれることを願う – Nikita

+0

@techraf私は編集したい、理解できるようになるよ – Nikita

答えて

1

:以下

脚本。 `hostvars['localhost']['get_ip]でアクセスする必要があるため、簡単ではありません。 'または動的インベントリを作成する必要があります。

次に、非常に基本的なwait_forタスクを使用するだけですが、マシンに役割を割り当てたいので、pre_tasksセクションでタスクを定義する必要があります。

あなたの第二のプレイは次のようになります。

- name: setting VM 
    become: true 
    hosts: '{{ get_ip }}' 
    pre_tasks: 
    - name: Ensure machine at {{ get_ip }} SSH port is listening 
     wait_for: 
     host: "{{ get_ip }}" 
     port: 22    # SSH port 
     delay: 60    # wait 1 minute before trying 
    roles: 
    - { role: ldap-client, tags: [ 'ldap' ] } 
+0

私は割り当て方法を知らない。ヘルプvmware_guest_factsで情報を取得する方法を知っています:はい。しかし、アイデアのおかげで – Nikita

関連する問題