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
Константин
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
Ecklory
27.09.2017
19:51:11
Ребят, а где документацию по разработке плейбуков найти? %)
Konstantin
27.09.2017
19:51:42
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
Для начала - какие-нибудь простые, потом - что-то безбашенное и упоротое.
Ну типа развёртывания кластеров с разными ролями, с разным числом серверов.
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
Ecklory
28.09.2017
08:32:59
Vit
28.09.2017
08:34:17
Это у каждого индивидуально выйдет) но так, snippets и готовые роли можно подглядывать
Ecklory
28.09.2017
08:53:22
У меня относительно простые задачи и их всего две на данный момент.
1. Выполнение apt update && apt -y full-upgrade на всех хостах
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
Идея разных ролей для разных хостов чуда как хороша
Чего только люди не напридумывают
Sergey
28.09.2017
15:53:59
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
потому когда я открываю инвентори хоста я вижу всю картину что там сконфигурировано
точнее файл хост-варс...
в самом инвентори только декларируется какой хост в какой группе
Sergey
28.09.2017
16:17:38
Pavel
28.09.2017
16:17:56
просто я долго думал и не нашел другого решения для накатки, например нескольких vhost для nginx с разными конфигами....
пришлось делать список из набора перемнных для каждого vhostа
Sergey
28.09.2017
16:19:43
Pavel
28.09.2017
19:03:22
Sergey
28.09.2017
19:41:49
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
Evgeny
29.09.2017
09:23:44
Dmitry
29.09.2017
09:45:33
Пошаговый Ansible туториал. Нужно только запустить и нажимать Enter ヅ.
https://goo.gl/ju21Pk
Основан на https://goo.gl/fUea4v