@pro_ansible

Страница 280 из 625
Konstantin
27.09.2017
13:52:48
возможно ли как то получить из инвентори список хостов через запятую в jinja ?

нужно автоматизировать развертывание apache+mod_jk, нужно сделать темплейт для файла worker.proporties

ну а если быть точнее, как то так {% for hostname['webservers'] in invetory %}

Константин
27.09.2017
14:42:15
зачем ставить если есть КОНТЕЙНЕРЫ

Google
Alexander
27.09.2017
14:56:36
через join(',') ?

Konstantin
27.09.2017
15:37:12
зачем ставить если есть КОНТЕЙНЕРЫ
Какое отношение имею контейнеры к mod_jk?

Константин
27.09.2017
15:51:18
я про awx и его жесть с установкой

hamper ?
27.09.2017
17:58:27
А что это может быть за хрень? Я в роли использую - template: ... with_items: ansible_play_batch а оно вот такое выдает (item=ansible_play_batch) => {"failed": true, "item": "ansible_play_batch", "msg": "AnsibleUndefinedVariable: 'ansible.vars.hostvars.HostVars object' has no attribute u'ansible_play_batch'"}

Anatoly
27.09.2017
18:02:06
Андефайнед, написано же

hamper ?
27.09.2017
18:10:48
Ну так это ж глобальная переменная...

http://docs.ansible.com/ansible/latest/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts

Плейбук древний достался, там play_hosts был и вроде как раньше работало, но его ж в новых версиях выпилили и заменили на ansible_play_batch. Вот я думал что замены будет достаточно, а похоже что-то еще надо сделать.

Anatoly
27.09.2017
18:14:47
А переменные не надо в фигурные скобочки убирать?

hamper ?
27.09.2017
18:15:59
Хм, попробую.

Anatoly
27.09.2017
18:16:00
Ну и всегда можно дебагом проверить, что он там тебе возвращает

hamper ?
27.09.2017
18:17:26
Ага скобочки и кавычки... with_items: "{{ ansible_play_batch }}"

Забыл что это поменялось после того, как это г**** мамонта было написано.

Google
Sergey
27.09.2017
18:20:01
ну а если быть точнее, как то так {% for hostname['webservers'] in invetory %}
есть же groups[<имя_группы>], там уже все хосты внутри лежат

Ecklory
27.09.2017
19:51:11
Ребят, а где документацию по разработке плейбуков найти? %)

Ecklory
27.09.2017
19:53:12
Например: мне нужна работа с apt. Выполнение apt update && apt -y full-upgrade на всех хостах. Документация есть тут: http://docs.ansible.com/ansible/latest/apt_module.html Но как в реалии применять?

Sergey
27.09.2017
19:54:31
Например: мне нужна работа с apt. Выполнение apt update && apt -y full-upgrade на всех хостах. Документация есть тут: http://docs.ansible.com/ansible/latest/apt_module.html Но как в реалии применять?
Ну вот так и применить, как написано. Если хочешь получить общее предствление о том, как могут быть сделаны вещи - можешь поглядеть роли в Ansible Galaxy.

Для начала - какие-нибудь простые, потом - что-то безбашенное и упоротое.

Ну типа развёртывания кластеров с разными ролями, с разным числом серверов.

Ecklory
28.09.2017
06:11:38
http://opennet.ru/opennews/art.shtml?num=47276

Nklya
28.09.2017
06:25:16
Внезапно. Вчера утром уже было

Vit
28.09.2017
08:32:32
Ребят, а где документацию по разработке плейбуков найти? %)
Это как документация по разработке программ на С/Python. Не бывает такой ) личный опыт + исходники, snippets

Vit
28.09.2017
08:34:17
Это у каждого индивидуально выйдет) но так, snippets и готовые роли можно подглядывать

Nklya
28.09.2017
08:59:53
Для такого можно даже плейбуки не писать

Dmitry
28.09.2017
09:00:30
зачем ставить если есть КОНТЕЙНЕРЫ
вот еще, принесут говна своего хипсторского

Ecklory
28.09.2017
09:22:20
Nklya
28.09.2017
09:46:22
Ага

Sheridan
28.09.2017
10:44:27
Камрады, а можно ли для плейбука целиком задать when: variable=true и где это прописать? Если я допишу эту штуку как - hosts: [] when: variable=true ... будет работать?

или в каждую таску надо?

Google
Nklya
28.09.2017
10:47:46
Можно инклудить плейбуки с условием, например - include: fedora.yml when: ansible_distribution == "Fedora" Плюс можно ставить условие на блок тасков http://docs.ansible.com/ansible/latest/playbooks_blocks.html

Sheridan
28.09.2017
10:50:23
угу, понял. В моём случае будет when к каждому таску значит...

Aleksei
28.09.2017
10:51:46
а можно где-то взять ансибл версии 2.3.2 для убунты? в ансибл репозитории только лейтест(2.4)

билдить из сорса не хочу

Тефтеля
28.09.2017
10:52:10
pip

Ecklory
28.09.2017
11:12:18
Ага
А как тогда организовать?

Aleksei
28.09.2017
11:16:12
а подскажите по темплейтам. у меня есть таск который из темплейта генерит правила для айпитейблс, там куча ифов вида {% if ansible_hostname in groups['springboot'] %} add some firewall rule {% endif %} и мне выпадает ошибка fatal: [octopus]: FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: Unable to look up a name or access an attribute in template string (a lot of FW rules was here)).\nMake sure your variable name does not contain invalid characters like '-': argument of type 'StrictUndefined' is not iterable”} есть идеи?

Karey
28.09.2017
11:17:39
Нужно больше подробностей

Aleksei
28.09.2017
11:18:17
каких именно?

таск вида template: backup=yes src=rules.v4.j2 dest=/etc/iptables/rules.v4

Karey
28.09.2017
11:19:34
Как раз таки тот template string

C ним что-то не так

Aleksei
28.09.2017
11:20:34
эм. который? который там в ифе?

Karey
28.09.2017
11:22:28
Да

А у тебя в groups['springboot'] есть что-нибудь?

Aleksei
28.09.2017
11:24:53
давай другой пример возьмем, будет чуть проще. {% elif ansible_hostname in groups['dns'] %} -A INPUT -p udp --dport 53 -m udp -j ACCEPT -A INPUT -p tcp --dport 53 -m tcp -j ACCEPT {% endif %} ошибка та же

причем на половине групп оно нормально апплаится

правила у всех одинаковые, только порты разные

в самой группе два днса [dns] dns1 dns2

есть идеи как это дебажить хотя бы?

Google
Nklya
28.09.2017
11:31:33
А как тогда организовать?
Начать с чтения документации http://docs.ansible.com/ansible/latest/intro_getting_started.html Должно получится что-то типа ansible all -m shell -a 'apt update && apt -y full-upgrade'

Karey
28.09.2017
11:33:27
А в плэйбуке есть gather_facts?

Aleksei
28.09.2017
11:36:45
да

Sergey
28.09.2017
11:40:41
пишется одна роль, но принимающая параметры

которые ей из плейбука передаются

Aleksei
28.09.2017
11:42:05
а какая разница? будет 3 ифа или будет луп с переменной в которую будет приходить значение из переменных группы, например?

Sergey
28.09.2017
11:46:15
Хм, непонимание принципов detected. Ок, тогда исхожу из наблюдаемых фактов: раз не работает и есть вопрос, значит, какая-то разница есть? ? Ещё раз: роль - она просто должна параметризироваться. По-простому: Не надо писать "(если это джип )поставь колёса на 22')(конец)", надо писать "для всех джипов: поставь колёса (22')"

Хотя это, конечно, моё личное мнение, которое никого ни к чему не обязывает, и его высказывание - просто предложение воспользоваться концентрированным опытом в готовой форме.

Aleksei
28.09.2017
11:59:23
вроде этого упрощенно {% for host in groups['dns'] %} -A INPUT -p udp --dport 53 -m udp -j ACCEPT -A INPUT -p tcp --dport 53 -m tcp -j ACCEPT {% endfor %} ?

Sergey
28.09.2017
14:20:31
это опять конфиг

я про роли писал, которые ты назначаешь на определённые хосты

Aleksei
28.09.2017
14:32:16
а, ты предлагаешь делать отдельные роли для разных групп хостов? а если роль нужно апплаить на все хосты, но с разным конфигом? нужно делать разные роли или разные конфиги в зависимости от хоста?

Anatoly
28.09.2017
15:19:24
Идея разных ролей для разных хостов чуда как хороша

Чего только люди не напридумывают

Aleksei
28.09.2017
15:54:51
у меня одна маленькая роль, положить темплейт и сделать релоад фаервола. куда уж меньше то

она кстати работает, там парсинг темплейта просто ломается если в середине будет иф с группой которой нет

error message мог бы быть поточнее

Anatoly
28.09.2017
15:56:18
Положите список правил в груп_варс?

Google
Aleksei
28.09.2017
15:56:38
Идея разных ролей для разных хостов чуда как хороша
да я просто не очень понимаю Сергея, он слишком абстрактен для меня

Sergey
28.09.2017
15:56:44
Anatoly
28.09.2017
15:56:55
Ну так же все делают нет?

Sergey
28.09.2017
15:57:40
да я просто не очень понимаю Сергея, он слишком абстрактен для меня
Я считаю неприличным куски деплоя с рабочего проекта в общие чаты пастить.

Поэтому да, "на пальцах" приходится.

У меня сейчас есть икс серверов приложений, которые слегка различаются по конфигурациям (набор работающих сервисов различен). Чтобы уберечь себя же от боли и унижения в шаблонах конфигов, я создал подгруппы. Теперь при запуске деплоя каждая подгруппа получает своё, родное.

Pavel
28.09.2017
16:12:47
Sergey
28.09.2017
16:13:41
Pavel
28.09.2017
16:14:09
потому когда я открываю инвентори хоста я вижу всю картину что там сконфигурировано

точнее файл хост-варс... в самом инвентори только декларируется какой хост в какой группе

Pavel
28.09.2017
16:17:56
просто я долго думал и не нашел другого решения для накатки, например нескольких vhost для nginx с разными конфигами.... пришлось делать список из набора перемнных для каждого vhostа

Pavel
28.09.2017
19:03:22
вот это и есть боль и унижение
"боль" - не то слово... там у меня нгинх фронед, еще и бекэнд есть ко всем вхостам, еще и разный бывает

Sergey
28.09.2017
19:41:49
"боль" - не то слово... там у меня нгинх фронед, еще и бекэнд есть ко всем вхостам, еще и разный бывает
Да, у меня коллега за соседним столом на подобное немало времени потратил, в итоге впихнув невпихуемое. Другое дело, что мне до сих пор непонятно, что ж за неведомая долбаная фигня заставляет разработчиков выносить чать внутренней логики приложения в конфиги nginx и считать, что у них с архитектурой всё хорошо ?)))

Evgeny
29.09.2017
09:12:37
Есть динамический openstack inventory - как добавить хосты которые не в openstack в вывод этого inventory?

Nazar
29.09.2017
09:15:02
дописать инвентори? )

Dmitrii
29.09.2017
09:23:03
Есть динамический openstack inventory - как добавить хосты которые не в openstack в вывод этого inventory?
Используй инвентори как директорию, положи рядом с тем инвентори опенстековским обычный статический. Ансибл померджит их

Dmitry
29.09.2017
09:45:33
Пошаговый Ansible туториал. Нужно только запустить и нажимать Enter ヅ. https://goo.gl/ju21Pk Основан на https://goo.gl/fUea4v

Страница 280 из 625