George
что за астра? если это мне, конешн
AstraLinux. Дистриб отечественный такой
Andrey
а, не. я на макоси сижу, про астру даже не слышал. сто лет назад на альтах сидел, потом завязал
⪓⚝⪔
исключительно чекистская поделка с "нескучными обоями" для таких же чекистов
Andrey
свят свят
Slava
😄
Slava
А сейчас в доках рекомендуют loop вместо with_* использовать, правильно я понимаю?
Anonymous
А сейчас в доках рекомендуют loop вместо with_* использовать, правильно я понимаю?
Хз как в доках. Но в этом канале точно фанбои loop. Хотя в доках вроде тоже. Давно смотрел
Anonymous
в обще тут топят за loop - https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#comparing-loop-and-with
Anonymous
ну вот я почитал и где там про обязаловку или рекомендацию
Anonymous
максимум что оно может тоже самое что и with
Anonymous
Any with_* statement that requires using lookup within a loop should not be converted to use the loop keyword. For example, instead of doing:
Lamobot
ну вот я почитал и где там про обязаловку или рекомендацию
https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html We added loop in Ansible 2.5. It is not yet a full replacement for with_<lookup>, but we recommend it for most use cases.
Ivan
Люди подскажите пожалуйста как передать джиндже результат вывода что бы распарсить поле "failed": false, ? Только начал изучать джинджу и пока не знаю в какую сторону копать, читаю туториалы но пока не дошел до понимания как распарсить структуру джинджой
Ivan
Ivan
Anonymous
https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html We added loop in Ansible 2.5. It is not yet a full replacement for with_<lookup>, but we recommend it for most use cases.
ну в обще религиозный спор, дело привычки ) ниже же написано что We have not deprecated the use of with_<lookup> - that syntax will still be valid for the foreseeable future
Egor
народ, модуль package при установке пакета в убунте update_cache дёргает или нет?
Anonymous
так что рекомендацию не юзать with а использовать loop сомнительная
Anonymous
если примерно так то дернется - name: install base software - ubuntu apt: name: - nano state: latest update_cache: yes when: ansible_distribution == 'Ubuntu'
Anonymous
по дефолту нет
Ivan
Вам надо false получить? msg: "{{ sudo_access.failed }}"
да, и отталкиваться уже от этого значения что бы потом фейлить таску если оно будет отличаться
Lamobot
так что рекомендацию не юзать with а использовать loop сомнительная
Логика зачетная 😂😂😂 Нет рекомендации -> дали текст доков, где написано про рекомендацию -> рекомендация сомнительная
Anonymous
холивар детект ) так что смысл спорить. Инструмент не может сделать все что with ну да, типа есть после 2.5 новая игрушка рекомендуем пользовать ее, но старое так же остается - в чем профит ?
Logan
Собратья по YAML-у, а решал ли кто задачу лимитированного доступа ansible? Условно - есть CI, который выполняет на сервере список команд. Список известен. Хочу разрешить хосту выполнять только эти команды
Ivan
Вам надо false получить? msg: "{{ sudo_access.failed }}"
спасибо, сработало) А далее я смогу через j2 темплейт кодом джинджи проверить переменную на false или true? Ну и зафейлить таску если отличается от нужного значения?
Ivan
when: not sudo_access.failed
это вариант на проверку того сможет ли пользователь стать судо?
Egor
который является "надмозгом" над yum и apt
Egor
типа мне надо поставить стопку пакетов, оно мне должно поставить, но вопрос, обновит ли оно перед этим кэш в убунте
Albert
это вариант на проверку того сможет ли пользователь стать судо?
Можете подробно обьснить что пытаетесь сделать?
Logan
в теории тут наверное FreeIPA больше поможет, тут лучше Сергей подскажет
Не хотелось бы тащить такой сложный проект ради 3 машин (цифры условные). Если без него никак - посмотрю. Но хотелось бы попроще
Anonymous
там я точно просто помню можно было это сделать, в теории вы мождете пойти через файл что кладется в /etc/sudoers.d/ и разрешить только нужные
Ivan
Можете подробно обьснить что пытаетесь сделать?
да, конечно, у меня задача проверить, сможет ли ансибл выполнить become на сервере, а дальше этот ответ формируется в отчёт. Но главное проверка сможет ли пройти become успешно.
Anonymous
это проще
Anonymous
так делал на олдном проекте - но потом это та еще становится простынка, ипа мне кажется более удобной
Ivan
Отчет чего? Зачем такая проверка?
Это нужно для предварительного прогона плейбука который собирает данные по серверам и даёт уверенность что по всем серверам другой плейбук сможет сделать become и выполнить команды от рута
Albert
Я просто пытаюсь понять почему нельзя тем же ансиблом решить проблему судо, а потом спокойно бежат вторым плейбуком
Ivan
А какое решение если он не может?
ситуация: кровавый ентерпрайз, и тогда тикет клиенту что бы дал судо. или если сможем - сами добавим пользователю.
Albert
Так проверте заранее есть ли судо простыми способами. Зачем ансиблом код писать? Это не его задача
Ivan
Дело в том что в модификации всего проекта на ансибле я ограничен в основном своей таской, которая и состоит в том что бы проверить сможет ли плейбук сделать become.
Ivan
Так проверте заранее есть ли судо простыми способами. Зачем ансиблом код писать? Это не его задача
Ну вот народ до меня ансиблом формирует yaml отчёты по серверам, по этому в данном вопросе делаю так как уже есть) на том что есть)
Albert
В общем проверка простая: when: not sudo_access.failed
Albert
Это ставите на уровне плейбука
Albert
- hosts: localhost when: not sudo_access.failed
Ivan
- hosts: localhost when: not sudo_access.failed
Спасибо, попробую
Ivan
- hosts: localhost when: not sudo_access.failed
что я делаю не так?
Boris 🦍
что я делаю не так?
почему у тебя when не в секции с тасками
Ivan
почему у тебя when не в секции с тасками
он в секции плейбука, таски ниже, это первичный файл самого плейбука, тестовый но первичный команда запуска: ansible-playbook test.yml -i inventory/local/
Albert
Ошибся, на весь плей нельзя. Придется на роли ставить
Albert
Хотя если задача не бежать вторым плейбуком. То просто fail таску запустите. https://docs.ansible.com/ansible/latest/modules/fail_module.html
Albert
вот я тоже хочу разобраться)
- fail: msg: no sudo access when: not sudo_access.failed
Oleg
Здравствуйте подскажите где я ошибся? - hosts: esserversa roles: - role: elastic.elasticsearch vars: es_data_dirs: - "{{ es_data_dirs }}" es_log_dir: "{{ es_log_dir }}" es_heap_size: "2g" es_version: "{{ es_version }}" в инвентори [all:vars] es_version=6.4.2 падает с TASK [elastic.elasticsearch : set_fact] ******************************************************************************************** fatal: [yaes1]: FAILED! => {"msg": "An unhandled exception occurred while templating '{{ es_version }}'. Error was a <class 'ansible.errors.AnsibleError'>
Anonymous
Ну выше была цитата что нет. Но думаю оставим спор об этом на какой нить вечер пятницы
Ivan
- fail: msg: no sudo access when: not sudo_access.failed
спасибо, но не работает)
Dmitry
Ну выше была цитата что нет. Но думаю оставим спор об этом на какой нить вечер пятницы
А в коде ansible я вижу, что пару лет назад грозились with_ отправить в deprecated, а потом в PR #32805 это дело "delayed by popular demand", а предупреждение о deprecated в районе 2.10 не удалили в коде, а закомментировали. Как минимум в новых местах я стараюсь не использовать штуки, которые уже пытались убрать)
Sergey
Собратья по YAML-у, а решал ли кто задачу лимитированного доступа ansible? Условно - есть CI, который выполняет на сервере список команд. Список известен. Хочу разрешить хосту выполнять только эти команды
Если ты всё делаешь через shell - то да, можно. Если по-человечески, Ансибловыми модулями - то нет, нельзя, т.к. на целевом хосте будет выполнена только sudo python
Albert
спасибо, но не работает)
sudo_access а не sudo access
Ivan
sudo_access а не sudo access
он сам зачем то ставит пробел
Kirill
Всем привет - есть задача создать файл на каждой ноде где будут все переменные ноды. это файл нужен что бы кормить его другой системе as is как источник правды. Вариант с template в котором будет {{ hostvars[inventory_hostname] | to_nice_yaml }} не рабочий - часть переменных не интерполируется и на это есть с десяток issues. Вроде как разработчики рекомендуют использовать https://docs.ansible.com/ansible/latest/plugins/lookup/vars.html но он умеет только возвращать значения что не удобно потому что есть nested vars и в итоге нужен некий валидный yaml или json
Oleg
можно ли в vars засунуть цикл?
Oleg
что то вроде - hosts: esserversa roles: - role: elastic.elasticsearch vars: cluster.name: "{{ es_cluster_name }}" discovery.zen.ping.unicast.hosts: - "{{ hostvars[item]['private_ip'] }}" with_items: "{{ groups['esserversa'] }}"
Kirill
linefile и loop по hostvars[inventory_hostname] пробовал?
разницы нет - там не интерполированные некоторые данные на момент обращения
Anonymous
подскажите, пишу vars plugin для ansible, хочу в нем достать текушие переменные, как хостов, так и групп. Как это правильно сделать?
Anonymous
воспользоваться имеющимся ? 🥴
Я как раз в плагине и хочу достать переменные, которые уже объявлены для групп и хостов.