[ English | English (United Kingdom) | Deutsch | русский ]
Запуск от имени пользователя без прав root¶
Операторам не нужно использовать учетные записи пользователя root
на хостах развертывания или целевых хостах. Этот подход работает из коробки, используя Ansible privilege escalation.
Хосты развертывания¶
Вы можете избежать использования пользователя root
при развертывании, следуя следующим рекомендациям:
Склонируйте репозиторий OpenStack-Ansible в домашний каталог пользователя. Это значит, что вместо
/opt/openstack-ansible
репозиторий будет в~/openstack-ansible
.Используйте произвольный путь для каталога
/etc/openstack_deploy
. Вы можете разместить каталог конфигурации OpenStack-Ansible внутри домашнего каталога пользователя. Для этого вам нужно будет определить следующую переменную среды:export OSA_CONFIG_DIR="${HOME}/openstack_deploy"
Если вы хотите сохранить базовое ведение журнала ansible, вам нужно либо создать каталог
/openstack/log/ansible-logging/
и разрешить пользователю писать в него, либо определить следующую переменную среды:export ANSIBLE_LOG_PATH="${HOME}/ansible-logging/ansible.log"
Примечание
Вы также можете добавить переменную среды в файл
user.rc
внутри папки openstack_deploy (${OSA_CONFIG_DIR}/user.rc
). Файлuser.rc
создается каждый раз при запуске бинарного файлаopenstack-ansible
.Первоначальную загрузку OpenStack-Ansible с использованием скрипта ./scripts/bootstrap-ansible.sh по-прежнему следует выполнять либо от имени пользователя
root
, либо повысить привилегии с помощьюsudo
илиsu
.
Хосты назначения¶
Также возможно использовать пользователя без прав root для аутентификации Ansible на хостах назначения. Однако, этот пользователь должен иметь возможность повышать привилегии с помощью Ansible privilege escalation.
Примечание
Вы можете добавить переменные среды из этого раздела в файл user.rc
внутри папки openstack_deploy (${OSA_CONFIG_DIR}/user.rc
). Файл user.rc
создается каждый раз при запуске бинарного файла openstack-ansible
.
Есть еще несколько дополнительных вещей, которые вам, возможно, стоит учесть:
Предоставляйте флаг
--become
каждый раз, когда вы запускаете playbook или ad-hoc команду. В качестве альтернативы вы можете определить следующую переменную окружения:export ANSIBLE_BECOME="True"
Переопределите временный путь Ansible, если используются контейнеры LXC. Соединение Ansible от физического хоста к контейнеру LXC передает переменные среды с хоста. Это означает, что Ansible пытается использовать ту же временную папку в контейнере LXC, что и на хосте, относительно каталога пользователя без прав root ${HOME}. Он не будет существовать внутри контейнера, и вместо него должен быть использован другой путь.
Вы можете сделать это различными способами:
Задайте
ansible_remote_tmp: /tmp
в user_variables.ymlОпределите следующую переменную окружения:
export ANSIBLE_LOCAL_TEMP="/tmp"
Определите пользователя, который будет использоваться для подключений от хоста развертывания к целевым хостам ansible. Если пользователь один и тот же для всех хостов в вашем развертывании, вы можете сделать это одним из следующих способов:
Определите
ansible_user: <USER>
в user_variables.ymlОпределите следующую переменную окружения:
export ANSIBLE_REMOTE_USER="<USER>"
Если пользователь отличается от хоста к хосту, вы можете использовать group_vars или host_vars. Более подробную информацию о том, как это использовать, можно найти в Руководстве по переопределениям