Artur
вопрос немного не по теме, но близко
прикручивал кто ldap к awx ?
Alexandr
не в курсе
Andrey
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 таске? хочу в зависимости от переданной переменной выполнять в этой таске разные скрипты
Pavel
Aliaksandr
@DejaM0rt А можно референс?
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 сначала этот файл прожуёт перед копированием?
Egor
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
А зачем чайлдами делать?
Timur
Andrey
Ну и не назначайте роли на all
John
John
По сути я хочу группы, где all будет содержать все машины, их ИПы, ключи и др.
И группы где будут часть машин, без указания всего того, что указано в all.
Сильно много хочу? И тут логика должна быть другая?
Andrey
Так и делай
John
Timur
Anonymous
John
И в чем же трудность?
Так очевидно же :) не получается! Точнее я что-то делаю не так, но не знаю что именно
cent
А кто-то пробовал через pyinstaller засунуть ansible в бинарь?
Anonymous
Vlad
Пишут что стоник таки релизнули. Правда другие люди и под другим названием.
OpsMop – Config management and app deployment from the creator of Ansible (Score: 100+ in 7 hours)
Link: https://readhacker.news/s/3UzTm
cent
Vlad
Да. Python 3 DSL: https://github.com/opsmop/opsmop/blob/master/docs/source/language.rst
Vlad
У многих аллергия на yaml программирование на конфигах.
Vadim
Vadim
inb4 сетаптулз в стиле 2018, тьфу
Pavel
другое дело что не всегда подумать получается - иногда даже нечем ((
Vlad
Естественно он должен быть идемпотентным.
Pavel
Vadim
Vlad
Vadim
вот и я говорю - пущай сразу на баше пишут, чего стеснятся
Tadeusz
не модно (c)
Sun
Sun
ℭ𝔞𝔯𝔯𝔬𝔩
ℭ𝔞𝔯𝔯𝔬𝔩
ℭ𝔞𝔯𝔯𝔬𝔩
Помогите разобраться.
Есть инвентори 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)
ℭ𝔞𝔯𝔯𝔬𝔩
John
Pavel
Pavel
что вполне логично
ℭ𝔞𝔯𝔯𝔬𝔩
Pavel
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/