Alex
Это вообще без with_dict получается? Пробовал так "{{ aaa[item.key].cc1 }}" - не работает.
https://docs.ansible.com/ansible/2.4/playbooks_loops.html#looping-over-subelements Вот то что тебе нужно
mandrivaman 👽
глупых вопросов псто. есть набор IP-адресов в виде файла hosts для ansible. задача: плейбуком собрать хостнеймы со всех этих машин в новый инвентори.
mandrivaman 👽
пытаюсь сделать так: --- - hosts: all remote_user: SOME_USERNAME become: yes become_method: sudo tasks: - name: Set hostname on conf file lineinfile: create: yes path: /SOMEPATH line: Hostname={{ ansible_hostname }} ... но файл не создается, а если он уже есть - не меняется
mandrivaman 👽
я понял. оно пишет в файл на той машине, к которой обращается. а как бы ее перенаправить на файл с локальной машины?
Sergey
я понял. оно пишет в файл на той машине, к которой обращается. а как бы ее перенаправить на файл с локальной машины?
Ты запускаешь на удалённом хосте программу на Python, которая пишет в локальный файл. В общем виде перенаправления не существует. Тебе нужна другая программа, то есть другой модуль Ansible.
Sergey
Озвучь первичную задачу.
mandrivaman 👽
Озвучь первичную задачу.
инвентори содержит только IP-адреса нужно поправить инвентори - допилить хостнеймы
Sergey
инвентори содержит только IP-адреса нужно поправить инвентори - допилить хостнеймы
Не надо так. Исправлять бардак не очень подходящим инструментом - путь к плохим впечатлениям об инструменте. Но если ты готов к боли и унижению - изволь: тебе нужен play с gather_facts: true и tasks: []. После этого делаешь простейший таск для localhost, в котором полученный словарь (всё собранное будет лежать в hostvars[inventory_hostname]) пишешь в локальный файл.
Nklya
Если это один раз сделать нужно, это просто скрипт сделать какой-нибудь
Danis
https://docs.ansible.com/ansible/2.4/playbooks_loops.html#looping-over-subelements Вот то что тебе нужно
Это не совсем то. Но на той странице много with_..., возможно что-то найдется.
Sergey
Есть vars/main.yml: aaa: b1: cc1: rara.tgz cc2: tata.tgz b2: cc1: hoho.tgz cc2: lala.tgz b3: cc1: tiki.tgz cc2: gogi.tgz Как обратиться ко всем cc1? Нужно что-то вроде aaa.*.cc1 Попробовал так, не работает: - name: test copy: src: "{{ item.cc1 }}" dest: /tmp/ with_items: "{{ aaa }}"
Какой результат нужен? Классический вариант - with_dict: "{{ aaa }}" Тогда item.key будет пробегать b1, b2, b3, а item.value - соответственно, вложенные dict'ы. item.value['cc1'] - искомая штука.
Constantin
Подскажите, как сделать распрыжку через несколько хостов? Допустим у меня есть хост 1 и хост 3. С хоста 1 хочу запустить плэйбук на хосте 3, но подключиться к хосту 3 можно только с хоста 2. ssh на host 2 -> ssh на хост 3
Nikolay
И снова привет. Продолжим виндострадания :) Есть задача устанавливать питон разных версий на винду, но там аргументы отличаются для установки и необходимые действия. На ум приходит следующее решение: Завести в роли переменную типа python_version_to_install, и в зависимости от значений 2 или 3 (которое будет передаваться плейбуком) - инклюдить нужный файл в tasks/main.yml Годится так? Или можно более изысканно решить эту задачу?
manefesto
нооорм
manefesto
похожее есть для разных дистрибутивов линукса, если редхат, то делаем одно, есть дебиан то другое
Nikolay
а в догонку еще один вопрос про организацию инвентори. У себя пришел вот к такой схеме. . └── inventories └── build-agents ├── default-pool │ ├── group_vars │ │ └── common-agents │ │ ├── vars.yml │ │ └── vault.yml │ └── hosts.yml ├── test2-pool │ ├── group_vars │ │ └── test2-agents │ │ ├── vars.yml │ │ └── vault.yml │ └── hosts.yml └── test-pool ├── group_vars │ └── test-agents │ ├── vars.yml │ └── vault.yml └── hosts.yml Из задачи - накатывание на разные группы хостов накатывать немного разный набор софта. Для каждой отдельной группы хостов будет отдельный плейбук. А роли сами будут из общей папки с ролями браться
Nikolay
волт-файлы - для хранения паролей всяческих пользовательских. Я пока туда переменные "секретные" только вынес, разобраться в волтом это уже следующая задача будет, как только костяк общих ролей напишу под винду.
Nikolay
спасибо, сохраню себе структуру для инфы :)
пожалуйста) вроде и не секрет. просто я пришел к такому виду инвентори, после того как официальную документация по организации статического инвентори покурил немного :)
Pavel
у меня вынесены в отдельный файл только "большие" значения - типа ссл ключей
Nikolay
я в вольт пока не лез глубоко. обзорно по верхам почитал. да, видел что можно отдельные переменные шифровать. не особо понял пока, как там с ключевыми файлами работать для расшифровки. Ну в тем вол-файлах что у меня - планируетс яхранить пользвательские пароли, личензионные ключи для некоторого софта, и содержимое ssh ключей
Nikolay
смысл в том, что с разных групп тачек, сервис работает из под разных пользователей, и у каждого пользователя есть свой открытый/закрытый ключик для гита, для доступа только к нужным репозиториям. вот значения ключей и хочу подкладываь в волт файл
Alexander
Ребят, а можно ли сделать чтобы пост задача выполнялась всегда? Нашел пока blocks но не уверен что это именно то что надо
Alexander
Можно. В blocks есть always
Но блок же ссылается на конкретный таск? А мне чтобы если зафейлился любой из тасков или незафейлился не один то исполнить пост таск
bebebe
Такого ещё нету, в комментах есть предложение с тем же blocks и include
Maksim
Всем привет. А не подскажите, нет ли какой документации/гайда по AWX ?
Славик
Есть по tower
Славик
Тоже самое
manefesto
надо видосик смотреть
manefesto
по AWX
manefesto
иначе нихера не понятно
Alexander
Такого ещё нету, в комментах есть предложение с тем же blocks и include
Хотя в моем случае и так не получится. Я запускаю плейбук, вызываю роль которая создает ключи, потом исполняется другая роль, после ее исполнения запускается первая роль но с тегом на удаление ключей
bebebe
Хотя в моем случае и так не получится. Я запускаю плейбук, вызываю роль которая создает ключи, потом исполняется другая роль, после ее исполнения запускается первая роль но с тегом на удаление ключей
Я думаю вам надо уделить время чтобы понять как поркфакторить ваш текущий поход и понять как его пределать чтобы правильно обрабатывать исключительные ситуации
[IPT] Dmitry
Народ, а ssh_args можно как-то в playbook/роль задать?
citius
спросил в ru_gitlab, продублирую сюда. т.к. тема таки смежная кто нить знает какой TERM (или что еще блин) надо выставить в gitlab-ci пайплайне, чтобы утилиты умеющие в цветной вывод, делали его цветным? например у ansible можно в конфиге выставить force_color, и он выводит нормально. а ту же molecule я никак заставить не могу, а в обычной серой каше хрен что разберешь. ( ужо пробовал варианты TERM=linux/xterm/ansi/xterm-256color, нифига ( в самой молекуле через конфиг тоже не получается включить. в обычной ssh консольке все красиво, через раннер тоже самое - хрен. (
BonumTellurian
Запускаю плейбуком через модуль shell на выполнение скрипты .sh маленькие отрабатывают без вопросов. Есть один большой, который много разного ставит, прописывает много разного в разные файлы. Одним словом работает очень долго. К концу выполнения скрипта отваливается. Такое впечатление, что по какому-то тайм-ауту. С самим скриптом вроде всё ок - если запускаю его вручную, подключившись по ssh , то отрабатывает без вопросов. На что обратить внимание? Какие есть параметры? Что почитать, в какую сторону копать? Гуглил, пробывал запускать параллельно асинхронную задачу и т.д. Пока ничего не помогает. Смотрел на параметры ansible, в названии которых timeout, но по описанию вроде бы ни один не подходит. Подскажите пожалуйста, задайте направление движения.
BonumTellurian
Ansible выдает ошибку.
bebebe
Понятно
BonumTellurian
Задача не выполнена.
BonumTellurian
Лог файл (который пишет скрипт) показывает, что осталось ещё файлов 1000 скопировать.
BonumTellurian
Тоже самое видно при запуске плейбука с опцией -v
BonumTellurian
Оставшиеся файлы ничем не отличаются от уже скопированных. Доступ есть, место есть. Запущенный локально на сервере скрипт отрабатывает. diff логов между запущенным вручную, и с помощью ansible показывает, что выполнение идентично. Только тот, что ansible немного короче.
BonumTellurian
Не записал ((( ошибку. Завтра смогу записать.
BonumTellurian
Дальше в списке имен файлов нет никаких необычных символов, которые могли бы ломать терминал.
bebebe
Прохладная история
alx
?
BonumTellurian
Нет. Только с одним -v
BonumTellurian
Логично. Попробую. Просто уже запарился. Скрипт доооолгий. Пока проверял все теории - рабочий день закончился (
Anonymous
Утро доброе всем. Подскажите пожалуйста, пытаюсь в одной из тасков в роли добавить ssh ключи пользователей на сервер. ansible ругается на то, что не может найти по пути нужные файлы с ключами. Где я тут накосячил?
Anonymous
key: "{{ lookup('file', '{{ role_path }}/files/ssh_keys/{{ item.username }}.pub') }}"
Anonymous
Вот полностью ямл - https://gist.github.com/RenderQwerty/11072757527efb3f26deff015a767d9d
Womchik
у тебя вторая таска вправо съехала
Anonymous
Мда, спасибо большое )
Anonymous
Как-то не заметил )
Alex
Кто что предложит для standalone работы ансибла? Как бы это реализовать?
manefesto
Кто что предложит для standalone работы ансибла? Как бы это реализовать?
таскать с гита обновления и запускать плейбуки
manefesto
я слышал про это, но суть до конца не уловил
Alex
Ну есть прод, он к инету не подключен. Ты можешь придти с флешкой в ДЦ, а рядом будет человек с автоматом. И ты должен развернуть инфраструктуру
Alex
Никаких гитов, ничего нет.
Tadeusz
Такое в тинькофф наблюдал, когда им разворачивал на джанге проект в офисе)
Tadeusz
Редхат и исходники
Alex
Но есть же всякие роли которые тянут с инет реп. Помимо того что есть исходники ос, как установить всякий софт пакетный для настройки ос. Ссш, судо, нтп, постгресса и кучу остального?