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
Артём
Не врут.
Vadik
Да нет писал, просто сам всё учил а потом делал , стало интересно сколько занимает у профессионалов....
Вот и всё
Egor
Нет времени "профессионалов" потому, что там от условий разбег от нескольких часов до недель
Egor
+ реюз кода
Egor
Типа у профи есть уже плецбкеи сборки лемпа
Egor
И туда надо накинуть чисто текущий вордпресс
Vladislav 👻
Всем привет) Есть такой интересный вопрос , вот к примеру дают на работе задачу , написать плейбук для установки wordpress, (nginx, php 7.2, fail2ban, wordpress) Сколько примерно должно уходит времени?
Обычно, наибольшее количество времени уходит на конфиг файлы в роли для сервисов. Если надо просто поднять as is, то быстро, а если надо задать полноценный темплейт со всеми параметрами, при этом надо реально перерыть всю документацию по сервису, то тут можно и на неделю зависнуть
George
George
Ты получишь быстрый результат мгновенно, но потом ещё, как правильно заметили, будешь неделю шлифовать до продакшн состояния
Anton
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
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
Aleksey
и hostvars[host].ansible_host лучше так записывать - hostvars[host]['ansible_host']
Aleksey
не мешать в кучу синтаксис через квадратные скобки и через точку
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']
Aleksey
Антон
UglyKoyote
почему массив? группа то одна. или он группы выводит как массив в любом случае? типа массив с одним элементом
Антон
Антон
разделите конфиги по папкам, соотвествующим группам
Антон
и когда берете темплейт просто переменной в пути подставьте имя группы
UglyKoyote
проблема в том, что по условиям задачи я могу максимум оперировать инвентори файлом
UglyKoyote
добавлять убирать хосты в группах - не более
Антон
это какое-то тестовое задание?
UglyKoyote
нет, это саппорт индусский. заказчик хочет "идиотпруфф" решение