Vladimir
Как адекватно решить первую задачу? Можно ли ансибловскому ssh скормить приватный ключ, который находится в vault?
Vladimir
Если использовать стороннее решение (вроде hashicorp vault), то я не очень понимаю зачем мне тогда использовать ansible-vault, когда я (судя по всему, я не пользовался hashicorp vault), могу положить секреты в yaml, который будет под "шифроваться" hashicorp vault, а для ansible быть видным через fuse как обычный файл.
Vladimir
А не путаете ли вы паблик с прайватом?
Нет, я именно хочу private часть ключа хранить зашифрованным в git-репозитории.
Alf 🙀
Потому что чтобы ходить на виртуалки достачно паблик ключа на authorized keys
Vladimir
Я не хочу добавлять паблик ключи всех разработчиков на все виртуалки, и поддерживать их в актуальном состоянии.
Vladimir
Я хочу использовать отдельный выделенный ключ для доступа и хранить его в git-репозитории с конфигурацией.
Vladimir
Как здесь поможет ssh-agent?
Albert
jenkins
Albert
Мы так используем
Albert
Запускаем ансибл через него. А ключь в jenkins-е храним
Vladimir
Запускаем ансибл через него. А ключь в jenkins-е храним
Мы хотим запускать ansible с машин разработчиков, не автоматизированно
Vladimir
Т.к. в ansible сейчас часть, которая не должна часто меняться.
Vladimir
Мы не используем Ansible для именно разработки/деплоя нашего продукта.
Albert
Если вы будете расшифровывать ключь на машине разработчика, то и смысла нет никакого зашифровывать
Vladimir
Мы им Kubernetes разворачиваем с помощью Kargo, обновления накатываем и т.п. ops вещи
Vladimir
Если вы будете расшифровывать ключь на машине разработчика, то и смысла нет никакого зашифровывать
Смысл есть —- доступ к git репозиторию не будет означать доступ ко всем секретам.
Vladimir
Не вижу как git спасает от чего либо
git не спасает —- он используется как система контроля версий
Albert
И при чем тут ключь ssh?
Vladimir
Так
Vladimir
Я начинаю сомневаться в осмысленности задания вопросов здесь :)
Albert
Девелопер клонирует репозиторий к себе на комп, затем "что то" (что вы и ищите я так понимаю), расшифровывает ключь у девелопера. В руки девелопера попадает совершенно открытый ключь. Смысл его шифровать тогда??
time
чтобы кто-то, кто стянул репо, не получил ключ
Albert
Ага.. Тогда пароль от шифрования вышлите всем девелоперам, и все
Vladimir
Девелопер клонирует репозиторий к себе на комп, затем "что то" (что вы и ищите я так понимаю), расшифровывает ключь у девелопера. В руки девелопера попадает совершенно открытый ключь. Смысл его шифровать тогда??
Вы правильно поняли, что я делаю. Скрыть ключ от разработчика цели нет (даже наоборот), но не хочется хранить ключ в git репозитории в открытом виде
Vladimir
Ага.. Тогда пароль от шифрования вышлите всем девелоперам, и все
Да! Пароль от ansible-vault будет у всех разработчиков
Albert
Так в чем проблема?
time
алсо можно поставить пароль на сам ключ
Vladimir
Так в чем проблема?
Как мне использовать ssh-ключ, хранимый в ansible-vault, для авторизации самого ansible на виртуалках?
Albert
Виртуалки уже с правильным authorized-keys подымаются?
Vladimir
Сейчас у меня в ansible.cfg указано [ssh_connection] ssh_args = -i ~/.ssh/some_deploy_key_rsa, я хочу вот этот ~/.ssh/some_deploy_key_rsa в ansible-vault положить
Vladimir
Виртуалки уже с правильным authorized-keys подымаются?
Виртуалки созданы с публичной частью того ключа в authorized_keys
Albert
ansible-vault encrypt some_deploy_key_rsa
Albert
Кстати path может быть и релативный
Albert
То есть просто написать название ключа можно, и он будет его искать в папке где и вы
Vladimir
ansible-vault encrypt some_deploy_key_rsa
Ага, потом git add, git commit, git push. Потом я беру репу на другой машине, и что я делаю?
Albert
ansible-vault decrypt some_deploy_key_rsa
Albert
То есть просто написать название ключа можно, и он будет его искать в папке где и вы
И запускайте ansible если все сконфигурировали как я сказал
Vladimir
Но это же неудобно это раз (у меня таких секретов может быть много), во вторых после этой операции гитовый working copy будет грязным
Albert
Ну с этим я уже не знаю как помочь... Кстати, в ансибле есть конфигурация - private_key_file
Albert
http://docs.ansible.com/ansible/intro_configuration.html#private-key-file
Pavel
Я начинаю сомневаться в осмысленности задания вопросов здесь :)
Все же непонятно от кого шифровать приватный ключ, если его разработчики и так все знают.
Pavel
Pavel
А если разработчик уволится то придется ключ перегенерить и заново шифровать. Вместо того чтобы просто удалить паблик кей того кто ушел.
Vladimir
А если разработчик уволится то придется ключ перегенерить и заново шифровать. Вместо того чтобы просто удалить паблик кей того кто ушел.
Да, я об этой проблеме писал выше, для нас это допустимо в данный момент. А вот распространять ключи разработчиков на виртуалки и управлять ими выглядит менее удобным.
Albert
Тот же ансибл и распространить эти ключи
Vladimir
Тот же ансибл и распространить эти ключи
Через ансибл может распространять ключи только тот, кто уже имеет авторищованный ключ (либо свой, который кто-то уже добавил, либо начальный). Таким образом информации в репозитории с конфигами и пароля для vault оказывается недостаточно для работы, нужны дополнительные действия, который на мой взгляд в моей ситуации излишни.
RunOver
Друзья, а здесь постить вакансию можно?
Vladimir
Плюс конечная цель использовать vault для хранения всех секретов - не охота использовать несколько инструментов для практически одного и того же (Ansible vault + hashicorp vault)
Bogdan (SirEdvin)
Друзья, а здесь постить вакансию можно?
Нельзя, для этого есть джобс канал
Bogdan (SirEdvin)
Это который?
https://t.me/devops_jobs
Bogdan (SirEdvin)
Это который?
Гляньте https://square.github.io/keywhiz/, может он вам поможет
Bogdan (SirEdvin)
Версионность там есть
hackru
вечер в хату, девопсы. а подскажите плз, как сделать красиво, по понятиям, чтобы красных строчек не было в выводе ansible-playbook? сейчас делаю так, оно работает, но глаз мозолит: - name: Test if we have servicename shell: readlink /etc/service/servicename register: servicename_test ignore_errors: True changed_when: False ну т.е. я проверяю наличие симлинка и делаю реджистер, а потом в следующем шаге проверяю servicename_test.rc == 0
hackru
есть еще несколько мест, где через shell-комманду проверка идёт, не обязательно readlink.
hackru
Видимо надо условие ваше в failed_when прописать
т.е. какое-то условие выбрать, которое никогда не выполнится
hackru
хорошая мысль, спасибо
hackru
есть еще несколько мест, где через shell-комманду проверка идёт, не обязательно readlink.
Albert
Да stat просто проверяет что там
Albert
И пишет в register если надо
hackru
я понимаю, но это только в этом случае применимо
Albert
А в каком нет?
hackru
а мне надо было универсальное решение
hackru
когда /usr/bin/something выдаёт нулевый экзит-код
hackru
на приложение это ессна нет модулей
Albert
Я вижу вы не поняли
hackru
stat мне поможет только в случае если я хочу проверять наличие файла/линка
Albert
http://docs.ansible.com/ansible/stat_module.html
hackru
ну.
hackru
это частное решение именно для флага-файла или файла-симлинка
hackru
как это поможет мне в случае если я должен запустить приложение и получить от него код возврата?
Albert
shell
Albert
Не пойму что вы хотите
hackru
я так уже и делаю, через shell
hackru
вопрос был в том, как сделать чтобы не считались мои проверки за ошибку, Serge Matveenko мне подсказал.