Nklya
Тут все зависит от проблемы.
Переписывать все с A на B, а потом на С можно бесконечно
Vadim
Так тут не переписывание, тут баш с пакетами заворачивают в энсибл
Nklya
И получается баш на ямле
Vadim
we need to go deeper. Dockerfile считается или приравнен к башу?
wndrfl
Nklya
Nikita
Всем привет, есть тут специалисты по ansible tower / awx ?
manefesto
специалистов нет
manefesto
но есть те кто пользуется
Nikita
но есть те кто пользуется
Можете объяснить использование ролей в awx? Я правильно понимаю, что роли я так же кладу в ansible/roles, а плейбуки например храню в git. При создании PROJECT я указываю git как источник плейбуков и при их запуске они сами знают где лежат роли?
manefesto
пиши в личку
Nikita
Ок
manefesto
Кто-нибудь использовал модуль at?
http://docs.ansible.com/ansible/latest/modules/at_module.html
мне нужно запускать задание в определенное время единожды
manefesto
а с этим модулем не понятно
manefesto
есть идеи ?
manefesto
мне допустим надо в полночь удалять созданный контейнер
Nklya
Странным задачам - странное решение
Nklya
Ну засунь в крон например
Leonid
А что с at не так? Это разовая фигня, если тебе одну задачу зашедулить.
Если каждую ночь, то крон
manefesto
У меня lxc, хочу в полночь грохать, а если не надо то через tags буду оставлять
manefesto
at не совсем правильно работает
точнее функционал немного другой
он запускает через N минут, а мне надо в точное время, есть вариант вычислять 00:00:00-now()
Salem
так сделай через крон
Timur
manefesto
не то, хочу через штатный модуль at
Timur
а, ну тогда проще патч для модуля написать :)
manefesto
пытаюсь вычислить разницу между текущим временем и полночью
Timur
def add_job(module, result, at_cmd, count, units, command, script_file):
at_command = "%s -f %s now + %s %s" % (at_cmd, script_file, count, units)
rc, out, err = module.run_command(at_command, check_rc=True)
if command:
os.unlink(script_file)
result['changed'] = True
def delete_job(module, result, at_cmd, command, script_file):
for matching_job in get_matching_jobs(module, at_cmd, script_file):
at_command = "%s -d %s" % (at_cmd, matching_job)
rc, out, err = module.run_command(at_command, check_rc=True)
result['changed'] = True
if command:
os.unlink(script_file)
module.exit_json(**result)
Timur
в принципе, достаточно просто, и очень странно, что до сих пор не впилили поддержку
Timur
:)
Timur
(очень коряво, спорить не буду)
Mikhail
Парни, в чем может быть трабла. Файл_с_переменной.yml:
my_top_secret: !vault |
$ANSIBLE_VAULT;1.1;AES256
62623238356436383836616130613863633431313631346263346236646261613738333335356434
6239653361333562653734646239386332643962353433630a643539643932643839626134666661
30326266363335333364386131353366653930346661316134353837303566393137336634626336
6437377435323036380a623532353534656234316131643123326663306664303430366164336539
6332
Mikhail
В роли таска:
- name: Include env vars
include_vars:
dir: "{{ путь_до_моей_чудной_переменной }}"
extensions:
- yml
Mikhail
А в консоли следующее:
[WARNING]: Failure using method (v2_runner_on_ok) in callback plugin (<ansible.plugins.callback.default.CallbackModule object at 0x7f6df6f89410>): u'мой_расшифрованный_секрет' is not JSON
serializable
Mikhail
ЧЯДНТ?
Nikita
Ребят, а кто может объяснить как работает tests в роли? Или ссылку кинуть, не могу найти
Anonymous
всем доброго времени суток, кто может поделится книгами на русском языке по ANSIBLE зарание благодарен
Nklya
Только такое вот
http://dmkpress.com/catalog/computer/os/978-5-97060-513-4/
Igor
Название интересное
Ilmar
Добрый день или для кого как. Обновил тут ансибл в убунте неглядя до 2.5.2. В результате перестала работать дивная конструкция по определению узла, на котором отрабатывает плейбук, в момент его исполнения. Узлы представлялись в виде host-X, где X число, запрашиваемое в плейбуке. Выглядело так:
Ilmar
---
- name: 'Что-то делаем с хостом'
hosts: 'host-{{host_num}}'
vars_prompt:
- name: "host_num"
prompt: "Enter host_num"
private: no
tasks:
Ilmar
В 2.4 данный изврат прокатывал, теперь внезапно генерит ошибку (что в принципе ожидаемо). Кто-то подобные вещи использует? Есть обходной путь?
Vadim
--limit же
Vadim
зачем этот кошмар
Ilmar
мне надо один узел из 200 условно
Ilmar
при этом жить может только он один, а остальных нет
Ilmar
но ок, пойду освежу знания по ограничениям
Salem
это может иметь смысл если ты кому-то неопытному этот плейбук передаешь
Salem
чтобы он ручками вбил номер
Salem
а если для себя, юзай лимит, как выше сказали
Ilmar
в этом был смысл, когда я это писал всё, да. мне показалось так меньше ошибок. плюс сам номер тоже внутри используется для всякого
Pavel
Vadim
сделай плейбук где выбирается хост, добавляется в пустую группу - и поехали
George
Я бы просто run_once: true повесил.
Andrey
Добрый день! jinja шаблон не видит ansible_default_ipv4
Для проверки
ansible -i ./hosts -m debug -a "var=ansible_default_ipv4" -b db
db2.***.ru | SUCCESS => {
"ansible_default_ipv4": "VARIABLE IS NOT DEFINED!"
}
Andrey
излазил инет не пойму в чем дело
Andrey
ansible 2.5.2
Andrey
как гвоорится вчера работало
Vadim
Andrey
смотрел
Andrey
route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 *.*.165.1 0.0.0.0 UG 0 0 0 eth0
*.*.165.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Andrey
@vrutkovs
Vadim
Andrey
а факты собирал?
ansible all -i localhost, -m setup -c local
...
"ansible_default_ipv4": {
"address": "***.***.165.185",
"alias": "eth0",
"broadcast": "***.***.165.255",
"gateway": "***.***.165.1",
"interface": "eth0",
"macaddress": "**:**:**:**:**:**",
"mtu": 1500,
"netmask": "255.255.255.0",
"network": "***.***.165.0",
"type": "ether"
},
Andrey
Нет идей?
Nklya
ну определись для начала с чем связана проблема.
Если это раньше нормально работало - откатись на предыдущую версию.
А потом смотри ченжлог 2.5
Andrey
Я не менял версию просто хостер перенёс сервер из тестового в прод тариф и уверяет что все идентично. Если бы я знал с чем связана давно бы решил
Vadim
ansible all -i localhost, -m setup -c local
...
"ansible_default_ipv4": {
"address": "***.***.165.185",
"alias": "eth0",
"broadcast": "***.***.165.255",
"gateway": "***.***.165.1",
"interface": "eth0",
"macaddress": "**:**:**:**:**:**",
"mtu": 1500,
"netmask": "255.255.255.0",
"network": "***.***.165.0",
"type": "ether"
},
так вот же она, заполнена после сбора фактов
Andrey
Да это на сервере выполнил а на моем не работает
Andrey
Вроде как все норм а переменная пуста
Sergey
issue говорит о том, что в случае только одного интерфейса этой переменной не будет
Sergey
ты это проверил?
Andrey
До этого был тоже один
Andrey
Луп и eth0
Andrey
Хз копну туда еще
Dorian
Что не так с таском?
- name: allow access from prometheus collector
blockinfile:
path: /etc/rc.d/rc.firewall
insertafter: "iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT"
block: |
iptables -A INPUT -s {{ hostvars[item].ansible_default_ipv4.address }} -p tcp --dport 9100 -j ACCEPT -m comment --comment "Ansible: Access to node_exporter from {{ item }} prom"
marker: "# {mark} allow host connect to prometheus node_exporter for {{ item }}"
when: "{{ item.prometheus is defined }}"
with_items:
- "{{ groups.all }}"
when не отрабатывает
Dorian
Хочу перебрать все хосты, но выбрать только тот у кого определена переменная
Natalia
Попробуй так
when: "{{ item.prometheus }}" is defined
with_items:
- "{{ groups.all }}"