2015-09-16 112 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