Описание узла развёртывания - TripleO
Основной пользователь, от имени которого выполняется управление всеми системами узла развёртывания - stack. Подключитесь к узлу развёртывания по SSH. Далее все команды и действия будут указываться с узла развёртывания от имени пользователя stack.
При успешной установке узла развёртывания на нём будут развёрнуты необходимые сервисы, включая сервисы OpenStack:
Ironic, IronicInspector - сервисы управления baremetal узлами
Neutron - сервис управления сетями
Mysql - сервис управления базой данных
RabbitMQ - сервис управления очередями сообщений
Redis - сервис управления кэшем
В том числе будут установлены дополнительные пакеты TripleO и overcloud CLI.
В домашней директории /home/stack находится файл stackrc:
[stack@undercloud ~]$ cat stackrc
# Clear any old environment that may conflict.
for key in $( set | awk -F= '/^OS_/ {print $1}' ); do unset "${key}" ; done
export OS_CLOUD=undercloud
# Add OS_CLOUDNAME to PS1
if [ -z "${CLOUDPROMPT_ENABLED:-}" ]; then
export PS1=${PS1:-""}
export PS1=\${OS_CLOUD:+"(\$OS_CLOUD)"}\ $PS1
export CLOUDPROMPT_ENABLED=1
fi
Этот файл используется для обращения к OpenStack API узла развёртывания.
Среди созданных сетей openstack network list вы увидите сеть ctlplane.
Все сервисы OpenStack запущены в контейнерах. Для проверки этого выполните:
(undercloud) [stack@undercloud ~]$ sudo podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
272e1d2dc1d4 undercloud.ctlplane:8787/acloud/openstack-redis:latest kolla_start 2 days ago Up 2 days (healthy) redis
e8e22f11f175 undercloud.ctlplane:8787/acloud/openstack-rabbitmq:latest kolla_start 2 days ago Up 2 days (healthy) rabbitmq
f6e33846a532 undercloud.ctlplane:8787/acloud/openstack-mariadb:latest kolla_start 2 days ago Up 2 days (healthy) mysql
738721e2af73 undercloud.ctlplane:8787/acloud/openstack-cron:latest kolla_start 2 days ago Up 2 days (healthy) logrotate_crond
<...>
Каждому рабочему контейнеру также соответствует сервис systemd, который перезапускает контейнер при падении. Выполните:
(undercloud) [stack@undercloud ~]$ sudo systemctl | grep tripleo_
tripleo_ironic_api.service loaded active running ironic_api container
tripleo_ironic_conductor.service loaded active running ironic_conductor container
tripleo_ironic_inspector.service loaded active running ironic_inspector container
tripleo_ironic_inspector_dnsmasq.service loaded active running ironic_inspector_dnsmasq container
tripleo_ironic_neutron_agent.service loaded active running ironic_neutron_agent container
<...>
Поэтому для того, чтобы остановить какой-либо контейнер, используйте команду:
sudo systemctl stop tripleo_$service_name
Все изменяемые файлы и директории в сервисах как правило выносятся в хост систему из контейнера:
sudo podman inspect $container_name | jq .[0].Mounts
Поэтому при необходимости можно контейнеры удалять и пересоздавать, не боясь потерять данные.
Для этого тоже можно использовать podman inspect, чтобы узнать команду, которой был создан контейнер:
sudo podman inspect $container_name | jq .[0].Config.CreateCommand
Обратите внимание, что все контейнеры (кроме одного) запускаются с командой kolla_start.
Эта команда использует файлы конфигурации kolla_config для запуска процессов внутри контейнера. Например:
(undercloud) [stack@undercloud ~]$ sudo cat /var/lib/kolla/config_files/neutron_api.json
{
"command": "/usr/bin/neutron-server --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-server --log-file=/var/log/neutron/server.log",
"config_files": [
{
"dest": "/",
"merge": true,
"preserve_properties": true,
"source": "/var/lib/kolla/config_files/src/*"
},
{
"dest": "/",
"merge": true,
"optional": true,
"preserve_properties": true,
"source": "/var/lib/kolla/config_files/src-tls/*"
}
],
}
Рассмотрим подробнее:
command- команда, которая будет запущена в контейнереconfig_files- список файлов, которые будут скопированы в контейнер из хост системы.dest- путь внутри контейнера, куда будет скопирован файлmerge- еслиtrue, то файлы будут скопированы в директориюdest, еслиfalse- то весь каталогsourceбудет скопирован вdest,preserve_properties- еслиtrue, то будут сохранены права доступа к файлу и владелецsource- путь внутри контейнера, который будет скопирован вdest.
Отдельно хочу выделить путь /var/lib/kolla/config_files/src/*.
Для контейнера neutron_api - это директория /var/lib/config-data/puppet-generated/neutron.
Для других контейнеров это путь /var/lib/config-data/puppet-generated/$service_name.
Это директория, в которой хранятся все файлы конфигурации необходимые для сервиса.
После запуска контейнера команда kolla_start копирует все вышеуказанные файлы в / системы контейнера и запускает команду, указанную в command.
При этом сами файлы в папке /var/lib/config-data/puppet-generated/ генерируются puppet манифестами также запускаемыми в контейнерах.
Посмотреть на эти контейнеры можно через:
sudo podman ps -a | grep container-puppet