Я пытаюсь создать задачу, в которой я могу настроить пользователей на основе группы сред и типов серверов, когда запускаю задачу для указанных c env и server. Например, допустим, что я запускаю playbook на серверах oracle для производства, задача должна добавлять только user1, а не user2.
Итак, я установил этот способ так:
"internal_users": [
{
"username": user1,
"comment": "Name of the User",
"password": "$1$D3d32t4t53y5ytyttgtuudhkjfgt!fdfsdf.",
"env": ["prod","uat"],
"hosts": ["apache","oracle"]
},
{
"username": user2,
"comment": "Name of the User2",
"password": "$1$D3d32t4t53y5fdfvrgrt45234fdfsdf.",
"env": ["uat"],
"hosts": ["apache","oracle"]
}
]
Я полагаю, что могу получить реальный env и сервер, на котором я запускаю playbook, используя переменную vars['env']
для среды и inventory_hostname
.
Тогда задача:
- name: Create Internal users
vars:
env: "{{ vars['env'] }}"
host: "{{ inventory_hostname }}"
user:
name: "{{ item.username }}"
comment: "{{ item.comment }}"
groups: wheel,internal_users
append: yes
shell: /bin/bash
password: "{{ item.password }}"
update_password: on_create
when: env in item.hosts
with_dict: "{{ internal_users }}"
Не работает, может кто-нибудь помочь с логикой c, чтобы она заработала?
Спасибо.