【发布时间】:2015-06-19 06:47:08
【问题描述】:
使用下面的 ansible 代码 sn-p,我正在尝试根据 vars/main.yml 中存储的变量创建多个子目录。所以目标是每个环境的每个用户,我正在尝试创建多个子文件夹
最终,文件夹应该像这样创建
/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
剧本文件:
---
- 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 }}"
vars/main.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:
- []
但是,在执行剧本后,我遇到了一个奇怪的错误。我确信上面的代码有问题,但我不能再进一步了。感谢一些专家是否可以提供一些启示
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
【问题讨论】: