0

ホームオフィス用に ansible 1.9.4 を使用して、非常にハックな vm 展開環境をセットアップしようとしています。

私はかなり遠いですが、最後のステップはうまくいきません. ステージング vlan の一時的な dns 名を生成する 10loc プラグインを作成しており、その値をホストとして次の Playbook ロールに渡したいと考えています。

    タスク: [localhost-eval | debug msg="{{ hostvars['127.0.0.1'].dns_record.stdout_lines }}"] ***
    わかりました: [127.0.0.1] => {
        "msg": "['vm103.local', 'vm-tmp103.local']"
    }

hostvars を介して、グローバル Playbook スコープでアクセスできます。

{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}

そして、以下に渡す必要があります:

    - 名前: VM テンプレートの構成
      ホスト: "{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}"
      収集_事実: いいえ
      役割:
        - テンプレート-vm-configure

結果は次のとおりです。

PLAY [configure vm template] **************************************************
skipping: no hosts matched

私の在庫はこのように見え、うまくいくようです。「vm-tmp103.local」をハードコーディングすると、ロールが実行されます。

[vm]
vm[001:200].local
[vm-tmp]
vm-tmp[001:200].local

よろしくお願いします。うまくいけば、誰かが私を正しい方向に向けることができます。プラン B は、構成を確定するために dns レコードを bash スクリプトに渡すことで構成されます。これは、vm を監視に追加する前にネットワーク インターフェイスを構成するだけであるためです。

編集:ホストを追加してそれらを一時グループに追加するようにプレイを変更しました - add_host: name={{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }} groups=just_vm

しかし、まだ一致しません。

4

1 に答える 1

0

それは意図した動作ではないと思います。 #9733は私を解決策に導きます。

このタスクを追加すると、ステージングをグループとして使用できるようになります。

  tasks:
    - set_fact: hostname_next="{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}"
    - add_host: group=staging name='{{ hostname_next }}'
于 2016-03-15T16:37:30.103 に答える