George
- delegate_to: localhost copy: dest: '{{playbook_dir}}/foo' content: bar Работает.
Dorian
Парни, а так нельзя, разве? - name: Create a data container docker_container: name: at-mojo image: docker-registry.opt/mojo volumes: - {{checkout}}:/opt/reporting
Dorian
не даёт указать в volumes переменную
Aleksey
чот ковычек не хватает
Dorian
Не помогает
Dorian
- "{{checkout}}":"/opt/reporting"
Aleksey
не
Aleksey
целиком
Dorian
и производные не лечтся
Dorian
- /opt:/opt работает Сейчас проверю с кавычками
Vadim
- "{{checkout}}:/opt/reporting"
Dorian
целиком
спасибо! Видимо "":"" как словарь воспринималось
Ievgen
@freeseacher ты помнится ругал что в 2.5 сломали наследование тегов include_*
Aleksey
да
Ievgen
я только что поймал момент когда это наоборот офигенно
Aleksey
не сломали а привели в соответствии с виденьем
Ievgen
ну не суть
Ievgen
допустим: tasks: - name: Run post deployment tasks include_tasks: "{{ item }}" with_first_found: - "roles/{{ service_role }}/tasks/post-{{ service_role }}.yml" - empty.yml tags: - skip_packer - post - always
Ievgen
тогда post.yml у тебя будет инклюдится всегда
Ievgen
ну если он есть
Ievgen
а вот таски в нем нет
Ievgen
не будут выполняться если не указан конкретный тег
Ievgen
так как раньше они бы отнаследовали always
Ievgen
это в принципе позволяет более сложную логику строить
Sergey
Подскажите пожалуйста: хост в inventory у меня например fe2, устанавливаю всё необходимое, настраиваю. разворачиваю проект и затем мне надо добавить fe2 в балансировку в nginx на lb (другой хост) - как лучше это сделать?
Дмитрий Петров
Добавить хост в конфиг и релоаднуть nginx
Sergey
Добавить хост в конфиг и релоаднуть nginx
это понятно )) проблема в том - как выполнить задание на lb?
Дмитрий Петров
delegate_to: lb
Sergey
delegate_to: lb
а каким пользователем оно ломанётся на lb?
Sergey
я могу переопределить пользователя?
Vadim
а каким пользователем оно ломанётся на lb?
тем который указан на хосте lb
Дмитрий Петров
Можно указать в inventory, можно для конкретной команды
Sergey
тем который указан на хосте lb
а если у меня не описан lb в inventory файле?
Дмитрий Петров
В документации есть пример для haproxy http://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html
Дмитрий Петров
Добавь его
Дмитрий Петров
Стандартная схема, когда в инвентори есть балансер и группа с бекендами
Sergey
т.е. я правильно понимаю, что в инвентори-файле у меня должны быть описаны все подключения, хотя играю конкретную группу из него в которой нет этого lb?
Sergey
а если у меня не описан lb в inventory файле?
ты придумываешь себе проблему - хочешь работать с сущностью, которой не существует в твоём инвентори (WAT?)
Дмитрий Петров
Да, в инвентори ты добавляешь все хосты которые у тебя есть в окружении. Обычно делают несколько инвентори для каждого из окружений, live, staging, local
Sergey
подключения нужно формировать динамически, перечисляя все хосты из соответствующей группы (e.g. 'backends')
Sergey
ок, т.е. у меня сработает связка: delegate_to: lb become: yes become_user: xxx
Дмитрий Петров
подключения нужно формировать динамически, перечисляя все хосты из соответствующей группы (e.g. 'backends')
В балансере - да, просто пройтись по группе и сгенерить конфиг для балансера
Дмитрий Петров
Sergey
В балансере - да, просто пройтись по группе и сгенерить конфиг для балансера
для балансерОВ, т.к. основная рабочая сущность в модели Ансибла - _группа_ хостов. И группа эта в общем случае может состоять даже из одного хоста.
Sergey
В балансере - да, просто пройтись по группе и сгенерить конфиг для балансера
Генерация конфига - это не проблема - проблема именно была выполнить команду на другой сущности и под другим пользователем одновременно
Sergey
Всем спасибо, пошел писать дальше ))
Дмитрий Петров
Не за что.
Denis 災 nobody
как можно запустить автонастройку при первой загрузке ноды? Допустим, в кикстарте заполнили всякие переменные, а после ребута нужно запустить задачу 1 раз, и чтобы показывало прогресс. Через rc.local как-то не вышло
Denis 災 nobody
войти под рутом и запустить - не вариант )
Denis 災 nobody
центос7 и systemd если что
Vadim
но мне кажется вам нужен cloud-init / ignition
Denis 災 nobody
https://www.freedesktop.org/software/systemd/man/systemd.special.html#reboot.target
уточнение: логин руту желательно до конца настройки заблокировать. И - см выше, нужен прогресс
Denis 災 nobody
и запуск ровно 1 раз
Denis 災 nobody
есть вариант заменить руту шелл на скрипт, но это надо ввести пасс..
Sergey
А еще подскажите - в какой переменной я могу получить имя оригинального хоста для которого играю playbook (что-то типа ansible_host или ansible_ssh_host), если сделал delegate_to 127.0.0.1?
Sergey
inventory_hostname
точно, спасибо )
Denis 災 nobody
Aleksey
ровно ожин раз на самом деле не бывает же. бывает до победного. а факт победы это флаговый файл /etc/my_superapp/init_done и убрать из опций запуска
Aleksey
это как
это как password recovery делают
Denis 災 nobody
это как password recovery делают
хм, сделали свою строку с дефолтом, а дальше? Отдельный runlevel?
Denis 災 nobody
ровно ожин раз на самом деле не бывает же. бывает до победного. а факт победы это флаговый файл /etc/my_superapp/init_done и убрать из опций запуска
нет, там всё должно поставиться и настроиться в 1 прогон, иначе переустановка и повтор. Есть нюансы..
Aleksey
а ранлевелы разве еще актуальная тема ?
Womchik
а почему нет?
Aleksey
нуу.. таргеты же щас
Aleksey
мн еотчегото казалось что ранлевелы это концепция sysv
Womchik
полностью же не вырезали
Dok
а если у меня не описан lb в inventory файле?
Генерировать таск для подансибла.. может
Aleksey
кроме ansigenom есть генераторы доки для ансибла ?
Aleksey
а то много где вижу красиво оформленую доку но чем ее делают нипонятно
Womchik
в ворде же
Ivan
дока, которая по самому ansible? или что-то другое?
Aleksey
Которая по ролям