我检查了一些类似的问题,但是那些问题没有回答我的问题。
我有三位房东:
- host_abc_01
- host_def_01
- host_ghi_01
我想用这种方式创建目录:
- host_abc_01:
- d:\abc\dir1\dir2
- host_def_01:
- d:\def\dir1\dir2
- host_ghi_01:
- d:\ghi\dir1\dir2
唯一的不同是目录名称。子目录具有相同的名称。
除了使用自己的任务和varfiles创建三个不同的角色之外,还有什么方法可以一次完成该任务?
- name: create project directory
win_file:
path: '{{ projects_volume }}\{{ item.proj_name }}\{{ some_dir }}'
state: directory
loop:
- { proj_name: 'abc', when: "'abc' in inventory_hostname" }
- { proj_name: 'def', when: "'def' in inventory_hostname" }
- { proj_name: 'ghi', when: "'ghi' in inventory_hostname" }
但是所有目录都是在所有主机上创建的。
任何帮助将不胜感激。
答案 0 :(得分:0)
答案 1 :(得分:0)
如果子文件夹名称不属于主机名,则为更通用的方法
vars:
path_part:
'host_01': 'abc'
'host_02': 'def'
'host_03': 'ghi'
tasks:
- name: create project directory
win_file:
path: '{{ projects_volume }}\{{ path_part[inventory_hostname] }}\{{ some_dir }}'
state: directory
答案 2 :(得分:0)
可能不是您要找的答案,但是您可以创建3个host_vars文件:
库存/ host_vars / host_abc_01
proj_name: abc
库存/ host_vars / host_def_01
proj_name: def
库存/ host_vars / host_ghi_01
proj_name: ghi
那么您的角色将是:
- name: create project directory
win_file:
path: '{{ projects_volume }}\{{ proj_name }}\{{ some_dir }}'
state: directory
您可以根据需要组织var,只需查看: Working with Inventory