Dmitry
Приветики. Подскажите как лучше сделать. Есть роль А, которая должна выполняться для группы хостов А. Ну и Б для Б. Обе роли зависят от С. Хочется, что бы сначала роль С прошлась по А+Б группам, а потом уже пошли роли А и Б.
inqfen
Ну так и напиши, в чем проблема
Dmitry
Т.е. понятно, что я могу разорвать зависимость в ролях, и тупо прописать три таска
Dmitry
Но если не разрывать - получается, что играет сначала C и А на группе А, а потом С и Б на группе Б
inqfen
Вот ты сам сказал что какая последовательность тебе нужна
inqfen
Так и опиши это явно, ансибл не угадает же за тебя
inqfen
Почему в чат ты написал 3 таска словами, а в плейбук стесняешься?
Dmitry
Так и опиши это явно, ансибл не угадает же за тебя
я описываю явно и получаю не то, что нужно Получается, что бы "описать что нужно", мне придется пойти и удалить зависимость между ролями в мете
inqfen
Тебе это не надо - тогда убери
Dmitry
смотри, кейс, когдя для одной группы указанны две роли зависящие от третьей - ансибл прекрасно отрабатывает, не повторяя третью
Dmitry
т.е. если я напишу - name: "test A" hosts: - a - b roles: - { role: a } - { role: b } где и а и b зависят от c, то будет и исполненено c-a-b собственно что-то такое хочется, но что бы a для a, b для b попробовал include_role + when ... не работает, c два раза исполняется
Dmitry
собственно можно свести к вопросу - как в синтаксисе с include_role обеспечить старое поведение allow_duplicates: false
Dmitry
походу это баг, который тянется пару лет точно...
#Rλatan
Приветики. Подскажите как лучше сделать. Есть роль А, которая должна выполняться для группы хостов А. Ну и Б для Б. Обе роли зависят от С. Хочется, что бы сначала роль С прошлась по А+Б группам, а потом уже пошли роли А и Б.
Кажется логику ломает ваша ролевая зависимость. Можете описать зачем в ролях А и Б зависимост от С когда вам нужно независимая их отработка без дублирования? Опишите в [host|group]_vars какие роли нужны и подгружайте через include_role: when
#Rλatan
Чем меньше закадровой логики тем легче это колесо крутить когда оно выростет до размера 100+ролей
Dmitry
ну там не вырастет... максимум 3-4 роли будет
Dmitry
ну оно в общем должно работать, и даже allow_duplicates опция у include_role намекает
Dmitry
но не работает... но в общем убрал зависимость и явно ее в плейбуке поставил, да
#Rλatan
как я вижу: [prod] adhoc: - C - A - B include_role: "{{ item }}" loop: "{{ adhoc }}
#Rλatan
Вам побороть сломанный инструмент или рабту выполнить нужно 😊?
Dmitry
не, ну еще понять нужно было, что он сломан, а не у меня что-то не оттуда как-то так и сделал, да...
#Rλatan
ну если платят по часам то дело ваше
Dmitry
просто всегда остаётся риск, что кто-то придет и заюзает А без С.. видимо нужно будет проверку какую-нибудь впилить
#Rλatan
Выбирайте деларативный подход: - сделать1 - сделать 2 - слелать N
#Rλatan
Чеки делайте сохраняя пусотой файл
#Rλatan
И добавте в каждую роль - если нет то фейл
#Rλatan
Там пойди уследи за всеми
Dmitry
ну думал факт проставить
#Rλatan
Ну или да финальный факт в роли С потом проверитив А и Б
Aleksey
ого. разошлись последнее время
Aleksey
Примерно в 2% случаев приходится юзать эту афромагию
Ну к меня кейсы были в основном с тем что на управляемом хосте нужен питон модуль который в системе не нужен или даже конфликтен. Я тогда делал виртуаленв и прыгал в тот питон. А у вас какой кейс?
Victor
А не, даже реже, чем два процента. Связано с тем что часть пакетов с прикладным софтом укатились в третий питон, ну или работало в нем нормально. Но систем-вайд идет второй. Мне конкретно потребовалось для докер-композа. Кошернее было бы сделать через venv, но в него тоже еще прыгать надо, а на машине ничего другого не крутится.
Kirill
Доброе утро всем) Пытаюсь прогнать ansible playblook в gitlab ci, но получаю ошибку It is required that your private key files are NOT accessible by others.\r\nThis private key will be ignored. id_rsa ключ я взял с remote сервака на котором хочу выполнять скрипты, кинул в gitlab variables и в пайплайне кидаю его в ~/.ssh/id_rsa с chmod 600
Kirill
в чем может быть проблема? 🙂
Kirill
или мне нужно в пайплайне генерировать ключ, кидать его на ремоут и добавлять в authorized_keys?
Victor
Доброе утро всем) Пытаюсь прогнать ansible playblook в gitlab ci, но получаю ошибку It is required that your private key files are NOT accessible by others.\r\nThis private key will be ignored. id_rsa ключ я взял с remote сервака на котором хочу выполнять скрипты, кинул в gitlab variables и в пайплайне кидаю его в ~/.ssh/id_rsa с chmod 600
А можно еще раз но другими словами? Как-то авторизоваться на удаленной удаленной машине, чтобы взять с неё ключ чтобы снова на нее зайти? Это не сильно имеет отношение к делу, просто интересно.
Kirill
Ну есть vps. Я логинюсь по ssh и генерю там ключ, который использую для доступа ansible на ssh. Сам ansible запускаю в пайплайне в докер контейнере
Victor
посмотри ещё права на сам ~/.ssh
Ну вот кстати да, похоже на то, обычно делаю chmod -R 0600 ~/.ssh
Victor
ну вот щас систем-вайд тоже на третий ползёт
Ну это он когда еще доползет, плюс легаси никто не отменял.
Kirill
Я вешаю права конкретно на id_rsa
Kirill
Сейчас попробую
Kirill
вешай на весь ~/.ssh
тогда получаю такое
Ivgenich
chmod 700 ~/.ssh chmod 644 ~/.ssh/authorized_keys chmod 644 ~/.ssh/known_hosts chmod 644 ~/.ssh/config chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub
Victor
тогда получаю такое
Ну знач не вешаются у тебя права.
Victor
chmod 400 надо
c 600 все прекрасно работает
Radik
777!
Victor
777!
долой аутентификацию!
Dmitry
700 на ~/.ssh, 600 на всё внутри ~/.ssh
Andor
тогда получаю такое
белым по чёрному пишет, в чём проблема
Kirill
белым по чёрному пишет, в чём проблема
я понимаю, просто не понимал что не так делал
Kirill
700 на ~/.ssh, 600 на всё внутри ~/.ssh
сейчас так попробую
Maksim
Retries и Delay только с определенынми модулями работают? - name: activate daemon for elasticsearch service: name: elasticsearch state: started enabled: yes retries: 3 delay: 15
Maksim
не отрабатывают здесь
Victor
Retries и Delay только с определенынми модулями работают? - name: activate daemon for elasticsearch service: name: elasticsearch state: started enabled: yes retries: 3 delay: 15
retries Number of retries before giving up in a until loop. This setting is only used in combination with until. delay Number of seconds to delay between retries. This setting is only used in combination with until. https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html#term-retries
Victor
Ну и пример - shell: /usr/bin/foo register: result until: result.stdout.find("all systems go") != -1 retries: 5 delay: 10
Victor
тогда получаю такое
Ну и кстати, стековерфлоу утверждает, что можно сделать так ssh-add - <<< "${SSH_PRIVATE_KEY}"
#Rλatan
Для пользователей Ansible+Vagrant на Windows Если способ без samba расшарить папка из VM в хост?
UglyKoyote
если вбгест аддон установлен - через шаренные каталоги
#Rλatan
не из хоста в ВМ а наоборот, что бы можно в хост Windows примонтировать сетевой диск
#Rλatan
Сейчас ставится Samba в ВМ для этих целей
UglyKoyote
не из хоста в ВМ а наоборот, что бы можно в хост Windows примонтировать сетевой диск
а чем концептуально отличается от того что я написал?
Никита
Could not set property: Interactive authentication required. ставлю куб кубспреем
#Rλatan
а чем концептуально отличается от того что я написал?
через guestadditions шарится из Хост в ВМ только
Никита
--ask-become-pass --ask-pass ввожу
Kirill
в общем чёт как не пытаюсь всё равно Make sure this host can be reached over ssh: key_load_public: invalid format\r\nWarning: Permanently added ‘….’ (ECDSA) to the list of known hosts.\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\n@ WARNING: UNPROTECTED PRIVATE KEY FILE! @\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\nPermissions 0755 for '/root/.ssh/id_rsa' are too open.\r\nIt is required that your private key files are NOT accessible by others.\r\nThis private key will be ignored.\r\nLoad key \"/root/.ssh/id_rsa\": bad permissions\r\nPermission denied (publickey,password).\r\n", "unreachable": true}