使用ansible创建多个目录

时间:2015-09-23 06:39:59

标签: ansible ansible-playbook

我想为test2创建具有2个子目录(/ home / test1 / bin和/ home / test2 / conf)的多个目录(test1,test2)。我的剧本看起来像这样:

public boolean isGenymotionEmulator(String buildManufacturer) {
    return buildManufacturer != null && 
           (buildManufacturer.contains("Genymotion") || buildManufacturer.equals("unknown"));
}

public boolean buildModelContainsEmulatorHints(String buildModel) {
    return buildModel.startsWith("sdk")
            || "google_sdk".equals(buildModel)
            || buildModel.contains("Emulator")
            || buildModel.contains("Android SDK");
}

但是我收到以下错误:

--
- hosts: localhost
  tasks:
    - name: Create directory
      file: path=/home/{{item}}/bin  state=directory
      file: path=/home/{{item}}/conf state=directory
      with_items:
          - test1
          - test2

这是什么问题?我使用最新的git checkout。有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:13)

我认为由于您在1个任务中使用file模块2次而引发错误。每个任务只能使用1个模块。

在您的情况下,您应该使用nested loop来创建多个目录和子目录。

示例:

---
- hosts: localhost
  tasks:
    - name: test
      file: path=/tmp/{{item.0}}/{{item.1}} state=directory
      with_nested:
        - ['test1', 'test2']
        - ['bin', 'conf']