Denis 災 nobody
Зачем для этого бот?
Форвардить связанную пачку сообщений как 1 набор. Ну и тренировка написания бота
Timur
Ну, разве что
Denis 災 nobody
Обсуждали уже, снипеты нужно руками делать, а тут просто набор ответов
Timur
Denis 災 nobody
Гугл?
Damir
/help@ansible_ru_bot
Damir
Внимательно знакомимся с чатом
Vitaliy
Может кому пригодится, перевод книги Mastering Ansible - Third Edition http://onreader.mdl.ru/MasteringAnsible.3ed/content/index.html
Vitaliy
Да я так понял, это уже не "начало". Вполне даже. Сам вот только планирую почитать.
Vitaliy
дока не опишет всё
Vitaliy
Кроме документации, полезно почитать и книги. О чем этот разговор вообще? не читать доку по продукту с которым ты работаешь, глупо.
Vadik
Всем привет) Есть такой интересный вопрос , вот к примеру дают на работе задачу , написать плейбук для установки wordpress, (nginx, php 7.2, fail2ban, wordpress) Сколько примерно должно уходит времени?
Артём
Требования какие? Минимильно чтобы работало? Полдня из интернетов накачать.
Артём
Написать так, чтобы линтер не орал и тесты минимальные накинуть, ревью пройти и ещё раз переделать? Дня три.
Vadik
Да и ещё конфиги в j2, и тесты
Vadik
Просто мне сказали +- в идеале 5-7 дней
Alex
Может кому пригодится, перевод книги Mastering Ansible - Third Edition http://onreader.mdl.ru/MasteringAnsible.3ed/content/index.html
Данная книга применяет выпуск Ansible 2.2.x.x. Чо то как то старовато :(
Артём
Не врут.
Vadik
Да нет писал, просто сам всё учил а потом делал , стало интересно сколько занимает у профессионалов.... Вот и всё
Egor
Нет времени "профессионалов" потому, что там от условий разбег от нескольких часов до недель
Egor
+ реюз кода
Egor
Типа у профи есть уже плецбкеи сборки лемпа
Egor
И туда надо накинуть чисто текущий вордпресс
Антон
Нет времени "профессионалов" потому, что там от условий разбег от нескольких часов до недель
Как уже сказали все зависит от целей. Вот пример - нужен скрипт чтобы скачать файл из инета по статичной ссылке и распаковать в директорию. Казалось бы - 3-5 строчек. В итоге, когда учли хотя бы самые очевидные вещи скрипт занимал 45 строк
Vladislav 👻
Всем привет) Есть такой интересный вопрос , вот к примеру дают на работе задачу , написать плейбук для установки wordpress, (nginx, php 7.2, fail2ban, wordpress) Сколько примерно должно уходит времени?
Обычно, наибольшее количество времени уходит на конфиг файлы в роли для сервисов. Если надо просто поднять as is, то быстро, а если надо задать полноценный темплейт со всеми параметрами, при этом надо реально перерыть всю документацию по сервису, то тут можно и на неделю зависнуть
George
Ты получишь быстрый результат мгновенно, но потом ещё, как правильно заметили, будешь неделю шлифовать до продакшн состояния
Timur
Сценарием не поделитесь?
Берете модуль get_url и смотрите его код. Этот модуль как раз и делает описанное - скачивает файл из интернета по ссылке
Anton
Если не ошибаюсь ранее он не поддерживал докачку
Антон
Anton
Сценариаем чего?
Загрузки статичной ссылки со всеми обработчиками. Или я не правильно понял, и собственно к загрузке статичного линка там относится не более 5 строк?
Антон
Да :) Дальше идет: 1. Проверка что файл отсутствует локально 2. Что после скачивания совпадает кэш 3. Что фай изменился 4. Оповещения 5. Проверка что зип не битый 6. Проверка что норм распаковалось 7. Проверка что с файлами не идет работа
Антон
Но с другой стороны за 2 месяца мы поймали 4 исключения на проверках и штатно их обработали
Alexandr
Вечер добрый. Подскажите пожалуйста как сделать проверку. Допустим если через exra vars приходит переменная ver с значением 2.2.0.99 то нужно обрезать её до 2.2.0
Alexandr
Как это можно сделать?
UglyKoyote
джинжа + регексп_реплэйс?
Alex
сделай сплит по точке и посчитай кол-во элементов
Timur
По идее должно сработать, если нужно именно часть после последней точки обрезать
UglyKoyote
Коллеги вопрос странный (я просто не настоящий сварщик). Есть темплейт, есть код джинжи для формирования итогово конфига. Определенные части кода надо итерировать по нодам в группе, хардкодить группу не хочу, вдруг надо будет на другую группу натравить код, и приехали Пробовал так: {% set grpname = {{ group_names }} %} {% set grpname = group_names %} {% set grpname = "{{ group_names }}" %} Один фиг, валится ошибка - типа не понимаю что ты хочешь сам цикл/условия - как то так формируются {% if inventory_hostname in groups[grpname][0] %} Может кто подкинет идею/советом поделится
UglyKoyote
речь про факты?
Антон
Нет, я говорю про переменные в файле хоста
Антон
Хотя может не катит в вашем случае
UglyKoyote
дык оно же в ручную туда попадает? я хочу минимизировать все ручные действия. иначе бы просто забил и захардкодил) и перед запуском требование "заменить.."
Антон
А логика формирования у вс какая?
UglyKoyote
{% for host in groups['nginxsrv'] %} {{ hostvars[host].ansible_host }} {% endfor %} вот так работает. сейчас пытаюсь заменить то что в [] на переменную
Aleksey
{% for host in groups['nginxsrv'] %} {{ hostvars[host].ansible_host }} {% endfor %} вот так работает. сейчас пытаюсь заменить то что в [] на переменную
Так вместо 'nginxsrv' просто переменная с именем внутри groups[] что дает? Не работает?
Aleksey
и hostvars[host].ansible_host лучше так записывать - hostvars[host]['ansible_host']
Aleksey
не мешать в кучу синтаксис через квадратные скобки и через точку
UglyKoyote
Так вместо 'nginxsrv' просто переменная с именем внутри groups[] что дает? Не работает?
да, валится с ошибкой, мол "неизвестная переменная". с синтаксисом согласен, но во мне уже 80% кофе а не полезной жидкости :(
Aleksey
а дебаг на эту переменную что показывает ?
Aleksey
ansible <host_name> -m debug -a "msg={{ variable_name }}"
UglyKoyote
ansible -i ubuntu.inventory nginx1 -m debug -a "msg={{ group_names }}" nginx1 | SUCCESS => { "msg": [ "nginxsrv" ] }
Aleksey
хм, вроде правильно, а попробуй -m debug -a "msg={{ groups[variable_name] }}"
UglyKoyote
Если пытаюсь делать set так {% set grpname = group_names %}, валится ошибка Make sure your variable name does not contain invalid characters like '-': argument of type 'AnsibleUndefined' is not iterable"
UglyKoyote
гхм
UglyKoyote
приехали...
UglyKoyote
nginx1 | FAILED! => { "msg": "The task includes an option with an undefined variable. The error was: dict object has no element [u'nginxsrv']" }
Aleksey
-m debug -a "msg={{ groups['nginxsrv'] }}" ?
UglyKoyote
nginx1 | SUCCESS => { "msg": [ "nginx1", "nginx2" ] } nginx2 | SUCCESS => { "msg": [ "nginx1", "nginx2" ] }
Aleksey
а тип переменной строка ? точно не список ?
Aleksey
-m debug -a "msg={{ groups[variable_name | string ] }}" что если так ?
UglyKoyote
ну я чего то уже начал сомневаться, судя по дублированию нод в выводе
UglyKoyote
The error was: 'dict object' has no attribute u\"[u'nginxsrv']\"
Aleksey
покажи объявление этой переменной
Антон
@UglyKoyote а вы можете логику описать того, что вам надо? Мне кажется вы куда-то не туда свернули
UglyKoyote
Решил погонять в холостую {% set grpname1 = group_names %} grpname1 {{ grpname1 }} на выходе: grpname1 [u'nginxsrv']
UglyKoyote
@UglyKoyote а вы можете логику описать того, что вам надо? Мне кажется вы куда-то не туда свернули
да всё просто. есть инвентори файл. есть плейбук с 2 ролями. первая ставит keepalived вторая тащит конфиги для работы на той группе нод что были указаны. и рестартит кип. когда указываю в темплейте группу "руками" - всё ок, как только пытаюсь завязаться на группу нод в "автомате", беда
Aleksey
Решил погонять в холостую {% set grpname1 = group_names %} grpname1 {{ grpname1 }} на выходе: grpname1 [u'nginxsrv']
У тебя как-будто переменная объявлена элементом списка (массива). А тебе нужно - строку, тогда заработает.
UglyKoyote
почему массив? группа то одна. или он группы выводит как массив в любом случае? типа массив с одним элементом
Антон
разделите конфиги по папкам, соотвествующим группам
Антон
и когда берете темплейт просто переменной в пути подставьте имя группы
UglyKoyote
проблема в том, что по условиям задачи я могу максимум оперировать инвентори файлом
UglyKoyote
добавлять убирать хосты в группах - не более
Антон
это какое-то тестовое задание?
UglyKoyote
нет, это саппорт индусский. заказчик хочет "идиотпруфф" решение