Eduard
Да всегда хватало одной виртуалки на ДО, если честно.
Timur
Если накатите роль на уже работающую машину с измененным конфигом - что произойдет?
Eduard
handlers работают не всегда предсказуемо, посему и не использую
Bsod
Если накатите роль на уже работающую машину с измененным конфигом - что произойдет?
Timur
chef?
Eduard
gitlab-ctl reconfigure = запуск чефа.
Timur
Eduard
....
Eduard
reconfigure как бы умный
Eduard
Он доводит, и только при необходимости рестартует.
Eduard
За то, чтобы в конце работы reconfigure все сервисы работали - отвечает тоже чеф 🙂
Timur
Я бы рекомндовал глянуть более развернутые и хорошо оттестированные роли с гэлекси
Timur
И либо контрибьютнуть туда, либо форкнуть какой-то хорошо отработанный проект и допилить до своих нужд
Timur
Чтобы не плодить лишние велосипеды
Timur
А то на гэлекси такого самопального треша и так полно, а нормальных отточенных ролей с тестами и нормальной параметризацией можно по пальцам пересчитать
Timur
Timur
Там сразу все тесты нужные прикручены
Eduard
Я честно говоря терраформом тестировал....
Timur
И линт, и деплой на разные облака, и идемпотентность
Eduard
До молекулы руки не доходят вечно
Timur
Вот можете глянуть и взять за образец
Timur
Терраформ немного для другого уровня, это инфра
Eduard
ldap configuration for gitlab Вот где вы раньше были 🙂
Eduard
Eduard
А в чём смысл юзать yamllint в связке с ansible-lint?
Timur
Eduard
Форматирование?
Timur
Гэлекси тоже юзает оба эти линта
Timur
Да
Timur
Мы берем их конфигурацию для тестов
Timur
С дополнительными правилами некоторыми
Timur
Но дефолтные именно из Galaxy
Eduard
===== LINTING ROLE =====
yamllint Warnings:
./tasks/main.yml:89:1: [error] too many blank lines (1 > 0) (empty-lines)
ansible-lint Warnings:
./galaxy/downloads/tmp30bvPM/tasks/main.yml:62: [E305] Use shell only when shell functionality is required
===== IMPORTING ROLE: gitlab =====
Adding role metadata tags
Adding role platforms
Updating repository versions...
Import completed with 2 warnings and 0 errors
Eduard
Смысл самому то проверять...
Eduard
Ладно, запилим, спасибо
Timur
Если будут вопросы или дополнения к роли - можете смело поднимать ишуи или даже pull-request
Eduard
Vasiliy
Всем привет :)
Может кто сталкивался с такой штукой?
Есть playbook, в одном play играется 2 target'a. Нужно конкретную задачу из плея выполнить последовательно(!) на всех таргетах.
Я побегал по инету и нашел только несколько таких решений:
- сериализовать play целиком
- заморачиваться с loop_control ( как вот тут: https://github.com/ansible/ansible/issues/12170#issuecomment-372263149 )
Может кто-то решал/знает какие еще варианты?
Eduard
Фаст костыль: when: inventory_hostname == groups["stage-k8s"][0] с вариациями от копипасты таски до with_sequence
Eduard
Timur
да, это я
Коллеги, всем привет. Можете пожалуйста подсказать, что я делаю не так?
да, это я
Timur
Timur
Vasiliy
там под капотом инстансы начинают обмениваться друг с другом информацией и возможно что один создал группу и заслал второму, а второй тоже создает в этот момент :)
Timur
Vasiliy
как я вижу тут надо либо сериализовать таску, либо бить на 2 таски
Vasiliy
Vasiliy
короче race_condition сплошной - кто первым создаст группу
Timur
Тогда я бы вынес таску в отдельный плей и указал strategy: linear
Timur
Vasiliy
Vasiliy
проще сделать 2 таски
Timur
Vasiliy
- name: create group instance [Master]
shell: _some_command_
when: is_master
- name: create group instance [all other hosts]
shell: _some_command_
when: not is_master
Vladislav 👻
при include_task не пробрасывается ansible_ssh_private_key_file, кто-нибудь сталкивался и как-то можно вылечить?
Eduard
@tgadiev А как решить задачу правильно? changed_when в зависимости от содержимого stdout (полного или частичного - без разницы).
register: task
changed_when: "'namespace \"{{ item }}\" deleted' in task.stdout"
Ансибло ругается, но работает
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: 'release "{{ item }}" deleted' in task.stdout
Timur
Timur
И что значит "не пробрасывается"?
Vladislav 👻
Создания пользователя
Vladislav 👻
Это значит, что пинг прошел, а после инклуд переменная пустая ввиде "[]"
Vladislav 👻
Так, разобрался частично, у меня приватный ключ берется вот так {{ lookup('fileglob', 'openstack_rsa') }} и в инклуде это возвращает пустой список...
Вопрос, куда можно положить приват ключ, чтобы его увидели в инклуде?
Сейчас приват ключ лежит в files рядом с плейбуком
Vladislav 👻
И опять кажись разобрался, копирнул в files в роли
Vladislav 👻
проблему решил, но решение какое-то странное, из плейбука не видно файлы в роли, из инклуда не видно файлы в плейбуке
Timur
У плейбук и ролей разные дефолтные пути
Timur
Можно использовать переменные вида {{ playbook_path }} для точного указания местоположения
Vladislav 👻
Vladislav 👻
блин, теперь другая проблема, там vault не работает
Timur
Vladislav 👻
https://github.com/ansible/ansible/issues/22382
Timur