Nklya
Тут все зависит от проблемы. Переписывать все с A на B, а потом на С можно бесконечно
Ivan
А не надо кодить. Вон уже 30+ лет кодют и что?
30+ маловато что-то. Если брать программирование в текстовых файлах, то уже даже 50+, можно говорить «полвека уже кодють, а всё только хуже становится»
Vadim
Так тут не переписывание, тут баш с пакетами заворачивают в энсибл
Nklya
И получается баш на ямле
Vadim
we need to go deeper. Dockerfile считается или приравнен к башу?
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 не так? Это разовая фигня, если тебе одну задачу зашедулить. Если каждую ночь, то крон
Timur
мне допустим надо в полночь удалять созданный контейнер
Я бы запускал контейнер с --rm, а потом бы просто делал restart
manefesto
У меня lxc, хочу в полночь грохать, а если не надо то через tags буду оставлять
manefesto
at не совсем правильно работает точнее функционал немного другой он запускает через N минут, а мне надо в точное время, есть вариант вычислять 00:00:00-now()
Salem
так сделай через крон
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
пытаюсь вычислить разницу между текущим временем и полночью
$ expr `expr \`date --date="+1 day 00:00" +%s\` - \`date +%s\`` / 60 537
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
в этом был смысл, когда я это писал всё, да. мне показалось так меньше ошибок. плюс сам номер тоже внутри используется для всякого
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
как гвоорится вчера работало
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
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
Я не менял версию просто хостер перенёс сервер из тестового в прод тариф и уверяет что все идентично. Если бы я знал с чем связана давно бы решил
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 }}"