ansible - 针对具有不同配置的多个主机
问题描述
我检查了一些类似的问题,但这些问题没有回答我的问题。
我有三个主机:
- 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" }
但是所有目录都是在所有主机上创建的。
任何帮助,将不胜感激。
解决方案
如果子文件夹名称不是主机名的一部分,则更通用的方法
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
推荐阅读
- r - 将javascript函数作为参数传递
- java - 在给定约束的最小移动中将数组减少到 0
- html - 你能建议我正确的语法吗?
- ruby-on-rails - 在添加/删除 ENV 变量时,Elastic Beanstalk 导致我的 Rails 6 应用程序预编译资产中断
- git - git clone repo A 到新的 repo B,同时仍然从 repo A 获取更新
- reactjs - 为 React 钩子计算调整大小的新宽度
- node.js - Node.JS - 如何在控制器中使用清理
- wix - 如何正确删除使用 VSTO 编码的 Office/Outlook 加载项?
- javascript - 比较数组中的值,如果任何值匹配,则增加第一个数组中的值
- swift - 您知道如何将代码设置为仅在我的应用程序中运行暗模式系统而没有亮模式吗?