Ansible: `add_host`モジュールは、プレイが適用される最初のホストで1回だけ実行されます

作成日 2015年04月14日  ·  3コメント  ·  ソース: ansible/ansible

問題の種類:

バグレポート

レポート#9931と同様

Ansibleバージョン:
  • Ansible 1.8.4(切り離されたHEAD ebc8d48d34)最終更新日2015/04/14 17:59:44(GMT +000)
  • Ansible 1.9.0(切り離されたHEAD 717ffe2bea)最終更新日2015/04/14 17:58:24(GMT +000)
  • Ansible 2.0.0(devel 0345b675f8)最終更新日2015/04/14 17:27:56(GMT +000)
    環境:

Ubuntu 14.04

概要:

add_hostタスクは、プレイのホストリスト内の単一のホストでのみ実行されます。

再現する手順:

プレイブック

---
- name: Environment group_vars
  hosts: all
  gather_facts: no
  tasks:

    - debug: var=inventory_hostname

    - name: Add to group
      add_host: name={{inventory_hostname}} groups={{env}}

- name: Groups
  hosts: all
  gather_facts: no
  tasks:
    - debug: var=group_names
    - debug: var=groups[env]
    - fail: msg="done"

在庫ファイルtry.yml

10.0.0.70
10.0.1.171

実行

ansible-playbook -i ansible/try ansible/try.yml -e 'env=acceptance'

推測される結果:

add_hostモジュールを使用するタスクである[グループacceptance属します。

実績:
PLAY [Environment group_vars] *************************************************

TASK: [debug var=inventory_hostname] ******************************************
ok: [10.0.0.70] => {
    "var": {
        "inventory_hostname": "10.0.0.70"
    }
}
ok: [10.0.1.171] => {
    "var": {
        "inventory_hostname": "10.0.1.171"
    }
}

TASK: [Add to group] **********************************************************
ok: [10.0.0.70]

PLAY [Groups] *****************************************************************                                                                                                                                                                                        [30/1905]

TASK: [debug var=group_names] *************************************************
ok: [10.0.0.70] => {
    "var": {
        "group_names": [
            "acceptance",
            "ungrouped"
        ]
    }
}
ok: [10.0.1.171] => {
    "var": {
        "group_names": [
            "ungrouped"
        ]
    }
}

TASK: [debug var=groups[env]] *************************************************
ok: [10.0.0.70] => {
    "var": {
        "groups[env]": [
            "10.0.0.70"
        ]
    }
}

TASK: [debug var=groups[env]] *************************************************
ok: [10.0.0.70] => {
    "var": {
        "groups[env]": [
            "10.0.0.70"
        ]
    }
}
ok: [10.0.1.171] => {
    "var": {
        "groups[env]": [
            "10.0.0.70"
        ]
    }
}

TASK: [fail msg="done"] *******************************************************
failed: [10.0.0.70] => {"failed": true}
msg: done
failed: [10.0.1.171] => {"failed": true}
msg: done

FATAL: all hosts have already failed -- aborting

最も参考になるコメント

@bcoca 、および別のグループの各ホストのインベントリに新しいホストを追加したい場合はどうなりますか?

全てのコメント3件

考えられる誤解

やあ!

Ansibleにご提出いただきありがとうございます。 それは私たちにとって心から多くのことを意味します。

あなたが提出したチケットは、記載されているものとは少し異なる動作をするため、多少誤解されていると思われます。

特に、これは予想される動作であり、このページ(注)に記載されています。

http://docs.ansible.com/add_host_module.html#id3

将来的には、これはユーザーリストにより適したトピックになる可能性があります。上記についてさらにサポートが必要な場合は、ここに投稿することもできます。

これとAnsibleに関心をお寄せいただき、ありがとうございます。

インベントリに新しいホストを追加しない場合は、代わりにgroup_byディレクティブを使用することをお勧めします。

@bcoca 、および別のグループの各ホストのインベントリに新しいホストを追加したい場合はどうなりますか?

このページは役に立ちましたか?
0 / 5 - 0 評価