2017-01-19 3 views
0

Agent-install.yml という名前のファイルを含めると、ホスト名の最初の2文字に基づいています(例:dserverまたはqserverまたはuserverまたはPSERVER) ...適切な値にsedの更新にagent.properties.j2を使用したいファイルをAnsibleに含め、条件に基づいて2つ以上のアクションを実行させる

つまりホスト名がDS/QSで始まる場合は/私たち、その後agent.setup.IP = DevMaster1 そうでない場合は、ホスト名の場合psで始まり、agent.setup.IP = ProdMaster1

のいずれの場合も、両方ともAgent-install.ymlを含める必要があります。 (私はホスト名を渡していますプレイブックの実行中にそれは動作します (2アクションではない)sed部分は私がここに追加しようとしているものです

誰でもこの方法をお考えですか? 私がするときの条件を使用して2つの作用を有する試みた(しかし、その許可されているとは思わない)複数のアクションを許可していますが許可されていません も試してみました - ブロックが

これを行うには良い方法はあり

が含まれていますか?

- name: Include if Pre-PROD 
    include: Agent-install.yml 
    local_action: shell sed -i '[email protected]*agent.setup.IP=localhost.*@[email protected]' ../templates/agent.properties.j2 
    when: hosts[0:2] == "ds" or "qs" or "us" 
    ignore_errors: yes 

- name: Include if PROD 
    include: Agent-install.yml 
    local_action: shell sed -i '[email protected]*agent.setup.IP=localhost.*@[email protected]' ../templates/agent.properties.j2 
    when: hosts[0:2] == "ps" 
    ignore_errors: yes 

答えて

1

テンプレートは、入力されたデータに基づいて、異なる結果ファイルを生成するために使用されている...あなたは間違った道にしているようです。
あなたはローカルでsedテンプレートにはなっていません。

は持っているあなたのagent.properties.j2テンプレートを変更します。

その後
agent.setup.IP={{ agent_ip }} 

あなたの脚本で:ターゲットホストで

- set_fact: 
    agent_ip: "{{ 'ProdMaster1' if hosts[0:2] == 'ps' else 'DevMaster1' }}" 

- template: 
    src: agent.properties.j2 
    dest: agent.properties.conf 

この方法でagent.properties.confを適切な値を持つことになります。

+0

ありがとう set_factにこのエラーが発生しました。 FAILED!文字列: –

+0

DevMaster1の後の一重引用符に誤字がありました –

+0

完全に動作しますが、これは次のとおりです。間違いなく良い解決策! –

関連する問題