Mai
а какая OS
Sergey
Господа, этот чат - про Ansible, напоминаю.
+_-
Так это тема "как запускать ансибл если у тебя пароль на ключ"
Sergey
Так это тема "как запускать ансибл если у тебя пароль на ключ"
Написать свой плагин. Ответ тот же, как и при "хочу хранить ключ заволченным".
Sergey
Шутки незадорого, пожалуйста, в @cloud_flood. Я чувство юмора забыл во вчерашнем дне.
+_-
Ок
+_-
Вопрос по ансибле
+_-
При strategy linear какой параметр характеризует на скольких серверах запускается таска? fork ?
+_-
А как тогда с serail? какое дефолтное значение для него? бесконечно?
+_-
Второй вопрос. У меня с ансиблом вечная боль при выполнении длительных тасок, длительных, это больше часа, или, например 8 часов. Причем за эти 8 часов может и ssh отвалится. Что посоветуете, сделать кроме async 28800 ?
Anonymous
есть один таск: - name: all in one set_fact: servers_facts: "{{ servers_facts|default([]) + [ hostvars[item[0]][item[1]] ] }}" with_nested: - "{{ groups['servers_hash_check'] }}" - "{{ facts_params }}" в листе facts_params есть некоторые переменные с subelements(или как правильнее написать?): facts_params: - ansible_default_ipv4 - ansible_distribution - ansible_distribution_version - ansible_fqdn - ansible_machine_id - ansible_memtotal_mb # - "ansible_mounts.0.uuid" -- хз, как туда провалиться, json_query пишет ошибку. - ansible_processor - ansible_processor_vcpus В каком виде правильно написать ansible_mounts.0.uuid, например, чтобы я получал нужную часть из hostvars? dot notation и "[ansible_mounts][0][uuid]" тоже не принимает
+_-
А что за таски такие на 8 часов?..
Ну вот попросили сделать по всем клиентам по всему миру скан полумиллиона xml файлов (у каждого) каким-то бинарником
+_-
И нужно прям дождаться ответа от каждой?
Хороший вопрос. В идеале сфетчить резалт файл, но можно сделать это отдельной таской просто через сутки
Michael
Народ, привет! Хочу странного: запускать ansible-playbook по коммиту в gitlab через gitlab-ci. Ранеры/шманеры - настроил, линтеры бегают, а вот загвоздка с доступами: Пока у меня один раннер для этих плейбуков/ролей, но дальше может быть больше. Как, а главное можно ли корректно передать ssh private key через флаги ansible-playbook в виде plain text? Пока нашел только вариант писать из секретов в файлик, а файлик передавать через extra. А генерировать пару ключей для пользователя gitlab-runner не хочется. Короче пните в правильном направлении - наверняка ж кто-то уже сталкивался с такими задачами =|
Sergey
Зачем висеть на соединении.
Lamobot
systemd-run жи.
nohup <command> & :))
+_-
systemd-run жи.
Там часть на 6 центосе😔😔
+_-
nohup <command> & :))
А нужен ноухап или можно средствами ансибл запустить и забыть. Async с poll 0 не?
Michael
Это больше вопрос по гитлабу И насколько я помню, они они предлагают создавать ключ из переменной в виде претаска
логично по обоим пунктам не подумал в эту сторону Спасибо! Ушел копать глубже
Lamobot
А нужен ноухап или можно средствами ансибл запустить и забыть. Async с poll 0 не?
Да это я шучу. systemd-run лучше конечно. Можно и ансиблом с poll: 0
Sebor▂▅▇█▓▒░
Старый добрый echo $var |base64 -d >.ssh/id_rsa?
Ну там в доках у них готовый пример есть, я уже не вспомню деталей
+_-
Ладно. Спасибо
+_-
А всё таки, а если я хочу сделать, что бы оно само через 8 часов забрало резалт?
+_-
Получается надо таску fetch если файл есть и sleep если нету
Sebor▂▅▇█▓▒░
Я бы поменял общий подход в этой задаче - скрипт на серваке сам оповестит об окончании/запущит файл после завершения работы
Lamobot
Получается надо таску fetch если файл есть и sleep если нету
Не, хватит баша. Если уж ты запускаешь ансиблом, то можешь проверять через async_status https://docs.ansible.com/ansible/latest/user_guide/playbooks_async.html#run-tasks-concurrently-poll-0
Lamobot
А потом забрать то что нужно через fetch
+_-
Я бы поменял общий подход в этой задаче - скрипт на серваке сам оповестит об окончании/запущит файл после завершения работы
Это была моя первая мысль, но у некоторых (идиотов) почему-то оутгоинг tcp не работает, фаервол похоже, доступ к ним только через 2 джампхоста
+_-
тоесть от кого-то я могу курлом закинуть результат, но не от всех
+_-
Ладно, это снова не совсем ансибл. Ансибл я юзаю, потому что так всё же удобнее, чем pssh разводить
Sebor▂▅▇█▓▒░
Ну тогда просто запусти один раз на старт и второй раз через n времени на сбор
+_-
Да. Самое логичное. Спасибо, что то сам не догадался.
+_-
async: 999999 poll: 0
+_-
верно?
Sebor▂▅▇█▓▒░
Типа того, да
Anonymous
Строковые ключи словарей питона (и, внезапно, джинджи) пишутся в кавычках. ['ansible_mounts'][0]['uuid']
JSON: No JSON object could be decoded - ['ansible_mounts'][0]['uuid'] #-- хз, как туда провалиться, json_query пишет ошибку. ^ here Как его сделать json?
Anonymous
или опять неверный синтаксис?
Lamobot
ansible_mounts[0]['uuid']
Anonymous
ok: [localhost] => (item=[u'sanisimov-cmpt', u'ansible_default_ipv4']) ok: [localhost] => (item=[u'sanisimov-cmpt', u'ansible_distribution']) ok: [localhost] => (item=[u'sanisimov-cmpt', u'ansible_distribution_version']) ok: [localhost] => (item=[u'sanisimov-cmpt', u'ansible_fqdn']) ok: [localhost] => (item=[u'sanisimov-cmpt', u'ansible_machine_id']) ok: [localhost] => (item=[u'sanisimov-cmpt', u'ansible_memtotal_mb']) ok: [localhost] => (item=[u'sanisimov-cmpt', u'ansible_mounts[0][uuid]']) fatal: [localhost]: FAILED! => {"msg": "Unexpected templating type error occurred on ({{ servers_facts|default([]) + [ hostvars[item[0]][item[1]] ] }}): coercing to Unicode: need string or buffer, list found"}
Lamobot
А таск?
Anonymous
- name: all in one set_fact: servers_facts: "{{ servers_facts|default([]) + [ hostvars[item[0]][item[1]] ] }}" with_nested: - "{{ groups['servers_hash_check'] }}" - "{{ facts_params }}"
Lamobot
- name: all in one set_fact: servers_facts: "{{ servers_facts|default([]) + [ hostvars[item[0]][item[1]] ] }}" with_nested: - "{{ groups['servers_hash_check'] }}" - "{{ facts_params }}"
А, вы хотите извне задать факты о хосте, которые добавить в список? Так не получится получить подэлемент словаря. Пропишите просто loop по серверам и все нужные факты в таске пропишите
Anonymous
понял, спасибо
Elenhil
Господа, а можно как-нибудь плейбуку сказать где искать роли и групварсы? Чот я не нашел по документации
Anonymous
можно прямо путь указать
Anonymous
к каталогу роли
Elenhil
Мне per playbook
Elenhil
к каталогу роли
А групварсы?
Fire
А групварсы?
А они у вас как-то почему-то отдельно лежат?
Fire
Мне per playbook
Тогда прямой путь до роли.
Elenhil
А они у вас как-то почему-то отдельно лежат?
Смысл в чем - у меня есть набор плейбуков, которые используют одни и те же групварсы и роли, но нужны для разного. Половина для установки сервисов на машины, половина для установки этих же сервисов в пакере
Elenhil
Хочу их разнести по разным фолдерам, т.к. куча файлов в одном меня не сильно радует
Fire
Но поддерживать это, конечно никто не будет)
Fire
Ansible смотрит в ansible.cfg в текущей директории.
Elenhil
Сделай 2 окружения.
Не очень понял, два окружения - 2 группы?
Fire
Не очень понял, два окружения - 2 группы?
2 каталога, в каждом свои каталоги варсов и плейбуки.
Elenhil
Не, варсы должны быть одинаковыми
Fire
Эм...
Fire
Ты спрашивал как в плейбук подать групварсы)
Elenhil
Не из ./group_vars/groupname, а из /path/groupname
Sergey
Elenhil
Ты хочешь странного.
Я хочу уйти от тысяч плейбуков в одном фолдере
Sergey
Они лежат в inventories/<inventory_name>/group_vars