Timur
Dmitry
Все мы знаем как отличия в паре тасков превращаются в огромную портянку
Dmitry
и потом когда мы применяем роль мы на 100% не уверены что происходит под капотом
Dmitry
имхо на каждый класс должна быть своя роль, и если классы не связаны между собой то тем более
Dok
George
Dmitry
George
ну, да, просто есть много любителей накатывать роль на непонятно что
Timur
Изменение дефолтного параметра роли через плейбуку или инвентори - это стандартный способ использования роли
Dmitry
Dmitry
например, параметры из других хостов
Timur
Dmitry
или hostvars['localhost']['cloudformation']
Dmitry
Dmitry
но когда мы ссылаемся в роли на значения параметров из другого хоста - это не правильно
Timur
Timur
Вроде, никто не предлагал подобного
Timur
Timur
Поэтому я предложил более простой и стандартный
Sergey
Sergey
:-)
Ужасный ведь способ. Тем более, что у Ансибла есть прямо таки штатный способ назначения таско хостам - сборка их в роли, и назанчение ролей группам.
Dok
Dok
Сначала были роли самостоятельные, потом выносился общий знаменатель в отдельную роль, потом в ролях стали появляться when, и в итоге, получилась каша)
Dmitry
Sergey
Sergey
when - это из башсибла прокралось 😉
Sergey
императивное такое себе
Anton
Коллеги, есть задача менять файл конфига внутри докер контейнера, кроме как через command: docker cp ... ничего не нашел. Есть какая-то штатная возможность запихивать файл внутрь контейнера не пересобирая образ?
Timur
А ансибл тут при чем?
Womchik
volume?
Womchik
и да. каналь не тот
Anton
volume не хочется пользовать, если контейнер убивается должен исчезать с всем содержимым, а разворачивается все ансиблом
Timur
Timur
Можно как к машине подцепиться к контейнеру
Anton
вот не нашел такой возможности в docker_container
Anton
Timur
Timur
https://docs.ansible.com/ansible/latest/plugins/connection/docker.html
Timur
Я про плагин
Anton
Судя по описанию то что нужно, странно что пропустил его. Спасибо!
Timur
Это не модуль, а плагин
Timur
После создания и сетапа контейнеров стандартными модулями нужно делать отдельный плей, где подключаться к созданным контейнерам через этот плагин и работать с ним, как с обычным инстансом, выполняя произвольные модули ансибла
Anton
Vladislav 👻
А направьте меня в нужное русло пожалуйста: поднимается виртуалка с пабликом ключом, надо расскатать свои ключи, я думаю сгенерить отдельный приват ключ, но пока не понимаю, куда его положить и как пояснить ansible, что первоначально один пользователь и приватный ключ?
igi
Vladislav 👻
Неее
Vladislav 👻
По сути, мне надо сделать первичную настройку через отдельный приват ключ
Vladislav 👻
Я вот думаю, как бы приват ключ завязать только на плейбук/роль?
Vladislav 👻
Хост/группа не канает, т.к. тогда всегда будет подменяться приват-ключ
igi
Ну можно указать как переменную в плейбке/роли
igi
Или даже передавить с ключом -е при запуске
Vladislav 👻
спасибо, что-то утром туплю 🙈
Anonymous
Hi anyone know how to install apache in solaris using anaible playbook
Timur
Dok
Класс)
Timur
Только эхо через шелл в ансибле - это полная ересь :)
Dok
Ну, если через дебаг только)
Timur
Да, для вывода сообщений есть дебаг
Timur
модули command, shell и т.п. лучше вначале вообще не использовать
Timur
Пока не изучите ансибл на достаточном уровне для понимания
Dok
Да я уже несколько месяцев на нём. Просто, изучаю не по порядку
Dok
расскажи подробне? интересно было бы узнать что ставишь и где упераешься
Ну, сначала были просто перечисления команд в ролях. Т.е. были роли linux и backend.
linux - все основные изменения для всех.
backend - всё остальное, что нужно запустить после linux, чтоб получить бэкенд.
Потом, изучились методы when и include_role, тем самым, образовав роли php и nginx. Т.е. к тому моменту уже были роли backend, static, video, frontend и пр. и во всех было одно общее - установка и основные конфиги php и nginx.
Теперь в этих ролях такие блоки
- include_role: name=php
- include_role: name=nginx
А сами роли nginx и php состоят примерно так
- name: Стоит ли PHP7.1?
stat: path="/usr/bin/php7.1"
register: php_chk
- block:
...
when: php_chk.stat.exists == False
Теперь же всё упёрлось в то, что одним надо одно значение в основном конфиге держать, другим другое. За тем я и ищу условие, которое можно определить для всех ролей в переменной template. Как оказалось, вариантов несколько.
Timur
> include_role: name=nginx
не используйте в ролях строчный синтаксис
Dok
Почему?
Dok
Это удобно и наглядно
Timur
??? вы смеетесь?
Dmitry
Это удобно и наглядно
Если появится больше одного параметра - будет нечитаемо. Проще сразу приучаться
Timur
Если параметров модуля больше одного, то все удобство пропадает моментально
Dok
Ничуть. Вот мне не сразу видны все уровне в этом примере из документации, например.
Dok
Если появится больше одного параметра - будет нечитаемо. Проще сразу приучаться
- name: Делаем папки!
file: path="{{ item.path }}" state=directory owner={{ item.owner }} group={{ item.group }} mode={{ item.mode }}
with_items:
- { path: '/var/log/php-fpm', owner: root, group: root, mode: "0755" }
- { path: '/var/www/scripts', owner: www-data, group: www-data, mode: "0775" }
Да вполне себе удобно)
Timur
Dok
Ну, каждому своё)
Timur
Тут плохо все
Dmitry
Dmitry
Больше фигурных скобочек богу фигурных скобочек