首页 > 解决方案 > 针对具有不同配置的多个主机

问题描述

我检查了一些类似的问题,但这些问题没有回答我的问题。

我有三个主机:

   - 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" }

但是所有目录都是在所有主机上创建的。

任何帮助,将不胜感激。

标签: ansible

解决方案


如果子文件夹名称不是主机名的一部分,则更通用的方法

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

推荐阅读