2016-06-30 11 views
1

現在のケースは次のとおりです。 私は一連のサーバーをプロビジョニングし、これらのサーバーにアプリケーションをインストールするプレイブックを持っています。 これらのアプリのうちの1つに、既に使いたい自分の無意味なプレイブックがあります。今度は私の問題はhosts: [prod]に限られており、上位レベルのプレイブックにあるホストグループが異なるため、このプレイブックから問題が発生します。現在のホストグループを、プレイブックの別のものとして識別させることができますか?

私はただadd_hostを使用して、必要なホストをprodグループに追加することができますが、それは私が気に入らない解決策です。

私の質問です:現在のホストをincludeステートメントの新しいホストグループに追加する方法はありますか? 何かのようなもの- include: foo.yml prod={{ ansible_host_group }}

または、何らかの形でプレイブックのタスクのみを含めることはできますか?

+1

プレイブックにはそれぞれ異なるホストを持つ複数のプレイが含まれている可能性があるため、プレースブックを含めながら 'hosts'属性を上書きする方法はありません。 'ansible_host_group'がここで定義されていないだけなので、あなたの例はうまくいかないでしょう - プレイブック(ホストはまだ定義されていません)かタスク(ホストはすでに固定されています)を含めることができます。あなたの実際のグループ名を含むインベントリの '[prod:children]'エントリを使うか、foo.ymlプレイブックを入れる前に 'group_by:key = prod'タスクをホストのために呼び出すことを考えてください。 –

答えて

1

いいえ、これを行う直接的な方法はありません。

それは hosts: [prod]

に限られていますと今私の問題は、あなたがすることができますセットアップホストのより柔軟な余分VARSを経由して、この脚本から生じる:

- name: add role fail2ban 
    hosts: '{{ target }}' 
    remote_user: root 
    roles: 
    - fail2ban 

を実行し、それは:

ansible-playbook testplaybook.yml --extra-vars "target=10.0.190.123" 
ansible-playbook testplaybook.yml --extra-vars "target=webservers" 

この回避策は適切ですか?もしくは、あなた?

+0

これは現実的な選択肢ではありませんが、私は行こうとプレイブックを変更することはできませんので、 – deiga

+0

これは正しい方法ですが、これを受け入れますが、問題は解決しません:) – deiga

関連する問題