Size: a a a

ansible — русскоговорящее сообщество

2020 December 16

M

Mikhail in ansible — русскоговорящее сообщество
Так можно и с fcgi и с fpm делать
источник

M

Mikhail in ansible — русскоговорящее сообщество
Maksim Sharov
как организовать inventory в случае, если один из хостов принадлежит двум группам? на раннем этапе пайплайна он доступен через внешний ip, чуть позже - сам становится контроллером в скрытой подсети (доступ в внешний мир имеет только он - gate), устанавливает зависимости для себя и машин в подсети.

inventory.yml
infra:
 hosts:
   # external-ip
   gate:
nodes:
 hosts:
   # localhost
   gate:
   slave-1:
   storage-1:

так возможно или как лучше организовать? и как будет выглядеть запуск плейбуков?

почему хочу переместить ансибл внутрь подсети на gate - чтобы решить проблемы доступа с ресурсам группы nodes
Если я правильно понял, контроллер это новый хост с ансиблем и "поздний" этап будет выполняться с нового контроллера?
Я бы два разных плейбука сделал. Первый - создаёт контроллер (и, если хочеться, запускает второй уже на новом), а второй разворачивает всю остальную инфраструктуру.
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
Mikhail
Если я правильно понял, контроллер это новый хост с ансиблем и "поздний" этап будет выполняться с нового контроллера?
Я бы два разных плейбука сделал. Первый - создаёт контроллер (и, если хочеться, запускает второй уже на новом), а второй разворачивает всю остальную инфраструктуру.
Если я правильно понял, контроллер это новый хост с ансиблем и "поздний" этап будет выполняться с нового контроллера?

да, именно так

если сначала, у меня создается инфрастуктура в закрытой подсети - набор виртуальных машин (одна из которых gate имеет доступ в сеть), изначально контроллер на внешнем устройстве - он также подготавливает эту пустую инфраструктуру терраформом.

затем я хочу перенести роль контроллера внутрь этой закрытой сети на хост gate, чтобы иметь доступ к  скрытым нодам

Я бы два разных плейбука сделал. Первый - создаёт контроллер (и, если хочеться, запускает второй уже на новом), а второй разворачивает всю остальную инфраструктуру.

я в итоге попробую разделить на 2 инвентори файла - для "внешнего" доступа, по которому буду преднастройку gate делать, и для внутреннего доступа, когда контроллер - часть подсети, ансибл будет проводить финальную настройку нод и самого контроллера.

на роли разбивать буду для преднастройки и финальной настройки
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
Maksim Sharov
Если я правильно понял, контроллер это новый хост с ансиблем и "поздний" этап будет выполняться с нового контроллера?

да, именно так

если сначала, у меня создается инфрастуктура в закрытой подсети - набор виртуальных машин (одна из которых gate имеет доступ в сеть), изначально контроллер на внешнем устройстве - он также подготавливает эту пустую инфраструктуру терраформом.

затем я хочу перенести роль контроллера внутрь этой закрытой сети на хост gate, чтобы иметь доступ к  скрытым нодам

Я бы два разных плейбука сделал. Первый - создаёт контроллер (и, если хочеться, запускает второй уже на новом), а второй разворачивает всю остальную инфраструктуру.

я в итоге попробую разделить на 2 инвентори файла - для "внешнего" доступа, по которому буду преднастройку gate делать, и для внутреннего доступа, когда контроллер - часть подсети, ансибл будет проводить финальную настройку нод и самого контроллера.

на роли разбивать буду для преднастройки и финальной настройки
@mmvrus разумно вообще бить инвентори на несколько файлов?
источник

I

Ilgiz in ansible — русскоговорящее сообщество
Maksim Sharov
как организовать inventory в случае, если один из хостов принадлежит двум группам? на раннем этапе пайплайна он доступен через внешний ip, чуть позже - сам становится контроллером в скрытой подсети (доступ в внешний мир имеет только он - gate), устанавливает зависимости для себя и машин в подсети.

inventory.yml
infra:
 hosts:
   # external-ip
   gate:
nodes:
 hosts:
   # localhost
   gate:
   slave-1:
   storage-1:

так возможно или как лучше организовать? и как будет выглядеть запуск плейбуков?

почему хочу переместить ансибл внутрь подсети на gate - чтобы решить проблемы доступа с ресурсам группы nodes
Дык просто, ansible-playbook ... -l infra
источник

I

Ilgiz in ansible — русскоговорящее сообщество
Или другой сабсет, nodes в твоём случае.
источник

I

Ilgiz in ansible — русскоговорящее сообщество
Почитай про этот ключ
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
Ilgiz
Или другой сабсет, nodes в твоём случае.
о, отлично. правильно, я понимаю, что если мы указываем сабсет, то в плее можно не указывать директиву hosts? и вообще hosts повышает специфичность и не дает возможность переиспользововать

---
## This playbook prepares gateway node

- name: install gitlab runner
 hosts: gate <--- не нужено
 gather_facts: false
 roles:
   - runner
источник

I

Ilgiz in ansible — русскоговорящее сообщество
Maksim Sharov
о, отлично. правильно, я понимаю, что если мы указываем сабсет, то в плее можно не указывать директиву hosts? и вообще hosts повышает специфичность и не дает возможность переиспользововать

---
## This playbook prepares gateway node

- name: install gitlab runner
 hosts: gate <--- не нужено
 gather_facts: false
 roles:
   - runner
О, тут точно не скажу, я использую hosts, но у меня в похожем случае просто оба раза указан контроллер (раннер)
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
Ilgiz
О, тут точно не скажу, я использую hosts, но у меня в похожем случае просто оба раза указан контроллер (раннер)
я видел использование hosts в репозитории с бест практиз для ансибла, правда, репа старая, там во всех плеях пишут hosts, показалось, что мы так повышаем специфичность плейбука и плеев в нем, что усложняет переиспользование

да, в доке тоже hosts указывают. зачем, если сабсет неплохо ложится на задачу https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#playbook-execution
источник
2020 December 18

S7

Sam 7 in ansible — русскоговорящее сообщество
всем привет. у меня вопрос по хостам. есть плейбук, который должен выполняться на разных комбинациях хостов (1 мастер хост и 9 слейвов). Пример 1+1 или 1 + 3 или 1+7 и т д. Причем в один момент времени может быть запущено 2 и более плейбуков. Смысл задачи и вопроса в том, чтобы сделать так, чтобы хосты слейвы не пересекались. Если что - я в ансибле новичок
источник

S7

Sam 7 in ansible — русскоговорящее сообщество
и спасибо
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
Sam 7
всем привет. у меня вопрос по хостам. есть плейбук, который должен выполняться на разных комбинациях хостов (1 мастер хост и 9 слейвов). Пример 1+1 или 1 + 3 или 1+7 и т д. Причем в один момент времени может быть запущено 2 и более плейбуков. Смысл задачи и вопроса в том, чтобы сделать так, чтобы хосты слейвы не пересекались. Если что - я в ансибле новичок
Как понимаю, беспокойство вызвает возможность обнуления работы одного плейбука другим плейбуком? Или лишней работы на слейве? По поводу второго могу отметить, что за счёт идемпотентности повторная работа не произойдёт
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
После этого вопроса у меня появился ещё один к сообществу. Что с конкурентерстью в ансибл? Что происходит, когда ансибл запускает отдельно два плейбука для одного хоста?
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
Sam 7
всем привет. у меня вопрос по хостам. есть плейбук, который должен выполняться на разных комбинациях хостов (1 мастер хост и 9 слейвов). Пример 1+1 или 1 + 3 или 1+7 и т д. Причем в один момент времени может быть запущено 2 и более плейбуков. Смысл задачи и вопроса в том, чтобы сделать так, чтобы хосты слейвы не пересекались. Если что - я в ансибле новичок
И задам ещё вопрос, кто определяет эти комбинации сейчас?
источник

S7

Sam 7 in ansible — русскоговорящее сообщество
никто не определяет. я хочу, чтобы слейвы выбирались из доступного пула, но только те, которые простаивают (помечены флагом идл например)
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
Sam 7
никто не определяет. я хочу, чтобы слейвы выбирались из доступного пула, но только те, которые простаивают (помечены флагом идл например)
То есть хочешь, чтобы ансибл как-то определил, что слейвы не задействованы и сам запустил плейбуки?
источник

M

Maksim Sharov in ansible — русскоговорящее сообщество
Хм, не слышал такого в ансибл. Все-таки декларативный инструмент, а тут мониторить нужно, возможно, коллеги с опытом подскажут
источник

S7

Sam 7 in ansible — русскоговорящее сообщество
я думаю в сторону sh скрипта, который бы проверял доступность и формировал нужный файл hosts и запускал плейбук с этими хостами
источник

S7

Sam 7 in ansible — русскоговорящее сообщество
но может есть какое то более нативное решение, о котором я не знаю
источник