O
НО
O
сделай диф по json выхлопу
O
и сразу обозначишься, откуда у тебя они берутся
когда жсон большой - выводятся все факты про машинку, как и ожидается
когда жсон маленький - выводится буквально 10-20 строчек жсона
я не понимаю как на этих данных выяснить откуда берется маленький жсон и почему он берется
O
явно влияет место расположения и откуда ты ее вызываешь
и почему простая замена имени хостгруппы на это влияет
O
из роли или pre_task or post_tasks
в хостс 2 хостгруппы, по 1 айпишнику в каждой
O
если нет group_vars то не влияет
групварс 100% нет и не используется тут
O
это логическая проблема
вот и у меня WTF
O
диф блин сделай и усе увидишь откуда приплывают новые факты
Igor
Коллеги, а как в hosts: передать отрицание, типа:
- hosts: all, но не группа groupname?
O
только в ansilble-playbook - > —limit '! group'
Igor
Гм, это не спасает вот при какой ситуации, если в одном плейбуке:
Host: all
Role: ...
Host: windows
App
----
ansible пытается собрать факты с помощью судо с винхостов и выдается ошибка
Igor
Когда я запускаю ansible-playbook -l windows...
O
gather_facts: false
Igor
тык мне надо факты собирать, только в венде свои, а не пытаться виндовые с вендовых хостов линуксовые факты собирать
Igor
вообщем, проблема в том, что я в одном плейбуке, где используются
hosts: all
hosts: windows не могу использовать
O
не работаю с виндой. по доке - http://docs.ansible.com/ansible/intro_windows.html#windows-facts
Igor
по доке всё ок
Igor
а проблема начинается когда в одном плейбуке вин и лин хосты и используется в лин: hosts: all
O
может все таки - разделяй и властвуй ?
Igor
я думаю это из раздела "мы не доработали функционал в ansible"
O
O
become: false
Igor
В том то и дело, что никакой
Igor
Become - не включен, become: no не помогает
O
ну он для галочки ) там подозреваю не может быть sudo. Хз как ансибл на винде себя ведет и под кем там работает
Igor
я понял в чём дело
Igor
- hosts: all
become: yes
- hosts: windows
become: no
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
Using module file /usr/local/lib/python2.7/dist-packages/ansible/modules/windows/setup.ps1
fatal: [app2]: FAILED! => {
"failed": true,
"msg": "Internal Error: this connection module does not support running commands via sudo"
Igor
become: no в группе win - игнорируется, когда become: yes в hosts: all
Igor
да и при чём тут это
Igor
когда я с помощью тэга указывааю выполнять роль только из группы windows
Igor
надо пилить багрепорт
O
тебе четким написано )
O
роли желательно накатывать с become: true как по мне... все остальное по надобности ... отключать на уровне тасков или включать... гибко можно
Igor
мне кажется ты не читаешь что я пишу
Igor
- hosts: all
become: yes
- hosts: windows
become: no
Igor
какой к чёрту sudo?
Igor
если я выполняю только роль в группе хостов windows
O
с become ты уже понял ) тут не прокатит - кто последний тот и папа .... точно так же и handlerами ..... если ты ждешь что он отработает и у тебя два одинаковых хендлера - в монстро плейбуке .... то фиг там... отработает только первый... с переменными наоборот
O
в общем - разделяй и властвуй
Igor
мне кажется это противоречие - баг, и это недоразумение надо доработать )
O
да что ты ))))
Igor
представь себе
Igor
чтобы sudo не пыталось выполняться к windows модулям
O
это когда у тебя есть роль nginx+роль которая завязана на nginx и две группы хостов ... на одних ты ставишь nginx + на других nginx и еще что то... так вот .... если на первых у тебя по условию не должет рестартовать nginx он и на вторых не отрестратится - А ТЕБЕ НАДО ЧТОБЫ ОТРЕСТАРТИЛСЯ.... выход один - называть по разному один и тот же хендлер... либо разделять плейбуки
O
become паходу работает точно также
O
могу в коде найти
Igor
проблема в том, что become: yes не может ни при каких условиях отработать на windows модулях которые это не поддерживают, а если в ansible есть win модули которые это не поддерживают, стало быть они не должно быть попыток выполнить эти модули через sudo
Igor
я согласен на работающий become: no при host: all, become: yes
Igor
меня это устроит
Dima
господа, вот я чот затупил, спните с мертвой точки. выполняю плейбук, в нём таски.
- hosts: all и мне надо, чтобы одна - две задачи выполнились на только одном хосте. писать два раза - hosts: all и - hosts: host1234 неверно. я откуда-то помню конструкцию when: blablabla in ansible_hostname но чот не могу понять рабочая ли она?
Dima
when: ansible_hostname == "host1234" спасибо :))
O
@lastsky - delegate_to: host and run_once: true
O
один раз - на конкретном хосте
O
можно захардкодить как when: inventory_hostname=='blablabla'
Dima
потому что там на самом деле будет hostname переменной
Dima
которая определяется в начале через vars_prompt
Dima
то есть, очень специфический кейс
Dima
вне best practice
O
Не проблема это и с delegate_to использовать
Dima
мне просто показалось неправильным что вот есть группа серверов. на первый попавшийся ansible идет и с него delegate_to делает на целевой хост. целевой хост есть в группе этих хостов.
Dima
логичнее на него просто прямо сходить будет, вот такая логика
Dima
поэтому через when: ansible_hostname == "{{ target_host }}" отлично ограничивается
Алексей
Привет. Объясните мне, дурачку. Почему become распостраняется на все последующие таски, а не ограничивается областью видимости задачи?
Алексей
Или блока/роли.
Dima
cat ansible.cfg | grep become ?
Dima
потому что у меня есть пример таска где become: false и он выполняется как надо а последующие - без
Алексей
cat ansible.cfg | grep become ?
$ cat ./.ansible.cfg |grep become
# https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user
become=True
become_method=sudo
Dima
ну всё понятно, закомментируй become в конфиге.
Dima
и тогда будет per-task / per-role / per-play
Алексей
Вот именно, приходится добавлять
become:false
, что не очень удобно. Особенно при изменении порядка тасков.
Алексей
Anonymous
@FolderArchive - канал, где сливают платный полезный - образовательный контент и курсы, например можно скачать курсы "Нетологии" или все курсы "Бизнес Молодости".