Не уверен, что у меня есть четкое название, но вот моя история:
Я работаю над облаком Openstack (Openstack здесь не важен), и мне нужно устанавливать свое имя пользователя / пароль каждый раз, когда мне нужно вызвать Openstack API, это классический вариант.
Я создал программу (на Ansible, но здесь это не важно), которая создает веб-сайт из данных Openstack, предоставляемых его API. Мне нужно запускать его вручную каждый раз, потому что я не могу сохранить свои учетные данные.
Теперь я хочу автоматизировать это. Как создать запланированную задачу (например, с помощью cron), которая запускает мой скрипт с моими учетными данными. Эта задача не может быть изменена кроме меня, учетные данные должны быть скрыты, скрипт, вызываемый задачей, также должен быть защищен (например, проверка контрольной суммы).
Ограничения: на всех виртуальных машинах у нас (я и моя команда) есть уникальный пользователь для входа в систему, и я хочу защитить свои учетные данные даже от пользователя root.
Любой инструмент, который может помочь мне в этом, приветствуется (cron, Jenkins, ...)
Во-первых, если вы уже используете Ansible, было бы неплохо использовать его для запуска задачи с сервера управления. Если ваши системы, например, находятся в производственном режиме, то хранение каких-либо учетных данных на них не является хорошей идеей, потому что для шифрования учетных данных нужны другие учетные данные, и вы не хотите хранить их в той же системе в незашифрованном виде, поэтому вы начинаете их шифровать с помощью .... ты видишь.
Итак - использование Ansible с управляющей машины, которая имеет доступ ко всей системе. Вы запускаете там playbook, который делает то, что нужно сделать на целевом хосте. Затем Ansible потребуются учетные данные. Их можно передать через Ansible-vault. Конечно, у Ansible Vault есть внутренние учетные данные для шифрования / дешифрования ansible-vault, но вы находитесь на управляющей машине. И на вашем уровне паранойи должна быть конечная точка. Если вы никому не доверяете, вы не можете хранить какие-либо учетные данные и должны вводить их каждый раз. Ansible можно вызвать через cron.
Так
ansible-vault
файл с некоторыми зашифрованными параметрамиansible-playbook --vault-password-file vault ..
Лично я заменил cronjob на AWX. В этом случае вы можете определить пользователей, которые имеют доступ к плейбукам, инвентарю и т. Д., Не имея прямого доступа к контенту. Вы можете настраивать расписания в AWX. Для этого также есть пример docker-compose.