Я использую Invoke / Fabric с boto3 для создания экземпляра AWS и передачи его в сценарий Ansible. Для этого необходимо подготовить несколько вещей на удаленной машине, прежде чем Ansible сможет вступить во владение, в частности, установить Python, создать пользователя и скопировать открытые ключи SSH.
Образ AWS поставляется с конкретным пользователем. Я хотел бы использовать этого пользователя только для создания своего собственного пользователя, копирования открытых ключей и последующего удаления пароля для входа. При использовании Fabric CLI объект соединения не создается и не может быть изменен в задачах.
Что может быть хорошим способом переключения пользователей (он же воссоздает объект соединения между задачами) и запускает следующие задачи с пользователем, которого я только что создал?
Возможно, я не пойду правильно (я перехожу из Fabric 1, где было достаточно переключения значений env). Вот несколько известных мне стратегий, большинство из которых устраняют некоторую гибкость, на которую мы опирались.
- Создайте пользовательский AMI, для которого все приготовления уже выполнены.
- Создайте локальный объект Connection в задаче для пользовательской настройки, прежде чем переходить к объекту подключения, предоставленному Fabric CLI.
- Более глубокая интеграция AWS с Ansible (проблема в том, что у нас есть пользователи, которые могут использовать Ansible после того, как экземпляр активен, но не имеют привилегий AWS).
Полагаю, в этот список также включен вопрос передового опыта.