mandrivaman 👽
глупых вопросов псто.
есть набор IP-адресов в виде файла hosts для ansible.
задача: плейбуком собрать хостнеймы со всех этих машин в новый инвентори.
Vladislav 👻
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 👽
я понял. оно пишет в файл на той машине, к которой обращается.
а как бы ее перенаправить на файл с локальной машины?
mandrivaman 👽
Sergey
Озвучь первичную задачу.
mandrivaman 👽
Озвучь первичную задачу.
инвентори содержит только IP-адреса
нужно поправить инвентори - допилить хостнеймы
Sergey
инвентори содержит только IP-адреса
нужно поправить инвентори - допилить хостнеймы
Не надо так. Исправлять бардак не очень подходящим инструментом - путь к плохим впечатлениям об инструменте.
Но если ты готов к боли и унижению - изволь: тебе нужен play с gather_facts: true и tasks: []. После этого делаешь простейший таск для localhost, в котором полученный словарь (всё собранное будет лежать в hostvars[inventory_hostname]) пишешь в локальный файл.
Nklya
Если это один раз сделать нужно, это просто скрипт сделать какой-нибудь
Danis
Sergey
Danis
mandrivaman 👽
Vadim
Constantin
Подскажите, как сделать распрыжку через несколько хостов?
Допустим у меня есть хост 1 и хост 3.
С хоста 1 хочу запустить плэйбук на хосте 3, но подключиться к хосту 3 можно только с хоста 2.
ssh на host 2 -> ssh на хост 3
Pavel
Nikolay
И снова привет. Продолжим виндострадания :) Есть задача устанавливать питон разных версий на винду, но там аргументы отличаются для установки и необходимые действия. На ум приходит следующее решение:
Завести в роли переменную типа python_version_to_install, и в зависимости от значений 2 или 3 (которое будет передаваться плейбуком) - инклюдить нужный файл в tasks/main.yml
Годится так? Или можно более изысканно решить эту задачу?
manefesto
нооорм
Pavel
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
Из задачи - накатывание на разные группы хостов накатывать немного разный набор софта.
Для каждой отдельной группы хостов будет отдельный плейбук.
А роли сами будут из общей папки с ролями браться
a1eXei
Nikolay
волт-файлы - для хранения паролей всяческих пользовательских.
Я пока туда переменные "секретные" только вынес, разобраться в волтом это уже следующая задача будет, как только костяк общих ролей напишу под винду.
Nikolay
спасибо, сохраню себе структуру для инфы :)
пожалуйста)
вроде и не секрет. просто я пришел к такому виду инвентори, после того как официальную документация по организации статического инвентори покурил немного :)
Pavel
Pavel
у меня вынесены в отдельный файл только "большие" значения - типа ссл ключей
Nikolay
я в вольт пока не лез глубоко. обзорно по верхам почитал. да, видел что можно отдельные переменные шифровать. не особо понял пока, как там с ключевыми файлами работать для расшифровки.
Ну в тем вол-файлах что у меня - планируетс яхранить пользвательские пароли, личензионные ключи для некоторого софта, и содержимое ssh ключей
bebebe
Nikolay
смысл в том, что с разных групп тачек, сервис работает из под разных пользователей, и у каждого пользователя есть свой открытый/закрытый ключик для гита, для доступа только к нужным репозиториям. вот значения ключей и хочу подкладываь в волт файл
Constantin
Alexander
Ребят, а можно ли сделать чтобы пост задача выполнялась всегда? Нашел пока blocks но не уверен что это именно то что надо
Womchik
bebebe
Alexander
Можно. В blocks есть always
Но блок же ссылается на конкретный таск? А мне чтобы если зафейлился любой из тасков или незафейлился не один то исполнить пост таск
bebebe
bebebe
Такого ещё нету, в комментах есть предложение с тем же blocks и include
Maksim
Всем привет. А не подскажите, нет ли какой документации/гайда по AWX ?
Славик
Есть по tower
Славик
Тоже самое
Alexander
manefesto
надо видосик смотреть
manefesto
по AWX
manefesto
иначе нихера не понятно
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, но по описанию вроде бы ни один не подходит.
Подскажите пожалуйста, задайте направление движения.
bebebe
Запускаю плейбуком через модуль shell на выполнение скрипты .sh маленькие отрабатывают без вопросов. Есть один большой, который много разного ставит, прописывает много разного в разные файлы. Одним словом работает очень долго. К концу выполнения скрипта отваливается. Такое впечатление, что по какому-то тайм-ауту.
С самим скриптом вроде всё ок - если запускаю его вручную, подключившись по ssh , то отрабатывает без вопросов.
На что обратить внимание? Какие есть параметры? Что почитать, в какую сторону копать?
Гуглил, пробывал запускать параллельно асинхронную задачу и т.д. Пока ничего не помогает. Смотрел на параметры ansible, в названии которых timeout, но по описанию вроде бы ни один не подходит.
Подскажите пожалуйста, задайте направление движения.
Поясните что такое "отваливается"
BonumTellurian
Ansible выдает ошибку.
bebebe
Понятно
alx
BonumTellurian
Задача не выполнена.
BonumTellurian
Лог файл (который пишет скрипт) показывает, что осталось ещё файлов 1000 скопировать.
BonumTellurian
Тоже самое видно при запуске плейбука с опцией -v
BonumTellurian
Оставшиеся файлы ничем не отличаются от уже скопированных. Доступ есть, место есть. Запущенный локально на сервере скрипт отрабатывает. diff логов между запущенным вручную, и с помощью ansible показывает, что выполнение идентично. Только тот, что ansible немного короче.
BonumTellurian
Не записал ((( ошибку. Завтра смогу записать.
BonumTellurian
Дальше в списке имен файлов нет никаких необычных символов, которые могли бы ломать терминал.
bebebe
Прохладная история
alx
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 работы ансибла? Как бы это реализовать?
Sergey
manefesto
manefesto
я слышал про это, но суть до конца не уловил
Alex
Ну есть прод, он к инету не подключен. Ты можешь придти с флешкой в ДЦ, а рядом будет человек с автоматом. И ты должен развернуть инфраструктуру
Alex
Никаких гитов, ничего нет.
Tadeusz
Такое в тинькофф наблюдал, когда им разворачивал на джанге проект в офисе)
Tadeusz
Редхат и исходники
Alex
Но есть же всякие роли которые тянут с инет реп. Помимо того что есть исходники ос, как установить всякий софт пакетный для настройки ос. Ссш, судо, нтп, постгресса и кучу остального?