[ English | русский | Deutsch | 한국어 (대한민국) | English (United Kingdom) | Indonesia ]
Установка с ограниченным соединением¶
Многие плейбуки и роли в OpenStack-Ansible загружают зависимости из Интернета по умолчанию. Настройки в примерах предполагают, что имеется Интернет соединение высокого качества через роутер в управляющей сети OpenStack.
Установки могут сталкиваться с ограниченным внешним соединением по ряду причин:
Ненадежное или медленное внешнее соединение
Правила брандмауэра, которые блокируют внешнее соединение
Внешнее соединение осуществляется через HTTP или SOCKS прокси
Архитектурные решения оператора изолировать сети OpenStack
Высокозащищенные окружения, где внешнее соединение не разрешено
Мы рекомендуем набор вариантов и переопределений настроек, которые могут использовать операторы при запуске OpenStack-Ansible в сетевых окружениях, блокирующих соединение с Интернет.
Нижеприведенные параметры не исключают друг друга, и могут быть совмещены при необходимости.
Пример зависящих от Интернета вещей¶
пакеты Python
пакеты дистрибутивов
образы LXC контейнеров
репозитории с исходным кодом
GPG ключи для валидации пакетов
Вариант А: Создание локальных зеркал интернет ресурсов¶
Вы можете управлять и поддерживать зеркала OpenStack-Ansible и зависимостей OpenStack. Зеркала обычно предоставляют значительное снижение рисков путем уменьшения зависимости от ресурсов и систем вне вашего прямого контроля. Зеркала также могут дать более высокую стабильность, производительность и безопасность.
Репозитории Python пакетов¶
Много пакетов, используемых для запуска OpenStack, устанавливаются при помощи pip. Мы рекомендуем зеркалировать список пакетов из PyPi, которые используются pip. Оператор может предпочесть активно зеркалировать весь верхний репозиторий PyPi, но это может потребовать значительный объем дискового пространства. Как вариант, можно использовать кэширующий pip прокси для получения локальных копий только требуемых пакетов.
Что бы настроить использование альтернативного источника при сборке, создайте файл /etc/pip.conf со следующим содержанием и убедитесь, что он имеется на всех хостах в окружении.
[global]
index-url = http://pip.example.org/simple
После, в /etc/openstack_deploy/user_variables.yml, сообщите развертыванию о необходимости копирования данного файла с хоста в кэш образа контейнера.
# Copy these files from the host into the containers
lxc_container_cache_files_from_host:
- /etc/pip.conf
пакеты дистрибутивов¶
Много программных пакетов установлено на Ubuntu при помощи .deb пакетов. Схожие механизмы пакетов существуют и для других дистрибутивов Linux. Мы советуем зеркалировать репозитории, которые содержат данные пакеты.
Основные репозитории Ubuntu для зеркалирования для Ubuntu 18.04 LTS:
bionic
bionic-updates
OpenStack-Ansible требует несколько дополнительных репозиториев для установки специфичных компонентов, таких как Galera и Ceph.
Пример репозиториев для зеркалирования (Ubuntu на целевых хостах):
Данные списки намеренно не исчерпывающи и эквивалентные необходимы для других дистрибутивов Linux. Обратитесь к плейбукам OpenStack-Ansible и документации по ролям для дополнительных репозиториев и переменных, которые могут быть использованы для переопределения месторасположения репозитория.
образы LXC контейнеров¶
OpenStack-Ansible использует предоставляемые сообществом LXC образы при создании контейнеров для сервисов OpenStack. Операторы могут создавать, обслуживать и хранить их собственные образы контейнеров. Обратитесь к роли openstack-ansible-lxc_container_create
за более детальной информацией по переопределению значений для данного сценария.
репозитории с исходным кодом¶
OpenStack-Ansible использует Ansible Galaxy для загрузки ролей Ansible при начальной подготовке хоста развертывания. Операторы могут зеркалировать зависимости, которые загружаются при помощи скрипта bootstrap-ansible.sh
.
Операторы могут настроить скрипт получать Ansible из альтернативного Git репозитория, установив переменную окружения ANSIBLE_GIT_REPO
.
Операторы могу настроить скрипт получать требуемые Ansible роли из альтернативных источников указав пользовательский файл требуемых ролей и указав путь к этому файлу при помощи переменной окружения ANSIBLE_ROLE_FILE
.
Вариант Б: Доступ к интернет ресурсам при помощи прокси¶
Некоторые сети не имеют маршрутизируемого доступа в Интернет, или требуют для определенного трафика использовать специфичные шлюзы, такие как HTTP или SOCKS прокси сервера.
Настройка может быть применена к целевым серверам и хосту развертывания для получения доступа к публичным интернет ресурсам через HTTP или SOCKS прокси сервер(ы). OpenStack-Ansible может быть использован для настройки целевых хостов использовать прокси сервер(ы). OpenStack-Ansible не предоставляет автоматизацию по созданию прокси сервера(ов)
Начальный хост развертывания не покрывается OpenStack-Ansible и оператор должен обеспечить наличие минимальных настройки прокси, а именно для системного менеджера пакетов.
Настройка прокси для apt-get
¶
Обратитесь к Настройка apt-get для использования http-прокси
Другие настройки прокси¶
В дополнение к базовой конфигурации имеются другие сетевые клиенты на целевых хостах, которые могут быть настроены для соединения через прокси. Например:
Большинство Python модулей
curl
wget
openstack
Эти инструменты и положенные в их основу библиотеки используются как непосредственно Ansible-ом, так и плейбуками OpenStack-Ansible. Потому для успешного доступа плейбуков к внешним ресурсам должна быть произведена настройка прокси.
Обычно эти инструменты считывают переменные окружения, содержащие настройки прокси сервера. Эти переменные окружения, при необходимости, можно задать в /etc/environment
.
Важно отметить, что прокси сервер должен использоваться только для доступа ко внешним ресурсам, а связь между внутренними компонентами OpenStack должна быть прямая, без использования прокси. Переменная окружения no_proxy
используется для определения хостов, доступ к которым должен быть осуществлён напрямую, без использования прокси. Обычно, это хосты из управляющей сети.
OpenStack-Ansible предоставляет два различных механизма для настройки прокси сервера:
#. The default configuration file suggests setting a persistent proxy
configuration on all target hosts and defines a persistent no_proxy
environment variable which lists all hosts/containers“ management addresses as
well as the load balancer internal/external addresses.
#. An alternative method applies proxy configuration in a transient manner
during the execution of Ansible playbooks and defines a minimum set of
management network IP addresses for no_proxy
that are required for the
playbooks to succeed. These proxy settings do not persist after an Ansible
playbook run and the completed deployment does not require them in order to be
functional.
Оператор должен решить какой из данных подходов больше подходит для целевых хостов, учитывая следующие рекомендации:
#. Persistent proxy configuration is a standard practice and network clients on the target hosts will be able to access external resources after deployment.
#. The deployer must ensure that a persistent proxy configuration has complete
coverage of all OpenStack management network host/containers“ IP addresses in
the no_proxy
environment variable. It is necessary to use a list of IP
addresses, CIDR notation is not valid for no_proxy
.
#. Transient proxy configuration guarantees that proxy environment variables
will not persist, ensuring direct communication between services on the
OpenStack management network after deployment. Target host network clients
such as wget
will not be able to access external resources after
deployment.
#. The maximum length of no_proxy
should not exceed 1024 characters due to
a fixed size buffer in the pam_env
PAM module. Longer environment variables
will be truncated during deployment operations and this will lead to
unpredictable errors during or after deployment.
Однажды количество хостов/контейнеров в окружении достигнет определенного размера и длина no_proxy
превысит 1024 символа. В таком случае будет необходимо использовать временные настройки прокси, для чего указать только ряд IP адресов управляющей сети в no_proxy
во время развертывания.
Обратитесь к global_environment_variables: и deployment_environment_variables: в типовом user_variables.yml для получения деталей о настройке переменных окружения для постоянного и временного прокси.
Настройка прокси на хосте развертывания для подготовки Ansible¶
Скрипт bootstrap-ansible.sh
, используемый для установки Ansible и зависимостей Ansible ролей на хосте развертывания, использует настройки прокси, заданные переменными окружения HTTPS_PROXY
или HTTP_PROXY
.
Примечание
Мы рекомендуем задать ваши переменные окружения с настройками прокси в /etc/environment
перед запуском каких-либо скриптов или плейбуков что бы избежать ошибок.
Для больших или сложных окружений, выделенный хост развертывания позволит применить наиболее подходящую настройку прокси как для хоста развертывания, так и для целевых хостов.
Важные моменты при проксировании TLS трафика¶
Проксирование TLS трафика обычно сопровождается невозможностью валидации цепочки сертификатов клиентами. В плейбуках и ролях OpenStack-Ansible присутствуют различные переменные, которые позволяют оператору игнорировать подобные ошибки валидации. Вы можете найти пример из /etc/openstack_deploy/user_variables.yml
ниже:
pip_validate_certs: false
galera_package_download_validate_certs: false
Приведенный выше список намеренно не исчерпывающий. Дополнительные переменные могут существовать в проектах и будут называться согласно паттерну *_validate_certs. Выключайте проверку цепочки сертификатов ситуативно и только после возникновения ошибок, которые вызваны именно использованием прокси серверов.