Artur
вопрос немного не по теме, но близко прикручивал кто ldap к awx ?
Alexandr
не в курсе
Asgoret
ты много строк вставить хочешь?
уже нашел решение) а так от 4х(кол-во лупов)
Andrey
для нескольких строк рекомендуется blockinfile
Asgoret
решилось так: 1) генерм темп файл со всей хурмой 2) вставляем через lineinfile по такой схеме: line: |- {{ lookup('file', '/opt/ansible/roles/apb/templates/ports.conf.j2')|indent( width=3, indentfirst=True) }}
Asgoret
✙ DarkKC ✙
а тут наших показывают прям щас!
✙ DarkKC ✙
Трансляция DevOps Moscow http://amp.gs/Ey1B Рассписание можно посмотреть на TimePad http://amp.gs/Ey1m
✙ DarkKC ✙
@tnt4brain ^^ xD
Aliaksandr
Привет, как можно использовать if statement в shell таске? хочу в зависимости от переданной переменной выполнять в этой таске разные скрипты
Aliaksandr
@DejaM0rt А можно референс?
Pavel
@DejaM0rt А можно референс?
примерно так scripts: arg1: script1 arg2: script2 ... shell: "{{ scripts[curr_arg] }}"
Aliaksandr
@DejaM0rt О, спасибо 👍
Sun
Парни, вопрос возник: Есть конфиг для сайта для nginx. Надо в конфиг брать переменную для бэкенда и этот конфиг класть в контейнер. Что-то я сейчас курю доку по ansible-container и не могу понять, как правильно это делать.
Sun
как копировать готовый конфиг понятно, а вот как его сначала из j2 слепить?
Sun
Или правильно идти через доку nginx?: image: nginx volumes: - ./mysite.template:/etc/nginx/conf.d/mysite.template ports: - "8080:80" environment: - NGINX_HOST=foobar.com - NGINX_PORT=80 command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
Egor
Я чего-то неправильно понимаю, или {{}} уже не работают?))
Sun
да я только впиливаюсь в это, пока плохо понимаю
Sun
мне надо сделать реюзабельный плейбук, чтобы можно было его из CD дёргать с параметрами, которые будут определять некоторые вещи, типа бэкендов и портов.
Egor
да я только впиливаюсь в это, пока плохо понимаю
Ну так синтаксис j2 смотри, а не вот это вот все)) Там можно явно указывать использование переменных. Например: server_name {{domain}}; И если у тебя задана переменная domain, то он её и подставит.
Sun
Уточняю: Я собираюсь не устанавливать nginx, а запускать контейнер с ним. Т.е. в фазе билда в конт будет копироваться конфиг-файл. В доке к ansible-container есть вот такое: - shell: mkdir -p /app - name: Ensure /app/ exists file: path: /app/ state: directory - copy: src: package.json dest: /app/ И чота я не вкуриваю, будет {{ }} работать или нет. Мне кажется, что нет.
Sun
или таки Ansible сначала этот файл прожуёт перед копированием?
Sun
а, точно. спс
John
Помогите разобраться. Есть инвентори yml в нем большое количество хостов --- all: hosts: servername1: ansible_ssh_host: 10.0.200.1 servername2: ansible_ssh_host: 10.0.200.2 Чуть ниже "группы" children: GroupName1: hosts: servername1: ~ GroupName2: hosts: servername2:~ По логике плейбук должен отрабатывать на каждой машине один раз? если нет, то где ошибка? Надо-то что бы на all он проходил один раз по всем хостам, А на GroupName2 - только по членам группы. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#inventory Тут читаю, и возникает вопрос: неужели если мне надо что бы хост находится в нескольких группах сразу, то мне надо его руками в каждую группу прописывать по полной, со всеми переменными дублируя их? (пока вариант с hosts_vars не рассматриваем наверно
Andrey
Насколько я знаю, достаточно указать один раз
Andrey
Потом в группах только имя
John
такая (как я выше показал) структура заставляет плейбук сначала пройтись по all, а потом он продолжает идти по GroupName1&2
Andrey
А зачем чайлдами делать?
Andrey
Ну и не назначайте роли на all
John
Timur
А как правильно?
Зависит от того, чего именно вы хотите добиться
John
По сути я хочу группы, где all будет содержать все машины, их ИПы, ключи и др. И группы где будут часть машин, без указания всего того, что указано в all. Сильно много хочу? И тут логика должна быть другая?
Andrey
Так и делай
John
И в чем же трудность?
Так очевидно же :) не получается! Точнее я что-то делаю не так, но не знаю что именно
cent
А кто-то пробовал через pyinstaller засунуть ansible в бинарь?
Anonymous
Чуть перефразирую свой вопрос, возможно непонятно написал. 1. Добавляем ppa через шелл - получаем то, что ожидали: jaels@lootbox:~$ sudo add-apt-repository ppa:remmina-ppa-team/remmina-next jaels@lootbox:~$ cat /etc/apt/sources.list.d/remmina-ppa-team-remmina-next-bionic.list deb http://ppa.launchpad.net/remmina-ppa-team/remmina-next/ubuntu bionic main deb-src http://ppa.launchpad.net/remmina-ppa-team/remmina-next/ubuntu bionic main 2. А вот если добавлять через модуль apt_repository - получаем некорректный URL к репе apt_repository: repo: "ppa:remmina-ppa-team/remmina-next" state: present notify: Update Cache jaels@lootbox:~$ cat /etc/apt/sources.list.d/ppa_remmina_ppa_team_remmina_next_tessa.list deb http://ppa.launchpad.net/remmina-ppa-team/remmina-next/ubuntu tessa main Все возможные факты, в которых есть упоминание 'tessa' я в vars указал, как bionic ( но всё равно добавляет некорректно через модуль ). vars: - ansible_os_family: Debian - ansible_distribution: Ubuntu - ansible_distribution_release: bionic - ansible_lsb_id: ubuntu - ansible_lsb_codename: bionic Как его заставить корректно работать с ppa? Нид хелп
Anonymous
Vlad
Пишут что стоник таки релизнули. Правда другие люди и под другим названием. OpsMop – Config management and app deployment from the creator of Ansible (Score: 100+ in 7 hours) Link: https://readhacker.news/s/3UzTm
Vlad
Да. Python 3 DSL: https://github.com/opsmop/opsmop/blob/master/docs/source/language.rst
cent
Да. Python 3 DSL: https://github.com/opsmop/opsmop/blob/master/docs/source/language.rst
Ну, так вроде чтобы именно этого ада не было и был придуман ansible.))) Разве нет? Что никто больше не писал свои bash/python/perl/ruby скрипты.
Vlad
У многих аллергия на yaml программирование на конфигах.
Vadim
Да. Python 3 DSL: https://github.com/opsmop/opsmop/blob/master/docs/source/language.rst
ух, оказалось, что питон можно еще больше упростить
Vadim
inb4 сетаптулз в стиле 2018, тьфу
cent
У многих аллергия на yaml программирование на конфигах.
А что мешает тогда все в свои модули положить и дергать их?)
Pavel
У многих аллергия на yaml программирование на конфигах.
если немного подумать много меньше программирования получается....
Pavel
другое дело что не всегда подумать получается - иногда даже нечем ((
cent
У многих аллергия на yaml программирование на конфигах.
и да, кстати, если кто-то начинает программировать на yaml или даже макросами в шаблонах, то он явно уже делает что-то не то...
Vlad
А что мешает тогда все в свои модули положить и дергать их?)
Попробуй представить модуль реализующий простой пример: https://github.com/opsmop/opsmop-demo/blob/master/content/basics.py Сколько будет в нем строк и насколько будет сложнее его понять?
Vlad
Естественно он должен быть идемпотентным.
cent
Попробуй представить модуль реализующий простой пример: https://github.com/opsmop/opsmop-demo/blob/master/content/basics.py Сколько будет в нем строк и насколько будет сложнее его понять?
Ну, если добавить if для идемпотентности, то получится ванильный питон. Ты должен был бороться со злом, а не примкнуть к нему)) Ты видел chef кукбуки серьезной инфраструктуры? Мне кажется, что поддерживающие такое в прошлой жизни серьезно проштрафились)
Vlad
Vadim
вот и я говорю - пущай сразу на баше пишут, чего стеснятся
Tadeusz
не модно (c)
Sun
ℭ𝔞𝔯𝔯𝔬𝔩
Чуть перефразирую свой вопрос, возможно непонятно написал. 1. Добавляем ppa через шелл - получаем то, что ожидали: jaels@lootbox:~$ sudo add-apt-repository ppa:remmina-ppa-team/remmina-next jaels@lootbox:~$ cat /etc/apt/sources.list.d/remmina-ppa-team-remmina-next-bionic.list deb http://ppa.launchpad.net/remmina-ppa-team/remmina-next/ubuntu bionic main deb-src http://ppa.launchpad.net/remmina-ppa-team/remmina-next/ubuntu bionic main 2. А вот если добавлять через модуль apt_repository - получаем некорректный URL к репе apt_repository: repo: "ppa:remmina-ppa-team/remmina-next" state: present notify: Update Cache jaels@lootbox:~$ cat /etc/apt/sources.list.d/ppa_remmina_ppa_team_remmina_next_tessa.list deb http://ppa.launchpad.net/remmina-ppa-team/remmina-next/ubuntu tessa main Все возможные факты, в которых есть упоминание 'tessa' я в vars указал, как bionic ( но всё равно добавляет некорректно через модуль ). vars: - ansible_os_family: Debian - ansible_distribution: Ubuntu - ansible_distribution_release: bionic - ansible_lsb_id: ubuntu - ansible_lsb_codename: bionic Как его заставить корректно работать с ppa? Нид хелп
Просто укажи параметр codename при вызове apt_repository: https://docs.ansible.com/ansible/latest/modules/apt_repository_module.html#parameters
ℭ𝔞𝔯𝔯𝔬𝔩
Помогите разобраться. Есть инвентори yml в нем большое количество хостов --- all: hosts: servername1: ansible_ssh_host: 10.0.200.1 servername2: ansible_ssh_host: 10.0.200.2 Чуть ниже "группы" children: GroupName1: hosts: servername1: ~ GroupName2: hosts: servername2:~ По логике плейбук должен отрабатывать на каждой машине один раз? если нет, то где ошибка? Надо-то что бы на all он проходил один раз по всем хостам, А на GroupName2 - только по членам группы. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#inventory Тут читаю, и возникает вопрос: неужели если мне надо что бы хост находится в нескольких группах сразу, то мне надо его руками в каждую группу прописывать по полной, со всеми переменными дублируя их? (пока вариант с hosts_vars не рассматриваем наверно
В зависимости от организации можно указывать серверы в all.hosts и/или в all.childrens.group_name.hosts. Когда вызывается плей для all - то он проходит по всем, вообще всем, указанным серверам. НО! Если сервер указан многократно, то в список для all он попадёт только один раз. И, как я недавно убедился, при этом соберутся все переменные для сервера из group_vars и host_vars.
ℭ𝔞𝔯𝔯𝔬𝔩
Кстати, спасибо @tgadiev и @tnt4brain за наставление обратно на путь чистого и читаемого yml без 'программирования на ямле' (хотя бы в inventory.yml)
ℭ𝔞𝔯𝔯𝔬𝔩
Pavel
что вполне логично
Pavel
это решается через переменную ansible_group_priority
я к тому, что про это нельзя забывать
Timur
Если делать странные вещи - получится странный результат
Timur
Что логично
ℭ𝔞𝔯𝔯𝔬𝔩
Тимур, да вы просто кладезь афоризмов 👍
Pavel
# Synchronization using rsync protocol (push) - synchronize: src: some/relative/path/ dest: rsync://somehost.com/path/ подскажите как в somehosts правильно подсунуть список хостов из inventory чтобы он сам подтягивал учётные данные?
Pavel
- hosts: LaLaLa tasks: - name: Rsync to remote hosts synchronize: src: /ftp/server/1.txt dest: rsync://(>?<)/cygdrive/c/