Ilya
Гайз, может кто подскажет. Пытаюсь настроить ldap dynamic inventory в awx, но встаёт проблема что не парсит job для синхронизации. Сам скрипт работает если через ansible запустить, а как заставить работать в awx, не получается. Скрипт https://github.com/joshinryz/ansible_ldap_inventory
Ilya
Лог https://pastebin.com/AuT8uZVy
Ilya
Как пробовал запустить: 1. В inventory scripts скопипастил python script 2. Создал inventory, создал source, в нем выбрал custom inventory script, указал соответствующие variables
Petr
Доброго дня! Можно ли каким-то хитрым способом передавать переменную в границы списка? Задача: Передать число хостов, на которые выкатить релиз hosts: "{{ (groups['web_servers'])[0:15]}}" Но не могу вместо 15 указать переменную
Anton
Как пробовал запустить: 1. В inventory scripts скопипастил python script 2. Создал inventory, создал source, в нем выбрал custom inventory script, указал соответствующие variables
если правильно понимаю, то awx у тебя в докере, если так, то для начала проверить работает ли в принципе в докере питоновский скрипт который должен собирать тебе инвентарь из ldap По крайней мере у меня на docker exec -it awx_web "pip3 list install" не выдает python-ldap а в ишью к этому модулю пишут о том что не ругается питон на отсутствие необходимых библиотек, т.е. питон-лдап
Petr
ругаицца ansible-playbook -i list_test_hosts test.yml -e number=100 ERROR! Unexpected templating type error occurred on ({{ (groups['all'])[:number]}}): slice indices must be integers or None or have an __index__ method
Ilya
Другим способом еще настроил и даже работает ldap dynamic inventory. 1. В контейнер awx_task, в папку модулей запихнул скрипт, включил плагин в ansible.cfg 2. В awx, создал inventory, в source указал from project, на проект где лежит чисто один ldap_inventory.yml. Такой способ работает, но если запустить job template, то по цепочке пытается запустить проект с ldap_inventory.yml и уходит в бутлуп. https://pastebin.com/pCv0hrq2
Petr
Можно сделать отдельную подгруппу в инвентаре
да, сейчас так и делается. но решение через переменную мне казалось лучше
Petr
почему не можешь? ```hosts: "{{ groups['web_servers'][:number]}}"``` ?
О, крутяк. вот так срабтоало hosts: "{{ groups['all'][:number|int:]}}" Спасибо!
Sergei
братишки, ни у кого плугина не завалялось для работы с minio?
Sergei
aws_s3 не работает?
не покрывает функционал минио, или не туда смотрю. Нужно добавлять юзера с кастомными полиси и кредами
Anton
Другим способом еще настроил и даже работает ldap dynamic inventory. 1. В контейнер awx_task, в папку модулей запихнул скрипт, включил плагин в ansible.cfg 2. В awx, создал inventory, в source указал from project, на проект где лежит чисто один ldap_inventory.yml. Такой способ работает, но если запустить job template, то по цепочке пытается запустить проект с ldap_inventory.yml и уходит в бутлуп. https://pastebin.com/pCv0hrq2
Мне не совсем понятно, в принципе он выдает ли то что нужно при запуске в качестве динамического инвентаря. Потому что как я понял ему требуется именно внешним файлом передавать настройки того откуда и с какой учеткой он будет собирать инвентарь. Под awx его исходя из этого надо переписывать для того чтобы он понимал параметры заданные из командной строки или из переменных окружения. Или каким-то образом в ту временную директорию в которой будет работать этот питоновский скрипт прокинуть файл с настройками. Если правильно понимаю он каждый раз когда дергает скрипт динамического инвентаря загоняет его во вновь созданную директорию в темпе и запускает. Вариант прописать этот питоновский модуль в башевский скрипт вместе с файлом настроек и результат выкатывать куда-то в директорию которую после себя не удалит задача создания инвентаря. И потом смотреть чего ему там не понравилось.
Ilya
Мне не совсем понятно, в принципе он выдает ли то что нужно при запуске в качестве динамического инвентаря. Потому что как я понял ему требуется именно внешним файлом передавать настройки того откуда и с какой учеткой он будет собирать инвентарь. Под awx его исходя из этого надо переписывать для того чтобы он понимал параметры заданные из командной строки или из переменных окружения. Или каким-то образом в ту временную директорию в которой будет работать этот питоновский скрипт прокинуть файл с настройками. Если правильно понимаю он каждый раз когда дергает скрипт динамического инвентаря загоняет его во вновь созданную директорию в темпе и запускает. Вариант прописать этот питоновский модуль в башевский скрипт вместе с файлом настроек и результат выкатывать куда-то в директорию которую после себя не удалит задача создания инвентаря. И потом смотреть чего ему там не понравилось.
По умолчанию, как должен работать dynamic inventory по скрипту в awx? Закидываю скрипт в inventory scripts, создаю inventory и в нем источник указать этот скрипт и дополнительно variables какиенить?
Anton
По умолчанию, как должен работать dynamic inventory по скрипту в awx? Закидываю скрипт в inventory scripts, создаю inventory и в нем источник указать этот скрипт и дополнительно variables какиенить?
Примерно так, только у меня был bash скрипт который я вынес потом в github и куча переменных environment которые он читает для своего выполнения. У тебя на каждый вызов того что ты заснул в скрипт динамического инвентаря AWX создает директорию, в неё застывает этот скрипт и вызывает его. Откуда скрипт должен взять настройки для подключения к ldap?
Denis
Всем привет. Пишу модуль. В него передаю параметром имя файла который должен лежать в files в роли. Модуль получает это имя, но не путь. Вопрос: как правильно получать путь до файла. Например в модуле copy src может быть файлом который лежит в files, но покопавшись в исходниках (https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/files/copy.py#L522) не нашел никаких преобразований и подстановок
Denis
Да, но в copy например как-то реализовано что он сам находит без подстановки
Alexander
Подскажите, можно как-то передавать хостнейм параметрами при запуске?
Nik
Всем привет, есть такой вопрос: есть настроеный сервер awx, с которого запускаются плейбуки и все ок. Есть хосты, которые создаются на стороне. Есть задача применять к этим хостам плейбук, не зная его ip. То есть можно ли как-то сообщить awx со стороны целевой машины, что на ней нужно выполнить какой-то плейбук или хотя бы добавить этот хост в инвентори со стороны целевого хоста
Nik
что-то типа webhook
Alexander
ansible_hostname?
В документации нашел ansible_host, но не пойму как передать его аргументом
Павел
спасибо!
на здоровье)
Div
расти большой, не будь лапшой.
TAB
Коллеги, добрый день! Помогите пожалуйста с таким вопросом: делаю запрос через модуль uri к gitlab - есть ли такая-то ветка ответ сохраняю в переменную branch_exist Теперь мне из ответа нужно достать собственно статус. У меня пока очень туго идет понимание как получать нужное мне значение в сложных структурах Пробую так: - name: show status in branch_exist.results debug: msg: "{{ item.status }}" loop: "{{ branch_exist.results }}" В ответе получаю TASK [gitlab : show status in branch_exist.results] ***************************************************************************************************************************************************************************************** Wednesday 29 April 2020 14:44:01 +0300 (0:00:00.217) 0:00:01.660 ******* ok: [localhost] => (item={'redirected': False, 'url': 'https://gitlab.***.ru/api/v4/projects/78/repository/branch=ccng-***', 'status': 404, 'connection': 'close', 'content_length': '25', 'date': 'Wed, 29 Apr 2020 11:44:01 GMT', 'content_type': 'application/json', 'server': 'nginx', 'cache_control': 'no-cache', 'vary': 'Origin', 'x_request_id': 'Y8gNDXoQRf9', 'x_runtime': '0.006217', 'msg': 'HTTP Error 404: Not Found', 'elapsed': 0, 'changed': False, 'json': {'error': '404 Not Found'}, 'invocation': {'module_args': {'url': 'https://gitlab.***.ru/api/v4/projects/78/repository/branch=ccng-***', 'validate_certs': False, 'method': 'GET', 'status_code': ['200', '201', '400', '404'], 'headers': {'PRIVATE-TOKEN': '***'}, 'force': False, 'http_agent': 'ansible-httpget', 'use_proxy': True, 'force_basic_auth': False, 'body_format': 'raw', 'return_content': False, 'follow_redirects': 'safe', 'timeout': 30, 'follow': False, 'url_username': None, 'url_password': None, 'client_cert': None, 'client_key': None, 'dest': None, 'body': None, 'src': None, 'creates': None, 'removes': None, 'unix_socket': None, 'mode': None, 'owner': None, 'group': None, 'seuser': None, 'serole': None, 'selevel': None, 'setype': None, 'attributes': None, 'content': None, 'backup': None, 'remote_src': None, 'regexp': None, 'delimiter': None, 'directory_mode': None, 'unsafe_writes': None}}, 'failed': False, 'item': '78', 'ansible_loop_var': 'item'}) => { "msg": "404" } Вопрос №1: что нужно почитать, кому помолиться или какой танец танцевать, чтобы наконец досконально понять, как обращаться с данными Вопрос №2: как мне из ответа получить только значение status?
Alexander
Подскажите, можно как-то передавать хостнейм параметрами при запуске?
Пока писал перефразированный вопрос, нашел ответ. В мане сказано -i, --inventory, --inventory-file specify inventory host path or comma separated host list То есть надо писать -i "host1," обязательно с запятой!
Alexander
@Lex_hha
Alexander
До этого я мучался без запятых
TAB
Свой второй вопрос решил через from_json. Первый все равно мучает
Alex
а то нефига не понятно
TAB
https://xpaste.pro/p/rJ0jDLQn
TAB
вот, пожалуйста
TAB
сейчас я получаю ok: [localhost] => (item=404) => { "msg": 404 }
TAB
что меня устраивает
TAB
теперь я могу when. Но все равно у меня каша в голове о том, как вытаскивать данные из переменных
TAB
или вот был случай когда в переменной данные имели yaml: - key1: value key2: value - key1: value key2: value я так и непонял, как мне вытащить значение key2
TAB
наверное я кривой, но из документации как то туго понимается
TAB
вот сделал закладку в FF: location: https://docs.ansible.com/ansible/latest/index.html#stq=%s&stp=1 keyword: as
TAB
с ее помощью можно в адресной строке набирать as "что найти" и попадать на сайт документации с готовым поиском
TAB
может кому из начинающих пригодится)
Anton
Ребят, подскажите, насколько ansible-vault безопасен? Гуглил фастом но ничего про безопасность не нашел, однако в прошлом читал статейку и говорили, что ansible-vault не стоит доверять... Естественно, если пароль 123, то да. Но если надёжный пасс?
Anton
взламывается абсолютно все вопрос цены и времени
Lev
взламывается абсолютно все вопрос цены и времени
да паяльники не дорогие ныне вроде...
⁠
Можно разделить секрет доступа хоть на тысячу человек с минимальным кворумом в 999
Anton
Я не про тупой брут, с этим ок
Anton
AES256 Удачи во взломе.
Не в том смысле. Мне защититься.
Sergey
Не в том смысле. Мне защититься.
Как выглядит модель угроз?
Anton
Общий gitlab
Full
О сколько нам открытий чудных... В модуле vmware_guest_tools_wait таймаут ожидания захардкожен. Горит с этого. Извините...
Sergey
Общий gitlab
Очень туманно. Общий = gitlab.com?
Anton
Очень туманно. Общий = gitlab.com?
Нет, в компании, но доступ будет у нескольких людей. Просто хотел узнать если надёжным паролем зашифровать, насколько будет безопасно.
Anton
Очень туманно. Общий = gitlab.com?
Если исключить брут
inqfen
Нет, в компании, но доступ будет у нескольких людей. Просто хотел узнать если надёжным паролем зашифровать, насколько будет безопасно.
Технически - безопасно, практически - если кто-то знает как это расшифровать, тогда что угодно небезопасно
Full
Выглядит как повод для пуллреквеста
Ох. Да там перефигачить половину модулей для vmware нужно, по-хорошему. C другой стороны, нужно когда-то начинать. Я вот только задумываюсь, фичрекветы писать, или пулреквесты. :)
Full
def wait_for_tools(self, vm, poll=100, sleep=5) Ну, ё-моё.
Full
Ну ок, формально - не хардкод, согласен. Но управления этими переменными снаружи все равно нет.
Full
640 Кб достаточно кажому. :) Там, пожалуй, разумное умолчание - 500 сек. Но мне вот не хватает, например. ЕМНИП где-то натыкался, что раньше там был таймаут.
Full
Там - в смысле в модуле.
Anonymous
timeout: description: - Max duration of the waiting period (seconds). default: 500 type: int
Anonymous
папочка(ansible\lib\ansible\modules\) в https://github.com/ansible/ansible резко похудела
Full
О, спасибо.
Anonymous
ветка devel(https://github.com/ansible/ansible), если быть точнее
Anonymous
в 2.9 только bugfix на сколько мне известно