在Ansible中,什么是管理Global和Groupwise var的最佳方法?

时间:2018-10-02 08:50:17

标签: ansible

目前我的剧本用于创建用户帐户和

- name: Create the necessary users
  hosts: all
  become: yes
  vars:
    users:
      - name: user1
        ssh_keys:
          - XXXXX
      - name: user2
        ssh_keys:
          - YYYYY
    users_to_remove: [] # array of user names to remove

创建用户的任务遵循此基础,并且非常基础。 当前,此设置在所有主机上创建帐户。我有大约15至20台主机,分为大约5个组,我试图提出一种干净的解决方案,该解决方案使我只能在几个特定组中创建用户,而不是在所有组中创建用户。我想尽可能地将vars留在剧本中。

我希望有一种方法可以实现

- name: user2
  ssh_keys:
    - YYYYY
  group: all # or group name

是否可以这样做?还是有其他更可取的方式来管理此问题? 我能想到的唯一方法是为组var创建一个完整的目录结构,然后在其中添加字典,可以为全局用户拆分一个dict,为特定组的特定用户拆分一个dict并合并(因为ansible不会合并var吗? AFAIK组变量只是覆盖全局变量)

1 个答案:

答案 0 :(得分:1)

ansible_host 变量对您有帮助吗?

- name: Set authorized key
  authorized_key:
    user: user2
    key: YYYYY
  when: ansible_host in groups.group_XY