2015-09-16 140 views
0

以下是我的亞馬爾文件,ansible只有第一個shell命令執行

--- 

    - hosts: qa-workstations 

     tasks: 

      - name: update java version 
      shell: echo "asdfasdf" > /tmp/abc 
      shell: echo "asdf" >> /tmp/abc 

如果我用下面的命令執行ansible, ansible-劇本test.yml -k

僅執行1殼。如何解決這個問題?

+2

對你發出的每個命令都有一個任務 - 它也比較容易調試 –

回答

3

如果你想有一個任務執行的許多命令,你可以使用with_items循環:

例子:

tasks: 
    - name: test 
    shell: "{{ item }}" 
    with_items: 
     - echo Ansible 
     - df -h 

但是,如果你有很多的命令,你應該使用script模塊。 script模塊將您的shell腳本複製到遠程機器並執行它。

3

你實際上只在這裏定義了一個任務。第二個shell行簡單地覆蓋第一個。寫這個的正確方法是:

--- 

- hosts: qa-workstations 

    tasks: 

     - name: create /tmp/abc 
     shell: echo "asdfasdf" > /tmp/abc 

     - name: Append to /tmp/abc 
     shell: echo "asdf" >> /tmp/abc