2016-12-09 9 views
0

私は自分の不可解なプレイブックでvarsを使用しようとしています。 ENVは、コマンドラインからの入力として渡されます。Ancesの引数としてvarsを使用する

--- 
- hosts: development 
    sudo: yes 
    sudo_user: root 
    vars: 
     env: "{{ ENV|default('DEV') }}" 
    roles: 
     # Copy conf files 
     - { role: copy, src: ./conf/ems/7000/"{{ env }}"/*.conf , dest: /apps/tibco/config/ems/7000/data/ } 
     - { role: copy, src: ./conf/ems/7000/"{{ env }}"/*.conf , dest: /apps/tibco/config/ems/7200/data/ } 
     - { role: copy, src: ./conf/ems/7000/"{{ env }}"/*.conf , dest: /apps/tibco/config/ems/7004/data/ } 

私はまだAnsibleで幼児だとして

 # Copy conf files 
     - { role: copy, src: ./conf/ems/7000/" {{env}} "/*.conf , dest: /apps/tibco/config/ems/7000/data/ } 
              ^
We could be wrong, but this one looks like it might be an issue with 
missing quotes. Always quote template expression brackets when they 
start a value. For instance: 

    with_items: 
     - {{ foo }} 

Should be written as: 

    with_items: 
     - "{{ foo }}" 

が答えに明示してください取得

ansible-playbook -e 'ENV=DEV' --ask-sudo-pass install-ems-plybook.yml 

コマンドによって、この脚本を実行します。

答えて

0

主な問題

あなたは、文字列(./conf/ems/7000/"{{ env }}"/*.conf)の真ん中に引用符を含めるべきではない - それはあなたがに関するエラーメッセージを得たものだ - それは"./conf/ems/7000/{{ env }}/*.conf"

他の問題でなければなりません

あなたは本当に役割ではなくタスクを定義したいと思うようです。私はこれをパラメータの命名から推測します。

あなたが達成したいことを(言葉で)指定していませんでした。ファイルをローカルディレクトリからターゲットノードのディレクトリにコピーしたいとします。

大きな問題の1つは、copyモジュールでワイルドカードを使用できないことです。あなたがwith_fileglobを使用する必要があり、複数のファイルをコピーし、Looping over Fileglobs

もう一つの小さな問題がsudosudo_userは非推奨とbecomebecome_userと置き換えられていることである見るために、彼らはまだ警告メッセージを生成するエイリアスですが、ある日消え保証はありません。

A実施例の脚本は次のようになります。

--- 
- hosts: development 
    become: yes 
    become_user: root 
    vars: 
    env: "{{ ENV|default('DEV') }}" 
    tasks: 
    - copy: 
     src: "{{ item }}" 
     dest: /apps/tibco/config/ems/7000/data/ 
     with_fileglob: 
     - "./conf/ems/7000/{{ env }}/*.conf" 

最後に、あなたの例では、あなたが70007200、および7004を含むディレクトリへ7000を含むディレクトリから同じファイルのセットをコピーします。私はこれがあなたが意図したものなのかどうかはわかりませんが、私はそれをあなたのカスタマイズに任せます。上記の例のようにタスクを追加することができます。

+0

become_userは1.9でサポートされていますか? –

+0

はい、[docs](https://docs.ansible.com/ansible/become.html#for-those-from-pre-1-9-sudo-and-su-still-work)によると 'become'パラメータは1.9に導入されました。 – techraf

関連する問題