Условие в ansibe если X начинается с числа, которое начинается на единицу
Есть словарь users_list.yml вида
users:
username: xxxx
uid: 1111
username: yyyy
uid: 2221
Необходимо создать пользователя на Y сервере, uid которого начинается только с 1. Не могу понять какой фильтр использовать или подстановку, стандартные штуки типа 1.., 1[] и .т.д. не возврщают нужное значение uid. Интересует именно как сделать такой фильтр, которые проверяет первый символ в значении. Пока что у меня получилось только сделать если значение содержит 1. Не могу понять нужно ли мне использовать dic2item или regex. Буду рад совету, спасибо.
vars_files:
- /home/ansible/plays/inventory/vars/users_list.yml
- /home/ansible/plays/inventory/vars/secret
tasks:
- name: add user to servers
user:
name: "{{ item.username }}"
shell: /bin/bash
group: wheel
password: "{{ userpass | password_hash('sha512') }}"
loop: "{{ users }}"
when: item.uid is search("1")
Ответы (1 шт):
Автор решения: Andy Sky
→ Ссылка
Внезапно нашел решение, которое само собой оказалось достаточно простым:
when: (item.uid is regex("1[1-9]") and 'db' in group_names) or
(item.uid is regex("2[1-9]") and 'webservers' in group_names)