Сценарий установки при помощи запуска Ansible плейбука
При переходе к данному разделу предполагается, что изучена информация общего блока автоматизированной установки.
Подготовка к установке
Для корректной работы скриптов автоматизации необходимо, чтобы на целевых узлах (master/replica/arbiter) у скриптов автоматизации была возможность доступа к rpm/deb-пакетам каждого участвующего в обновлении или первичном развертывании компонента. Для организации данного доступа во время установки будет создан локальный репозиторий со всеми возможными rpm/deb-пакетами дистрибутива, в том числе с rpm/deb-пакетами из 3rd Party части дистрибутива. Данный репозиторий не подвергается процессу удаления после окончания установки Pangolin.
Выполните следующие действия:
- Подготовьте конфигурационные файлы:
- Активируйте логирование инсталлятора (опционально).
- Подберите сценарий установки из примеров или сформируйте собственный сценарий развертывания.
- Запустите процесс установки.
- Ознакомьтесь с дальнейшими шагами после завершения процесса установки.
Все блоки подготовки и процесса установки являются обязательными, кроме блоков с указанием признака в заголовке: опционально.
Шаг 1. Подготовка конфигурационных файлов
Шаг 1.1. Заполнение inventory-файлов
Заполните inventory-файл в зависимости от конфигурации установки.
Файл hosts.ini заполняется в соответствии с шаблоном:
- для standalone находится по пути:
installer/inventories/standalone/hosts.ini; - для cluster находится по пути:
installer/inventories/cluster/hosts.ini.
Файл hosts.ini состоит из нескольких групп (имена определены в скобках), которые используются для классификации и определения того, какие хосты будут использоваться. Для установки необходимо заполнить переменные группы postgres_nodes и arbiter_nodes (для кластерной конфигурации):
ansible_host— в случае установки по IP-адресу, укажитеip_address, в случае установки по имени DNS укажитеhostname;ansible_user— имя пользователя для использования при подключении к хосту. Должен иметь права для эскалации доroot, то есть должен иметь возможность выполнять все команды от имениroot;- переменная
ansible_passwordдолжна содержать пароль пользователя в чистом виде или имя переменной, которая будет содержать засекреченный с помощьюansible-vaultпароль.
Пароль пользователя следует указывать в кавычках для того, чтобы избежать конфликтов при цитировании специальных символов. Пользователь, указанный в файле hosts.ini, должен обладать правами sudo + nologin.
Ниже представлены примеры файла hosts.ini для standalone и cluster архитектур.
- hosts.ini для standalone-конфигурации
- hosts.ini для кластерной конфигурации
[standalone:children]
postgres_group
[postgres_group:children]
postgres_nodes
[postgres_group:vars]
ansible_connection=ssh
[postgres_nodes]
master ansible_host=<IP-address> ansible_user=<user> ansible_password="<password>"
[cluster:children]
postgres_group
arbiter_group
[postgres_group:children]
postgres_nodes
[arbiter_group:children]
arbiter_nodes
[postgres_group:vars]
ansible_connection=ssh
[arbiter_group:vars]
ansible_connection=ssh
[postgres_nodes]
master ansible_host=<IP-address> ansible_user=<user> ansible_password="<password>"
replica ansible_host=<IP-address> ansible_user=<user> ansible_password="<password>"
[arbiter_nodes]
arbiter ansible_host=<IP-address> ansible_user=<user> ansible_password="<password>"
Нельзя менять в inventory имена узлов (master, replica, arbiter). В блоке arbiter_nodes указываются серверы, которые только участвуют в кластере etcd или Pangolin DCS, но не являются master или replica.
Засекречивание паролей (опционально)
При использовании функциональности засекречивания паролей необходимо учесть:
-
Если в файле
hosts.iniпеременнаяansible_passwordсодержитansible-vault, то пароль необходимо засекретить. Ниже приведен пример засекреченного текстаpasswordtestс помощьюansible-vault:ansible-vault encrypt_string passwordtest
New Vault password:
Confirm New Vault password:
!vault |
$ANSIBLE_VAULT;1.1;AES256
{password_encrypted}
Encryption successful -
В случае, когда пароли для хостов групп
postgres_groupиarbiter_groupсовпадают, достаточно вывод командыansible-vaultпоместить в inventory-файлсluster.yml/standalone.yml, расположенный в каталогеinventories/(standalone || cluster)/group_vars. Аналогичным образом необходимо перезасекретить пароли в файлеcustom_file_sample.yml(пример файла доступен в личном кабинете) тем же ключом, которым был засекречен пароль для учетной записи в текущем шаге.
Узнать подробнее о Ansible inventory можно в документации Ansible.
Шаг 1.2. Заполнение файла конфигурации custom_config_sample.yml
Пример конфигурационного файла custom_config_sample.yml, который можно использовать для развертывания продукта со значениями по умолчанию или с минимальными корректировками, находится в каталоге дистрибутива по пути: installer/templates/custom_config_sample.yml.
Поскольку custom_config_sample.yml является примером и вариантом готового решения, некоторые секции и параметры были перенесены в custom_config_initial.yml - конфигурационный файл, содержащий все динамически настраиваемые параметры СУБД Pangolin. Переопределите необходимые параметры в файле custom_config_sample.yml.
Заполните параметр postgres_db_pass в файл конфигурации для указания пароля пользователя postgres.
Рекомендуется ознакомиться с примером и описанием заполнения конфигурационного файла custom_config_initial.yml (раздел доступен в личном кабинете).
При инициализации СУБД локаль выбирается автоматически в зависимости от значения параметра tuner_profile. Если стенд настраивается для работы с 1С, рекомендуется задать tuner_profile = 1c. В этом случае в качестве значения для локали по умолчанию будет выбрано значение ru_RU.UTF-8, в остальных случаях – en_US.UTF-8.
Изменение паролей по умолчанию
Замените необходимые пароли, установленные по умолчанию, в разделах и параметрах конфигурационного файла custom_config_initial.yml, в зависимости от предполагаемой конфигурации СУБД:
# 3. INSTALL AND UPDATE
pangolin_dcs_rest_api:
dcs_root_password: <Пароль> # Пароль администратора Pangolin REST API
dcs_client_password: <Пароль> # Пароль клиента Pangolin REST API
patroni_yml.etcd.password: <Пароль> # Пароль для подключения etcd
# 3.1 HBA RULES
ldap_bind_tuz_password: <Пароль> # Пароль ТУЗ для ldap
# 3.2. SECURITY SETTINGS (SSL)
pg_certs_pwd:
pg.server_p12.p12_pass: <Пароль> # Пароль хранилища p12 для серверного сертификата
pgbouncer:
server_p12.p12_pass: <Пароль> # Пароль хранилища p12 для серверного сертификата
client_p12.p12_pass: <Пароль> # Пароль хранилища p12 для сертификата pgbouncer
patroni:
server_p12.p12_pass: <Пароль> # Пароль хранилища p12 для серверного сертификата
client_p12.p12_pass: <Пароль> # Пароль хранилища p12 для сертификата patroni
pangolin_dcs.p12.p12_pass: <Пароль> # Пароль хранилища p12 для серверного сертификата
pangolin_dcs_rest_api.p12.p12_pass: <Пароль> # Пароль хранилища p12 для серверного сертификата
# 3.6. PASSWORDS
pgbouncer_scram_password: SCRAM-SHA-256$4096:<Хеш> # Пароль pgbouncer, зашифрованный с использованием SCRAM-SHA-256
postgres_linux_pass: <Хеш> # Хеш пароля пользователя postgres
kmadmin_pg_linux_pass: <Хеш> # Хеш пароля пользователя kmadmin_pg
postgres_db_pass: <Пароль> # Пароль базы данных Postgres
patroni_password: <Пароль> # Пароль Patroni
pg_backup_user_passwd: <Пароль> # Пароль pg_backup_user
patroni_yml_pass: <Пароль> # Пароль patroniyml
Адаптация файла конфигурации СУБД
При запуске Ansible плейбука (playbook_install.yml) утилита Pangolin Tuner будет запущена автоматически. Она определяет оптимальные конфигурационные настройки в зависимости от профиля рабочей нагрузки.
Обязательным параметром для заполнения является путь к конфигурационному файлу tuner_config. Дополнительно выберите необходимый профиль нагрузки, соответствующий конкретным потребностям для использования оптимальных значений параметров, и пропишите его в значение конфигурационного параметра tuner_profile. В ином случае, по умолчанию будет использован профиль OLTP.
Путь к файлу tuner_config в зависимости от конфигурации установки:
-
для standalone-конфигурации:
#################################################### PANGOLIN TUNER ###############################################
tuner_config: "/pgdata/data/data/postgresql.conf"
tuner_profile: olap -
для кластерной конфигурации:
#################################################### PANGOLIN TUNER ###############################################
tuner_config: "/etc/pangolin-manager/postgres.yml"
tuner_profile: olap
При необходимости адаптированной конфигурации для интеграции с системой 1C:Предприятие используйте профиль 1C.
Заполнение пути к файлу с параметрами лицензии
Для целей соблюдения лицензионных условий продукта применяется файл, содержащий параметры лицензии и подписанный цифровой подписью с использованием приватного ключа.
При запуске установки (на будущем шаге) важно заполнить переменную pangolin_license_path, которая задает путь к директории содержащей лицензии или путь к конкретному файлу лицензии. Например, pangolin_license_path=/home/admin/license_trial.json. Имя файла значения не имеет.
Данная переменная окружения используется самим сервером и его утилитами для получения данных об используемой лицензии. Предпочтительно использовать директорию по пути /opt/pangolin_license.
Инсталлятор будет проверять валидность лицензии пяти основных типов:
license_standard_1C;license_standard;license_enterprise_1C;license_enterprise;license_trial.
Подробнее можно ознакомиться в разделе «Реализация функциональности лицензирования в продукте».
Использование сертификатов (опционально)
При использовании функциональности работы с сертификатами между компонентов и/или сертификатами PKCS#12 обратите внимание на параметры mtls_support и pkcs12_plugin_enable.
Сгенерируйте сертификаты, в случае, если в настраиваемом конфигурационном файле выше было выставлено значение для параметра: mtls_support: true и/или pkcs12_plugin_enable: true:
-
Если активирован параметр
pkcs12_plugin_enable: true, то сертификаты должны быть сгенерированы в формате PKCS#12 или будут получены из Secret Management System (далее – SecMan), в зависимости от заполненных значений в пользовательском конфигурационном файле. Подробнее рассмотрено в документе «Руководство администратора», раздел «Использование сертификатов PKCS#12 в кластере Pangolin».Для поиска или генерации сертификата в SecMan необходимо активировать параметр
use_remote_pki: trueи заполнить атрибуты в разделеp12_secman:для каждого сертификата. -
При включенном параметре
mtls_support: trueскрипты развертывания и обновления продукта определяют расположение сертификатов через пути параметров соответствующего компонента (параметры из секции «3.2. НАСТРОЙКИ БЕЗОПАСНОГО ПОДКЛЮЧЕНИЯ (SSL)»custom_config_initial.yml) и проверяют их наличие (раздел с описанием параметров конфигурационного файла доступен в личном кабинете).Если сертификат отсутствует по указанному пути, то будет выведена блокирующая ошибка. Пример:
"{{ control_name }}.FAIL__Файл сертификата 'root.crt' не найден на хосте. Проверьте наличие файла и значение в пользовательском конфигурационном файле - 'custom_config_sample.yml'__{{ control_name }}.FAIL"Ниже приведен пример скрипта для генерации сертификатов и распространения их на указанные виртуальные машины:
Генерация сертификатов
#!/bin/sh
# IP/DNS-записи хостов.
hosts_list=(127.0.0.1 127.0.0.2 127.0.0.3)
# Пароль пользователя с root правами.
ssh_password=(TestPassword!)
# Пользователь с root-правами.
ssh_user=(admin_dev)
mkdir ssl
cd ssl
openssl req -new -nodes -text -out ./root.csr -keyout ./root.key -subj "/CN=PGSEdevCA"
openssl x509 -req -in ./root.csr -text -days 3650 -extfile /etc/pki/tls/openssl.cnf -extensions v3_ca -signkey ./root.key -out ./root.crt
openssl req -new -nodes -text -out ./client.csr -keyout ./client.key -subj "/CN=postgres"
openssl x509 -req -in ./client.csr -text -days 3650 -CA ./root.crt -CAkey ./root.key -CAcreateserial -out ./client.crt
openssl req -new -nodes -text -out ./patroni.csr -keyout ./patroni.key -subj "/CN=patroni"
openssl x509 -req -in ./patroni.csr -text -days 3650 -CA ./root.crt -CAkey ./root.key -CAcreateserial -out ./patroni.crt
openssl req -new -nodes -text -out ./patronietcd.csr -keyout ./patronietcd.key -subj "/CN=patronietcd"
openssl x509 -req -in ./patronietcd.csr -text -days 3650 -CA ./root.crt -CAkey ./root.key -CAcreateserial -out ./patronietcd.crt
openssl req -new -nodes -text -out ./pgbouncer.csr -keyout ./pgbouncer.key -subj "/CN=pgbouncer"
openssl x509 -req -in ./pgbouncer.csr -text -days 3650 -CA ./root.crt -CAkey ./root.key -CAcreateserial -out ./pgbouncer.crt
rm *.csr
######Copy_certs_on_nodes_and_generate_server_cert
for host in ${hosts_list[@]}
do
sshpass -p ${ssh_password} ssh -o StrictHostKeyChecking=no -p 22 ${ssh_user}@${host} 'sudo rm -rf /pg_ssl && sudo mkdir /pg_ssl && sudo chown $(whoami):$(whoami) /pg_ssl'
sshpass -p ${ssh_password} scp ./* ${ssh_user}@${host}:/pg_ssl
sshpass -p ${ssh_password} ssh -o StrictHostKeyChecking=no -p 22 ${ssh_user}@${host} 'cat << EOT >> /pg_ssl/server.conf
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[ ssl_client ]
extendedKeyUsage = clientAuth, serverAuth
basicConstraints = CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
subjectAltName = @alt_names
[ v3_ca ]
basicConstraints = CA:TRUE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
authorityKeyIdentifier=keyid:always,issuer
[alt_names]
EOT'
sshpass -p ${ssh_password} ssh -o StrictHostKeyChecking=no -p 22 ${ssh_user}@${host} 'cd /pg_ssl && echo DNS.1 = $(hostname -f) >> server.conf && echo IP.1 = $(hostname -i) >> server.conf && openssl req -new -nodes -text -out ./server.csr -keyout ./server.key -subj "/CN=$(hostname -f)" -config $(echo ./server.conf)'
sshpass -p ${ssh_password} ssh -o StrictHostKeyChecking=no -p 22 ${ssh_user}@${host} 'cd /pg_ssl && openssl x509 -req -in ./server.csr -text -days 3650 -CA ./root.crt -CAkey ./root.key -CAcreateserial -out ./server.crt -extensions ssl_client -extfile $(echo ./server.conf)'
sshpass -p ${ssh_password} ssh -o StrictHostKeyChecking=no -p 22 ${ssh_user}@${host} 'sudo chmod 0600 /pg_ssl/*.key && sudo chmod 0644 /pg_ssl/*.crt'
###/etc/pki/ca-trust/source/anchors/ - 'SberLinux' /etc/pki/tls/openssl.cnf\ - 'Altlinux' ###
sshpass -p ${ssh_password} ssh -o StrictHostKeyChecking=no -p 22 ${ssh_user}@${host} 'sudo cp /pg_ssl/root.crt /etc/pki/ca-trust/source/anchors/ && sudo update-ca-trust'
doneДанные сертификаты не будут подписаны, но будут являться минимальными требуемыми для установки. После установки продукта Pangolin необходимо подписать данные сертификаты в удостоверяющем центре (подробная информация о генерации сертификатов в документе «Руководство администратора», раздел «Генерация сертификатов»).
Скрипты развертывания не осуществляют проверку валидности сертификатов.
Установка с фиксированным UID/GID для пользователей (опционально)
Начиная с версии 6.3.0 была добавлена возможность установки с фиксированным UID/GID для пользователей.
Добавлены параметры:
kmadmin_user_group.is_enabled: переменная типа boolean, служащая для включения функциональности. ЗначениеTrueпринимается как флаг активации - в этом случае пользователь будет создан с указанными значениямиUID/GID. По умолчанию используется значениеFalse;pangolin_users_group.is_enabled: переменная типа boolean, включение функциональности для группыpangolin_users_group;pangolin_users_group.group_gid: переменная типа int, определяющая GID для группыpangolin_users_group. Значение по умолчанию: 226;kmadmin_user_group.group_gid: целочисленная переменная, содержащая значениеGIDдля пользователя группы. По умолчанию используется значение 126.kmadmin_user_group.user_uid: целочисленная переменная, содержащая значениеUIDдля пользователя. По умолчанию используется значение 126.
При развертывании из rpm/deb-пакетов функциональность активируется через объявление соответствующих переменных окружения.
Например, для пользователя kmadmin_pg перед установкой из пакета задаются $KMADMIN_PG_USER_GUID и $KMADMIN_PG_GROUP_GUID для UID/GID. Объявление (наличии в пространстве имен) этих переменных включает функциональность, при этом UID/GID берутся из заданных значений.
Если переменные не определены, значение для UID/GID выбираются из доступных.
Установка без наличия DNS сервера на устанавливаемых узлах
Начиная с версии 6.4.2, был добавлен параметр used_fqdn_host, отвечающий за установку СУБД Pangolin в средах, где не предусмотрен DNS-сервер. По умолчанию данный параметр активен (true), и скрипты автоматизации будут использовать DNS-сервер для установки продукта.
В случае наличия A-записи, равной DNS-имени hostname проверить работоспособность DNS-сервера можно командой dig hostname с узла, на котором будет запускаться ansible.
Пример:
➜ ~ dig <host_name>
; <<>> DiG 9.10.6 <<>> <host_name>
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27230
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;<host_name>. IN A
;; ANSWER SECTION:
<host_name>. 3600 IN A {ip-address}
В случае отсутствия А-записи или наличия записи, не соответствующей имени hostname, нужно выключить параметр used_fqdn_host (установить в значение false). Далее запустить установку СУБД Pangolin. Результатом данных действий будет установленный продукт в кластерной или standalone-конфигурации с использованием IP-адресов вместо DNS-записи.
При установке параметр следует отключить в конфигурационном файле, установив его значение в false:
used_fqdn_host: false
Для корректной работы скриптов автоматизации необходимо, чтобы у пользователя был предварительно корректно настроен DNS-сервер, так как скрипты используют доменное имя в своей работе.
Шаг 2. Логирование инсталлятора (опционально)
Для активации логирования работы инсталлятора необходимо прописать путь для лог-файла, который фиксирует логи процесса установки. Для этого выполните команду:
export ANSIBLE_LOG_PATH=<path>/ansible.log
Примеры сценариев возможных вариантов установки
В разделе приведены примеры сценариев возможных вариантов установки Pangolin.
Сценарий установки кластерного решения Pangolin с Pangolin Manager, etcd, Pangolin Pooler
Пример заполненной команды для запуска playbook_install.yaml в случае сценария cluster-установки Pangolin:
ansible-playbook -vvv playbook_install.yaml \
-i inventories/cluster/hosts.ini \
-t cluster-patroni-etcd-pgbouncer \
-e '{"as_admins":['admin_1', 'admin_2']}' \
-e '{"as_TUZ":['tuz_1']}' \
--flush-cache \
--extra-vars 'local_distr_path=/home/user/distributive \
installation_type=cluster \
PGDATA=/pgdata/07/data \
tablespace_name=tbl_name \
tablespace_location=/pgdata/07/tablespaces \
schema_name=shema \
db_name=first_db \
clustername=<clustername> \
custom_config=templates/custom_config_sample.yml \
nolog=true \
pangolin_license_path=/home/user/license_trial.json'
Обозначения
Значения используемых в команде запуска сценария ключей:
-i— путь к inventory-файлу;-t— теги для запуска;-vvv— уровень логирования Ansible. Может быть, как пустым, так и-vvvvvv, где запуск безv- минимальное логирование;-e,--extra-vars— переменные, которые по приоритету важнее переменных из inventory.
Используемые переменные:
as_admins— Active Directory логин или логины будущих администраторов АС. Если логинов несколько, то они указываются через запятую, без пробелов. Например,-e '{"as_admins":['admin, test_admin]}';as_TUZ— логины ТУЗ, которые будут созданы в результате установки. Если логинов несколько, то они указываются через запятую, без пробелов. Например,-e '{"as_TUZ":['tuz, test_tuz]}';tablespace_name— имя табличного пространства, которое будет создано в результате установки;tablespace_location— полный путь к каталогу, где будет расположено созданное табличное пространство;schema_name— имя схемы, которая будет создана в результате установки;db_name— имя базы данных, которая будет создана в результате установки;local_distr_path— абсолютный путь к загруженному и распакованному дистрибутиву Pangolin;custom_config— абсолютный путь к файлу конфигурацииcustom_config_sample.yml;pangolin_license_path— путь к директории, которая содержит лицензии или путь к конкретному файлу лицензии;nolog- скрытие логов во время установки.
В случае, если необходимо развернуть стенд с дополнительными настройками ролевой модели, пользовательской БД, схемами и расширениями необходимо отдельно запустить playbook_configure_roles.yaml или sh-скрипт run_configure.sh развертывания ролевой модели, который располагается в компоненте installer по пути scripts_external/configure_roles/configure_roles/templates/role_BASIC/run_configure.sh. Ролевая модель и скрипты ее настройки описаны в документе «Администрирование функциональностей».
Сценарий развертывания дополнительных настроек ролевой модели, пользовательской БД и расширений с помощью ansible-роли
Пример команды запуска сценария базовой ролевой модели:
ansible-playbook playbook_configure_roles.yaml \
-i inventories/cluster/hosts.ini \
-t cluster-patroni-etcd-pgbouncer \
-vv \
-e '{"as_admins":['test_admin']}' \
-e '{"as_TUZ":['test_tuz']}' \
--extra-vars 'local_distr_path=/home/user/distributive \
PGDATA=/pgdata/07/data \
tablespace_name=tbl_name \
tablespace_location=/pgdata/07/tablespaces \
schema_name=shema \
db_name=first_db \
custom_config=templates/custom_config_sample.yml' \
--ask-vault-pass
Обозначения
Используемые в команде переменные:
as_admins— Active Directory логин или логины будущих администраторов АС. Если логинов несколько, то они указываются через запятую, без пробелов. Например,-e '{"as_admins":['admin, test_admin]}';as_TUZ— логины ТУЗ, которые будут созданы в результате установки. Если логинов несколько, то они указываются через запятую, без пробелов. Например,-e '{"as_TUZ":['tuz, test_tuz]}';local_distr_path— абсолютный путь к загруженному и распакованному дистрибутиву Pangolin;PGDATA— полный путь к каталогу, где будет расположена инициализированная база данных;tablespace_name— имя табличного пространства, которое будет создано в результате установки;tablespace_location— полный путь к каталогу, где будет расположено созданное табличное пространство;schema_name— имя схемы, которая будет создана в результате установки;db_name— имя базы данных, которая будет создана в результате установки;custom_config— абсолютный путь к файлу конфигурацииcustom_config_sample.yml;--ask-vault-passили--vault-password-file— рассекречивание преобразованных файлов во время выполнения (опционально).
В случаях, если:
- все пароли указывались в открытом виде, параметр
--ask-vault-passи--vault-password-file='name_file_with_key'добавлять не нужно. - не планируется использовать
custom_config— есть возможность настройки параметров запуска через файлvariables.yml, расположенный в ролиconfigure_roles(scripts_external/configure_roles/group_vars/variables.yml).
Cценарий развертывания дополнительных настроек ролевой модели, пользовательской БД и расширений с помощью запускаемого bash-скрипта
Пример команды запуска скрипта:
sh ./role_BASIC/run_configure.sh -d First_db -s Sch1 -t Tbl_t -l /pgdata/07/tablespaces -m <IP-Address> -r <IP-Address> -p <Port> -a 'user1 user2' -u 'user3 user4' -w /home/postgres/role_BASIC -c "0,30 * * * *" -g "'as_admin_pass':SCRAM-SHA-256$4096:{hash} 'as_tuz_pass':SCRAM-SHA-256$4096:{hash} -f "'pg_profile':True 'rotate_password':True 'psql_lockmon_is_enable':True" -e 'infinity' -v 'TEMPORARY' -k 'backup_user' -z false -o 'en_US.UTF-8' -n 'postgres'
Обозначения
Используемые в команде переменные:
d,dbname– имя пользовательской БД;s,schname– имя пользовательской схемы;t,tsname– имя пользовательского табличного пространства;l,tsloc- путь к табличному пространству;m,mhost- IP-адрес хоста мастера (данный параметр является обязательным, так как используется для настройки расписания pg_cron);r,rhostIP-адрес хоста реплики (данный параметр является обязательным, так как используется для настройки расписания pg_cron);p,port- порт PostgreSQL;a,asadm– список ТУЗ as_admin;u,astuz- список ТУЗ as_TUZ;w,way- путь к папке со скриптами конфигурирования (данный параметр является обязательным);c,cronp- период времени для cron job pg_profile;g,grpas- список паролей для УЗ (передается в виде словаря, например:as_admin_pass':passwd1 'zabbix_pass':passwd2);f,fchlst- список включаемой функциональности при развертывании (передается в виде словаря, например:'pg_profile':True 'rotate_password':False);e,expdt- параметр времени жизни УЗ (expire date);v,vrpas- флаг, указывающий на использование временных паролей;k,backusname- имя пользователя для резервного копирования (по умолчанию backup_user);z,tdeadm- включить/выключить TDE;o,locale- параметр для определения locale при создании пользовательской БД (должен совпадать с параметром, установленным при развертывании);n,prdbname- имя пользовательской БД, где будет создан pg_profile.
Запуск сценария установки
На начальном этапе установки любой схемы Pangolin проводятся проверки корректности переданных на вход инсталлятору значений. Например, к таким проверкам относится проверка того, что при задании параметров tablespace_name, db_name, schema_name, as_admins, as_TUZ нельзя использовать префикс pg_, так как данный префикс зарезервирован системой для своих нужд.
-
Заполните параметры, заключенные в
< >, запуститеplaybook_install.yamlиз директорииinstallerдистрибутива продукта:Обозначения
Значения используемых в команде запуска сценария ключей:
-i— путь к inventory-файлу;-t— теги для запуска;-vvv— уровень логирования Ansible. Может быть, как пустым, так и-vvvvvv, где запуск безv- минимальное логирование;-e,--extra-vars— переменные, которые по приоритету важнее переменных из inventory.
Параметры для заполнения:
<cluster||standalone>- выбор нужной конфигурации: cluster или standalone;<configuration>- выбор сценария:cluster-patroni-etcd-pgbouncerилиstandalone-postgresql-pgbouncer;<clustername>- наименование кластера;<path_to_distributive>- путь к загруженному и распакованному дистрибутиву Pangolin;<base_version>- базовая версия Pangolin (текущая: 7).
Используемые переменные:
as_TUZ— логины ТУЗ, которые будут созданы в результате установки. Если логинов несколько, то они указываются через запятую, без пробелов. Например,-e '{"as_TUZ":['tuz, test_tuz]}'(опционально);local_distr_path— абсолютный путь к загруженному и распакованному дистрибутиву Pangolin;custom_config— абсолютный путь к файлу конфигурацииcustom_config_sample.yml;pangolin_license_path— путь к директории, которая содержит лицензии или путь к конкретному файлу лицензии;nolog- скрытие логов во время установки.
ansible-playbook -vvv playbook_install.yaml \
-i inventories/<cluster||standalone>/hosts.ini \
-t <configuration> \
-e '{"as_TUZ":['tuz_1']}' \
--flush-cache \
--extra-vars 'local_distr_path=<path_to_distributive> \
installation_type=<cluster||standalone> \
PGDATA=/pgdata/0<base_version>/data \
clustername=<clustername> \
custom_config=templates/custom_config_sample.yml \
pangolin_license_path=/home/user/license_trial.json \
nolog=true'Внимание!После установки будут созданы символические ссылки для следующих директорий:
/pgdata/data->/pgdata/0<base_version>/usr/pangolin->/usr/pangolin-<product_version>
-
Дождитесь окончания установки и деактивируйте виртуальное окружение:
deactivate
Дальнейшие шаги
На конечном этапе установки любой схемы Pangolin происходят следующие автоматические проверки:
- консистентность состава установки;
- наличие документации;
- проверка конфигурационных файлов всех сервисов;
- интерфейсные проверки всех сервисов.
Для проверки успешности завершения установки рекомендуется обратиться к шагам «Проверки результата» в общем блоке автоматизированной установки.