Udjin
Парни, такой вопрос странный. У DO в дроплетах есть кнопка Rebuild. Она не удаляя дроплета просто накатывает на него чистый выбранный имейдж с ОС. Айпишник и всё остальное сохраняется. Вопрос:
Как мне это сделать ансиблом? модуль digital-ocean-module - умеет такое? Я посмотрел - опции rebuild нету.
Udjin
в примерах
# Ensure a droplet is present
# If droplet id already exist, will return the droplet details and changed = False
# If no droplet matches the id, a new droplet will be created and the droplet details (including the new id) are returned, changed = True.
- digital_ocean:
state: present
command: droplet
id: 123
name: mydroplet
api_token: XXX
size_id: 2gb
region_id: ams2
image_id: fedora-19-x64
wait_timeout: 500
Udjin
говорится, что если дроплет есть - ансибл с ним ничего делать не будет. Я так полагаю, что даже если сменить имейдж на новый, с федоры на убунту - оно ж его не отребилдит?
om
Спасибо!
Решил вопрос установкой
remote_user = ansible_svc
Но это не выход. Как вариант - потестить ансибл - работает. Но как целевоё решение (пользователь может зайти на сервер и запустить сценарий ансибла, который в зависимости от прав на целевых серверах будет выполняться или нет) не подходит.
Значит, будем решать Проблему Двух Собак...
bebebe
om
Есть ли возможность указывать в файле ansible.cfg макросы или переменные?
Типа remote_user = ${USER/@corp/}
bebebe
нет, если только не темплатизировать его заранее
cent
Я смотрю чатик оживился)
А кто-то ловил проблемы с heredoc ?
У меня почему-то в конце файла EOF добавляет постоянно
Pavel
парни, привет. вопрос: можно ли в новом ansible 2.7 через PSRP модуль передать команды транзитом на конечный хост, то есть ansible -> windows_bastion -> target host ?
Pavel
никто ничего не делал подобного
simplemice.eth
если вдруг кому интересно
Tadeusz
Мышшш
shine
што, опять?
simplemice.eth
Tadeusz
Ты коучишь?)
Artur
привет.
delegate_to возможно подцепить к блоку ?
Artur
прицепить можно.
но наткнулся на следующее:
имеется [dev-app]
dev8-app1 ansible_host="10.0.0.1" ansible_ssh_user=admin
dev7-app1 ansible_host="10.0.0.2" ansible_ssh_user=admin
[dev-db]
dev8-db1 ansible_host="10.0.0.3" ansible_ssh_user=admin
dev7-db1 ansible_host="10.0.0.4" ansible_ssh_user=admin
[dev:children]
dev-app
dev-db
в плейбуке есть блок с delegate_to: "dev7-app1".
при его запуске он ведёт себя очень странно.
пример выполнения таска
changed: [dev8-app1 -> 10.0.0.2]
changed: [dev7-app1 -> 10.0.0.2]
но dev8-app1 имет совсем другой ип в инвентори листе. получается такс запускается 2 раза на одной тачке.
как такое лечится ?
запускаю с ключом -l dev
Евгений
Так а роль для какой группы хостов запущена? Он же с каждого хоста из этой группы вызовет таск на хосте, куда делегируешь.
Artur
Artur
чутка покапался и понял почему ип одинаковый
Artur
делегат не "запускает только на указаном хосте", а запускает команду ввезде, потом понимает что выполнять нужно на другом хосте и пробрасывает её ( задачу) туда.
Artur
но у себя ( на хосте где не требуется запускать ) он её тоже видит
Artur
поэтому ип одинаковые выходят, и поэтому 2 запуска срабатывает
Artur
есть какая либо возможность "спрятать" этот такс от других хостов ?
Rishat
- name: Make sure nginx virtual hosts are configured
tags: nginx
template: src=nginx-virtualhost.conf.j2 dest=/etc/nginx/conf.d/{{ item.key }}.conf
with_dict: "{{ virtualhosts }}"
when: enable_ssl|default(false)|bool == false
notify:
- Restart nginx отлетает с ошибкой TASK [webtier : Make sure nginx virtual hosts are configured] ************************************************************************************************
fatal: [192.168.12.12]: FAILED! => {"msg": "'virtualhosts' is undefined"} Как я понимаю https://github.com/Rishats/ansible_laravel в папке host_vars должно как-то по другому записываться переменная?
Artur
Евгений
Да, есть ключ - запустить только один раз. run_once: true
https://docs.ansible.com/ansible/2.6/user_guide/playbooks_delegation.html#run-once
Rishat
Artur
т.е. совпадает с именем в инвентори листе ?
Artur
либо вынеси её в all файл
Rishat
Аааа,спасибо,вроде начинаю понимать. Сейчас попробую)
Artur
но на этот раз выполнилась 1 раз
Artur
как и требовалось
Artur
я так понимаю что запустилось на первом хосте из группы, он формарднул такс на нужный хост и этим всё закончилось
Artur
да. так и было. проверил по выводу
Евгений
Просто пока читал, понял, что запутался)
```
changed: [dev8-app1 -> 10.0.0.2]
changed: [dev7-app1 -> 10.0.0.2]
```
тут видно что таск запустился на двух хостах.
А delegate в таске с константным ip. Вот он и выполнился дважды.
Artur
везде фигурирует dev8-app1 а не dev7-app1, но ип при этом dev7-app1
Евгений
В таких случаях, наверное лучше всего разнести сценарий по ролям.
Ролью можно определить группу хостов для запуска и конкретный сценарий. Одна роль вместо таска с delegate - на один хост, вторая роль - все остальные одинаковые таски для всех хостов.
Artur
думаю мне не подойдёт.
т.к. блок с делегатом дожен срабатывать лишь при выполнении условия из when в плейбуке
Artur
по сути если указана переменная, то блок с делегатом должен будет сработать
Artur
а в setup можно условия пихать ? если да, то разделю на 2 роли
Constantin
Всем привет, может кто подскажет, неужели нет способа сделать include_role и delegate_to?
Евгений
Условие when вроде к любому модулю можно дописать.
Ровно как и на запуск роли тоже можно условие написать.
Constantin
Мне нужно роль на локальной машине выполнить, но delegate_to на уровне тасков, когда я подрубаю роль не срабатывает
Евгений
Я выношу в отдельную роль все локальные таски, просто потому что AWX в докере и 127.0.0.1 не работает.
- hosts: host_name_from_inventory
gather_facts: yes
roles:
- { role: localhost, when: ansible_distribution == "CentOS"}
Rad
Тут сейчас будет про ansible
Rad
Ссылка на прямую трансляцию сегодняшнего митапа про IaC: https://www.youtube.com/watch?v=7eP0KOD4zCw
Скоро начинаем!
Александр
Зоебис доклад спасибо
Alex
Я подумываю устроить митап по ансибл и доклад о своём видении и юзкейсе. Это интересно сообществу?
Viktor
Думаю, да. Есть какой-то набросок агенды по своим кейсам?
Viktor
Может кабак какой есть?
Alex
Нет, либо зал, либо ничего пока. Первый камень в сторону организации этого дела кидаю.
Sergey
Это вон в devops_moscow.
Bandikoot
Это вон в devops_moscow.
кстати, на тему сегодняшнего выступления: а можно пару примеров таких кейсов, где приходилось ± навороченные модули самим писать?
Sergey
collectd, systemd-nspawn, rabbitmq-plugins
Александр
Александр
Александр
Про рабит
Dok
Alex
Dok
Есть добавление юзеров, включение веб-морды, например, но банального добавления в кластер, не нашел (
Александр
Типа вот ты пользуешься гитом, а у тебя скок проектов? И как порядок в гите?
Александр
Alex
Александр
Александр
Ты в интернетах не? Тут и нахуй послать могут
Александр
И от канала это вообще ни как не зависит
Alex
Александр
Я ток хотел написать о том что ансибл вообще не панацея