[ English | русский | Indonesia ]
Ротация паролей¶
Предупреждение
Эти плейбуки не гарантируют ротацию паролей без простоев в существующем окружении. Ожидается, что простой службы будет происходить между сбросом пароля на бэкэнде и перезапуском служб для применения нового значения.
Все пароли служб определяются и хранятся как переменные Ansible в OpenStack-Ansible. Это позволяет оператору хранить пароли в зашифрованном виде с помощью Ansible Vault или определять их как поисковые запросы в SOPS или OpenBao
Типичные процессы смены пароля включают следующие шаги:
Определите новый пароль в переменных Ansible (или там, куда указывает поиск).
Измените пароль на инфраструктурном узле (например, MariaDB, RabbitMQ и т. д.).
Обновите файл конфигурации службы, указав новый пароль.
Перезапустите службу, чтобы применить новую конфигурацию.
Ввиду разнообразия методов, которые можно использовать для хранения и определения переменных Ansible, мы оставим процесс изменения определений паролей за пределами этой статьи и сосредоточимся исключительно на процессе применения новых паролей в окружении.
Применение новых паролей к службе¶
Типичная служба имеет набор паролей для аутентификации в «инфраструктурных» узлах, которые включают в себя, помимо прочего:
Keystone
MariaDB
RabbitMQ
Поскольку после смены пароля (что обычно происходит в самом начале каждой роли) ожидается простой службы до его перезапуска, важно обеспечить максимально быстрое выполнение плейбука. Для этого мы будем использовать набор специальных тегов и переменных для каждого «бэкенда» отдельно.
Для следующих примеров мы возьмем Nova в качестве образца сервиса, поскольку Nova может испытывать наибольшие трудности при выполнении плейбука из-за количества хостов, которые необходимо обновлять.
В качестве общепринятой методики мы отключим выполнение serial
, которое включено по умолчанию, поскольку пароль для бэкенда будет сброшен во время выполнения для первого хоста, поэтому остальные не смогут нормально взаимодействовать независимо от используемого serial
.
Ещё одним общим моментом во всех разделах ниже является использование тега post-install
. Он был представлен в версии 2024.1 (Caracal) и применяется только к задачам <service>_post_install.yml
, где происходит шаблонизация конфигурационных файлов.
Изменение пароля Keystone для службы¶
Чтобы запустить обновление пароля в Keystone для службы, необходимо указать переменную service_update_password
. Чтобы выполнить смену пароля Keystone для службы, например, Nova, необходимо выполнить следующий плейбук:
openstack-ansible openstack.osa.nova -e nova_conductor_serial=100% -e nova_compute_serial=100% \
-e service_update_password=true --tags common-service,post-install
Изменение пароля MariaDB для службы¶
Чтобы выполнить ротацию пароля MariaDB для такой службы, как Nova, вам необходимо выполнить следующий плейбук:
openstack-ansible openstack.osa.nova -e nova_conductor_serial=100% -e nova_compute_serial=100% \
--tags common-db,post-install
Изменение пароля RabbitMQ для службы¶
Чтобы выполнить ротацию пароля MariaDB для такой службы, как Nova, вам необходимо выполнить следующий плейбук:
openstack-ansible openstack.osa.nova -e nova_conductor_serial=100% -e nova_compute_serial=100% \
--tags common-mq,post-install
Изменение всех паролей для службы одновременно¶
Стоит отметить, что оператор может объединить их для одновременной ротации паролей для всех бэкендов. Хотя это увеличит время выполнения плейбука (и, следовательно, время простоя), это всё равно будет эффективнее, когда в любом случае потребуется сменить все пароли.
Чтобы обновить все пароли, упомянутые в предыдущих разделах, мы просто объединим все используемые теги и переменные:
openstack-ansible openstack.osa.nova -e nova_conductor_serial=100% -e nova_compute_serial=100% \
-e service_update_password=true --tags common-service,common-db,common-mq,post-install