使用下面的代碼片段,我試圖根據存儲在vars/main.yml中的變量創建多個子目錄。Ansible爲每個環境創建目錄
---
- hosts: all
user: test
sudo: yes
vars_files:
- defaults/main.yml
tasks:
- name: Create directories for each env
file: path="{{ home }}/{{ item.0 }}{{ item.1.name }}/{{item.0.subdir}}" owner="{{ item.0 }}{{ item.1.name }}" group="{{ item.0 }}{{ item.1.name }}" mode=755 state=directory
with_subelements:
- "{{ env }}"
- "{{ userdir }}"
- "{{ subdirs }}"
瓦爾/主:所以我們的目標是爲每ENV每一個用戶,我試圖
最終建立多個子文件夾
,該文件夾應該像/home/testuser1/subdir1
/home/testuser1/subdir2
/home/testuser2/subdir3/subdir4
/home/testuser2/subdir5/subdir6
/home/testuser3/subdir7
/home/testuser3/subdir8
/home/testuser4 - testuser4 will not have any subfolders, so i assume ansible will not take any action
劇本文件創建.yml
env:
- test
- qa
userdir:
- name: user1
subdir:
- subdir1
- subdir2
- name: user2
subdirs:
- subdir3/subdir4
- subdir5/subdir6
- name: user3
subdirs:
- subdir7
- subdir8
- name: user4
subdirs:
- []
但是,在執行劇本後,我得到了一條線nge錯誤。我相信上面的代碼中有什麼錯,但我無法進一步移動。不勝感激,如果一些專家可以拋出一些輕
TASK: [Create directories for each env] ****************************
fatal: [localhost] => subelements lookup expects a list of two items, first a dict or a list, and second a string
FATAL: all hosts have already failed -- aborting
謝謝udondan。我會試一試,讓你知道。然而,它是有點痛苦,因爲我需要創造幾乎15環境的循環,它可以成長..螺母像你說我可以重新訪問ansible2.0時發佈 – thunderbird
感謝udondan,它的工作就像一個魅力..但是,我結束了爲20個不同的環境創建20個動作..我希望有更好的解決方案。我需要完成更多的工作。 – thunderbird
這並沒有什麼大的改進,但是你可以在一個單獨的文件中有1個任務,然後用一個參數包含它20次。 – udondan