k4k
roles/
k4k
и в ней диры что есть название роли
/warn
Ну, у меня так же
/warn
Файл называется main.yml
k4k
так он по умолчанию вызовется, тебе не нужно внутри ямла писать имя роли
/warn
В roles/install-pip-package/tasks
k4k
просто вызывай роль install-pip-packages
k4k
а первую строчку в main.yml убери
k4k
и tasks тоже убрать нужно
k4k
k4k
вот пример main.yml
k4k
пример вызова роли
k4k
/warn
Убрал, тоже самое
/warn
The offending line appears to be:
- tasks:
^ here
Ждун
обычно в редакторах есть способ включать показывать непечатные символы
k4k
опция tasks не нужна
k4k
k4k
Что вкладывается в понятие факт?
k4k
Не подскажу, не юзал. Нужно разбираться
Vadim
register: устанавливает факт так же как и set_fact
Vadim
да, ну для своих фактов уже set_fact. А в чем требование обязательно делать в одной таске?
/warn
register: variable
А потом где уже хочешь
set_fact: variable = “{{ variable.stdout_lines }}”
/warn
Если правильно понял
/warn
Ну, тогда просто регистрируешь, и потом when: variable is defined
Nklya
Что-то пахнет костылями такое решение
/warn
Nklya
ну и это обычный хендлер
Nklya
нет
Nklya
хендлер в ансибле выполняется в конце рана, если ему пришел нотифай, один раз
GithubReleases
ansible/ansible was tagged: v2.5.8
Link: https://github.com/ansible/ansible/releases/tag/v2.5.8
Release notes:
New release v2.5.8
GithubReleases
ansible/ansible was tagged: v2.6.3
Link: https://github.com/ansible/ansible/releases/tag/v2.6.3
Release notes:
New release v2.6.3
Денис
Подскажите, не могу понять почему так получается:
есть перемененные, объявленные в инвентори файле для группы:
ansible_user=user@DOMAIN.RU
ansible_password=***
ansible_connection=winrm
ansible_winrm_transport=kerberos
ansible_winrm_scheme=http
ansible_port=5985
есть роль, которая по идее должна переопределять эти параметры (в файлах переменных только пароль для пользователя vagrant):
- hosts: it-grad
gather_facts: yes
vars_files:
- ./vars/vault.yml
- ./vars/vars.yml
roles:
- role: config_winrm
vars:
ansible_user: vagrant
ansible_password: "{{ default_password }}"
ansible_winrm_transport: basic
when: not ansible_windows_domain_member
в итоге таск падает на моменте сбора фактов с ошибкой, что пользователь vagrant не найден в керберосе, и по логам он лезет собирать факты из-под пользователя vagrant (что логично, это локальный пользователь).
Я думал он должен использовать переменную, из hosts, а менять на vagrant только для этой конкретной роли, и продолжать использовать исходную переменную из hosts.
В чем косяк? я не так понимаю передачу параметров в роль? он перезаписывает переменную раньше, чем начинает выполнять сбор фактов?
Денис
ну и как вообще лучше делать, если мне для части тасков надо подключаться одним пользователем, а для другой части - другим? к одним и тем же хостам
Nklya
Почитай в документации про приоритеты переменных.
То странное, что ты хочешь сделать с ролью не будет работать
Sergey
Подскажите, не могу понять почему так получается:
есть перемененные, объявленные в инвентори файле для группы:
ansible_user=user@DOMAIN.RU
ansible_password=***
ansible_connection=winrm
ansible_winrm_transport=kerberos
ansible_winrm_scheme=http
ansible_port=5985
есть роль, которая по идее должна переопределять эти параметры (в файлах переменных только пароль для пользователя vagrant):
- hosts: it-grad
gather_facts: yes
vars_files:
- ./vars/vault.yml
- ./vars/vars.yml
roles:
- role: config_winrm
vars:
ansible_user: vagrant
ansible_password: "{{ default_password }}"
ansible_winrm_transport: basic
when: not ansible_windows_domain_member
в итоге таск падает на моменте сбора фактов с ошибкой, что пользователь vagrant не найден в керберосе, и по логам он лезет собирать факты из-под пользователя vagrant (что логично, это локальный пользователь).
Я думал он должен использовать переменную, из hosts, а менять на vagrant только для этой конкретной роли, и продолжать использовать исходную переменную из hosts.
В чем косяк? я не так понимаю передачу параметров в роль? он перезаписывает переменную раньше, чем начинает выполнять сбор фактов?
Проверка-то простая - закомментировать этот блок переменных. Тут всё и вылезет.
Sergey
А вообще - да, это странное, поэтому не надо так.
Денис
ну я и спрашиваю, как лучше делать в такой ситуации?
Денис
разные плеи делать для разных ролей, с разными remote_user?
Sergey
Скорее всего - да. И раз уж логически оно относится к одной куче - в один плейбук объединить.
Денис
попробую, спасибо
manefesto
а что за молекула ?
Nklya
http://bfy.tw/JS7A
Roman
Доброго времени суток! Подскаиже пожалуйста, возможно ли в host_vars именование элементов словаря по шаблону? Т.е. что-то вроде:
main:
do:
{{(inventory_hostname|regex_search('([1-9][\\d]*)')|int)+200}}:
var1: value
var2: 123
{{(inventory_hostname|regex_search('([1-9][\\d]*)')|int)+300}}:
var1: value
var2: 123
Sergey
Roman
чтоб для каждого хоста не приходилось писать подобное:
main:
do:
201:
var1: value
var2: 123
301:
var1: value
var2: 123
Roman
а просто указать в group_vars.
Nklya
Если у каждого хоста одинаковые переменные, то и поставь их в груп варс
Sergey
Roman
Вываливается ошибка:
ERROR! Syntax Error while loading YAML. did not find expected alphabetic or numeric character
Roman
The offending line appears to be:
{{((inventory_hostname|regex_search('([1-9][\\d]*)')|int)+200)}}:
^ here
Roman
тыкает в скобку после звездочки
cent
/warn
Потому что надо удалить целую команду людей из 20 групп)
/warn
В ручную делать что ли?)
cent
/warn
Нет
/warn
Все процессы через ансибл
/warn
Модуль ансибла не позволяет удалять пользователей
cent
Модуль ансибла не позволяет удалять пользователей
https://docs.ansible.com/ansible/2.5/modules/user_module.html
remove
When used with state=absent, behavior is as with userdel —remove.
- name: Remove the user 'johnd'
user:
name: johnd
state: absent
remove: yes
/warn
/warn
Мне не надо удалить пользователей, мне надо удалить их из групп
/warn
А не из кластра
cent
Мне не надо удалить пользователей, мне надо удалить их из групп
Так Ты нормально и пиши) Ты же написал "не позволяет удалять пользователей"
С памятью беда, да?)
groups
List of groups user will be added to. When set to an empty string '', null, or ~, the user is removed from all groups except the primary group. (~ means null in YAML)
Before version 2.3, the only input format allowed was a comma separated string. Now this parameter accepts a list as well as a comma separated string.
Ставишь нужные группы и из остальных он сам удалит.
/warn
Это еще большые костыли
/warn
У пользователять под 100-150 групп, и у каждого могут быть разные, мне надо делать список из который НЕ удалять и удалять из всех остальных
/warn
Такое себе
cent
У пользователять под 100-150 групп, и у каждого могут быть разные, мне надо делать список из который НЕ удалять и удалять из всех остальных
Ну, Ты можешь делать как хочешь, конечно)
Потом другим программистам тоже можно будет за рефакторинг сорвать бабла) 👍
Ну, а если интересно как должно "по-правильному", то конфиг ansible у Тебя должен полностью отражать все что есть в системе.
Это значит, что, в идеале, Ты должен смотреть какие у юзверей группы в ansible конфиге, а не бегать на сервак
/warn
Ой, за конфиги я не отвечаю и не лезу туда, мне дает Senior написать такой-то плейбук или модуль - ну я и пишу)
Andrey
Ребят, а есть возможность переименовать папку на windows, не прибегая к copy?
Andrey
Уж очень тяжелая операция
Nklya
Картинка с чуваками с квадратными колёсами
Nklya
Я про предыдущего оратора
Sergey
/warn
Vadim
методология МХСК - "моя хата с краю"
/warn
За те деньги которые платят - мне похуй)