nett00n
заменить copy на debug недолго
а вот это не сообразил, спасибо.
nett00n
Если коротко: 1. Нет, не будет 2. Конструкция вида "'group1' in group_names" говорит о том, что вы изначально что-то делаете неправильно
А что не так с конструкцией? роли отброса логов стоит быть универсальной. И чем делать 30 разных тасков под каждый тип отбрасываемых логов, разумнее, как мне кажется, подгружать мождульно только те таски, которые необходимы.
Артём
В вашем случае группа используется как неспецифичная переменная. Можно заменить на что угодно. А истинный путь - использовать группы. Собстевнно, группами в том виде, как их понимает ansible, можно скопировать нужные скрипты в нужные группы с синтаксисом вроде tasks: name: copy … with_items: {{ list_of_scripts }} И групповыми переменными group_vars/group1.yml: — list_of_scripts: - rsync.sh - script1.sh
Timur
а если хост принадлежит нескольким группам, смерджится ли list_of_scripts этих групп?
Нет, не смержится. Не допускать конфликта переменных между группами - ваша задача
Артём
Нет, переопределится. https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html
Артём
А вот есть ли возможность мержить листы (в моём случае - для удобства организации очень больших листов по файлам) - мне самому интересно.
Anton
Всем привет. Подскажие пожалуйста, а роль обязательно должна лежать в корне репозитория? Хочется создать репозиторий roles и хранить в нём роли в папках.
Anton
https://docs.ansible.com/ansible/latest/reference_appendices/galaxy.html#installing-multiple-roles-from-a-file В документации про это ни слова нет, просто все берут роли из корня репозитория или из архива.
Артём
roles_path = /wherever/you/want/them
Anton
roles_path = /wherever/you/want/them
Это что касается установленной роли. А я хочу создать репозиторий с ролями (гипотетически http://my-gitlab/infrastructure/roles) и в него складывать роли в виде папок. И тягать их из другого проекта через requirements.yml.
Артём
requirements.yml: — - src: git@gitlab.my.gitlab:ansible-roles/ansible-role-redis-cluster.git name: redis scm: git Или я недопонял вопрос?
Anton
То есть губоко в репозитории.
Anton
Получается что ссылка на репозиторий http://my-gitlab/infrastructure/service, естественно нельзя сделать git clone http://my-gitlab/infrastructure/service/roles/msvs2013ultimate. А указав src: http://my-gitlab/infrastructure/service уже не получится выбрать что-то внутри репозитория, нет чего-то типа path. Выходит в репозитории должна просто сразу лежать роль, прямо в корне? И никак иначе?
Anton
Положить так можно, но по отдельности тянуть уже будет нельзя
А обращаться к ним как придётся, по полному пути относительно корня же? То есть - import_role: name: roles/msvs2013ultimate Так?
Timur
По умолчанию ансибл берет роли либо просто из текущей директории, либо из подпапки roles в текущей директории, либо из других путей, прописанных в конфиге
Anton
По умолчанию ансибл берет роли либо просто из текущей директории, либо из подпапки roles в текущей директории, либо из других путей, прописанных в конфиге
У меня по умолчанию роли ставятся в ~/.ansible/roles. В этой директории лежат директории с ролями. Если я устанавливаю свою роль, которая лежит не в корне репозитория, таким вот образом: # requirements.yml --- - src: git@my-gitlab:infrastructure/services scm: git name: roles/msvs2013ultimate version: 5e291e7f222d08ae1c9fa3aabf8617008d15839a То в ~/.ansible/roles поялвляется диретория roles/msvs2013ultimate. Естественно ansible её не видит.
Anton
А всё я разобрался, это фича mazer, а он пока ещё находится в тех превью.
manefesto
ребята, кто нибудь использовал ansible для деплоя gitlab ci ?
Anonymous
manefesto
не верно выразился, из гитлаба, на определенной stage
manefesto
я вот понять не могу, там ансибл есть из коробки ?
Anonymous
я вот понять не могу, там ансибл есть из коробки ?
Нет конечно. С чего бы ему там быть?
manefesto
смотрю гайды, и нигде не нашел apt install ansible
Anonymous
Какой у тебя тип раннера?
Anonymous
И вообще, это уже оффтоп тут, го в ЛС
manefesto
используем gitlab.com, думаю docker
George
Мы использовали предсобранный образ с ансиблом
George
И в него подкидывали (на самом деле это происходит автоматом гитлабом) плейбуки
Bandikoot
господа, а есть лёгкий способ задать в плейбуке замену всего содержимого файла? без template и shell/command blockinfile не даёт задать "замени весь текущий текст" и переносы строк превращает в пробелы. replace никак не хочет матчить все строки разом и вставляет текст N раз (по кол-ву строк в исходном файле)
Bandikoot
Модуль copy тоже не подходит?
ну понятно, что можно copy или template. я прост надеялся, что обойдусь одним-единственным ямлом с тасками
Bandikoot
У copy есть параметр content.
🔥, то, что нужно, спасибо большое. ещё бы заставить его воспринимать содержимое параметра как multiline и совсем шикарно будет
Артём
content: | all your lines
George
content: | all your lines
А оно эскейп символы типа \n не ест ?
Артём
Копирует многострочно нормально.
Артём
Или вопрос был про «нельзя ли сделать all\nyour\nlines»?
Bandikoot
Копирует многострочно нормально.
да, всё так. главное отступ сделать правильный от content:
Bandikoot
content: | all your lines
спасибо (:
GithubReleases
ansible/ansible tagged: v2.8.0b1 Link: https://github.com/ansible/ansible/releases/tag/v2.8.0b1 Release notes: New release v2.8.0b1
Max
Супер.
Max
Жду этого ga
Ivan
Конкретно чего-то?
Anton
А роли это единственный способ подключения удалённого кода? А то в роли получился один плейбук с одним таском, оверкилл...
Vladislav 👻
прям в плейбуке можете писать таску
Vladislav 👻
без роли
Anton
Говорю же, удалённый код) DRY, все дела.
Vladislav 👻
эммм
Anton
Хочу в плейбуке ссылаться на другой репозиторий. Чтобы я в десяти плейбуках мог дёргать установку visual studio так как мне надо, из экзкшника и с кучей параметров.
Vladislav 👻
я не понял, причем тут dry и что значит удаленный код?
Anton
Код, лежащий в другом месте, вообще в другом репозитории, но не на galaxy.
Anton
Грубо говоря хочу такую вот магию прямо посреди плейбука писать: include my-gitlab/ansible/roles/msvs2013
Stan
ansible пытается импортировать плагин netaddr установлен netaddr 0.7.5 при этом, при запуске playbook он пишет что: no module named netaddr
Vladislav 👻
Грубо говоря хочу такую вот магию прямо посреди плейбука писать: include my-gitlab/ansible/roles/msvs2013
я не понял, причем тут удаленный? и разве include_role не спасает?
Stan
почему он его не видит, что можно сделать
Stan
стоит python 2.7
Vladislav 👻
Anton
я не понял, причем тут удаленный? и разве include_role не спасает?
Ну, так работает, да) Но вернёмся к самому первому вопросу, у меня в этой роли всего один плейбук с одним таском, больше вообще ничего нет. А нужно целую роль создавать.
Stan
на той же машине
Vladislav 👻
на той же машине
на той же машине != в том же окружении
Stan
те где playbook запускается, он тоже должен быть?
Vladislav 👻
и если я правильно помню, netadr должен стоять на удаленной машине, а не на локальной...
Stan
на удаленной я поставил
Anton
есть include_task
Есть, но он только локальные таски инклюдит.
Roman
кто то пользуется ansible plugin для jenkins? почлучаю Failed to connect to the host via ssh: Permission denied (publickey) хотя под этим ключем обычным агентом успешно подключаюсь.
Alexandr
Ansible умеет в dependy от других файлов, которые могут быть в git. Но я такое не проворачивал. Подробнее не скажу
Alexandr
кто то пользуется ansible plugin для jenkins? почлучаю Failed to connect to the host via ssh: Permission denied (publickey) хотя под этим ключем обычным агентом успешно подключаюсь.
sshagent перед вызовов ansible. Проверить права доступа на ключ. Так же можно в опция подключения в самом ансамбле ключ прописать
Roman
В логах целевого хоста есть причины
тут дич: Apr 16 12:10:35 test-ci-01 sshd[20976]: Accepted publickey for deploy from 172.17.66.126 port 51864 ssh2: ED25519 SHA256:[{{{{ cut key }}}}}] Apr 16 12:10:35 test-ci-01 sshd[20976]: pam_unix(sshd:session): session opened for user deploy by (uid=0) Apr 16 12:11:42 test-ci-01 sshd[20981]: Received disconnect from 172.17.66.126 port 51864:11: disconnected by user Apr 16 12:11:42 test-ci-01 sshd[20981]: Disconnected from 172.17.66.126 port 51864 Apr 16 12:11:42 test-ci-01 sshd[20976]: pam_unix(sshd:session): session closed for user deploy
Roman
sshagent перед вызовов ansible. Проверить права доступа на ключ. Так же можно в опция подключения в самом ансамбле ключ прописать
права в норм, с этого хоста под этим пользователем успешно подключаюсь, толи я что-то не верно настроил толи это баг плагина