Vladimir
Как адекватно решить первую задачу? Можно ли ансибловскому ssh скормить приватный ключ, который находится в vault?
Vladimir
Если использовать стороннее решение (вроде hashicorp vault), то я не очень понимаю зачем мне тогда использовать ansible-vault, когда я (судя по всему, я не пользовался hashicorp vault), могу положить секреты в yaml, который будет под "шифроваться" hashicorp vault, а для ansible быть видным через fuse как обычный файл.
Alf 🙀
Alf 🙀
Потому что чтобы ходить на виртуалки достачно паблик ключа на authorized keys
Vladimir
Я не хочу добавлять паблик ключи всех разработчиков на все виртуалки, и поддерживать их в актуальном состоянии.
Vladimir
Я хочу использовать отдельный выделенный ключ для доступа и хранить его в git-репозитории с конфигурацией.
Vladimir
Как здесь поможет ssh-agent?
Albert
jenkins
Albert
Мы так используем
Albert
Запускаем ансибл через него. А ключь в jenkins-е храним
Vladimir
Т.к. в ansible сейчас часть, которая не должна часто меняться.
Vladimir
Мы не используем Ansible для именно разработки/деплоя нашего продукта.
Albert
Если вы будете расшифровывать ключь на машине разработчика, то и смысла нет никакого зашифровывать
Vladimir
Мы им Kubernetes разворачиваем с помощью Kargo, обновления накатываем и т.п. ops вещи
Vladimir
Albert
Albert
И при чем тут ключь ssh?
Vladimir
Так
Vladimir
Я начинаю сомневаться в осмысленности задания вопросов здесь :)
Albert
Девелопер клонирует репозиторий к себе на комп, затем "что то" (что вы и ищите я так понимаю), расшифровывает ключь у девелопера. В руки девелопера попадает совершенно открытый ключь.
Смысл его шифровать тогда??
time
чтобы кто-то, кто стянул репо, не получил ключ
Albert
Ага.. Тогда пароль от шифрования вышлите всем девелоперам, и все
Vladimir
Vladimir
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 положить
Albert
ansible-vault encrypt some_deploy_key_rsa
Albert
Кстати path может быть и релативный
Albert
То есть просто написать название ключа можно, и он будет его искать в папке где и вы
Albert
ansible-vault decrypt some_deploy_key_rsa
Albert
Vladimir
Но это же неудобно это раз (у меня таких секретов может быть много), во вторых после этой операции гитовый working copy будет грязным
Albert
Ну с этим я уже не знаю как помочь... Кстати, в ансибле есть конфигурация - private_key_file
Albert
http://docs.ansible.com/ansible/intro_configuration.html#private-key-file
Pavel
Pavel
А если разработчик уволится то придется ключ перегенерить и заново шифровать. Вместо того чтобы просто удалить паблик кей того кто ушел.
Albert
Тот же ансибл и распространить эти ключи
Vladimir
Тот же ансибл и распространить эти ключи
Через ансибл может распространять ключи только тот, кто уже имеет авторищованный ключ (либо свой, который кто-то уже добавил, либо начальный). Таким образом информации в репозитории с конфигами и пароля для vault оказывается недостаточно для работы, нужны дополнительные действия, который на мой взгляд в моей ситуации излишни.
RunOver
Друзья, а здесь постить вакансию можно?
Vladimir
Плюс конечная цель использовать vault для хранения всех секретов - не охота использовать несколько инструментов для практически одного и того же (Ansible vault + hashicorp vault)
Bogdan (SirEdvin)
Vladimir
Bogdan (SirEdvin)
Это который?
Гляньте https://square.github.io/keywhiz/, может он вам поможет
Bogdan (SirEdvin)
Версионность там есть
Vladimir
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.
Serge
hackru
хорошая мысль, спасибо
Albert
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 мне подсказал.