Использование плейсхолдера имени пользователя в формулах
Администраторы могут использовать системный плейсхолдер full_domain_user_name, передаваемый в pillar при выполнении заказов через пользовательский интерфейс «Магазин приложений» (МП), для динамической настройки конфигураций на целевых АРМ.
Общие сведения
При создании заказа на установку, обновление или удаление ПО через МП система автоматически передает имя пользователя, инициировавшего заказ, в формате username@domain в виде параметра full_domain_user_name внутри секции pillar вызова SaltStack на одном уровне с параметром version_id.
Этот плейсхолдер предназначен для использования в формулах SaltStack при необходимости вставить имя инициатора заказа в конфигурацию целевого АРМ. Пример применения — создание файла с именем или содержанием плейсхолдера в общедоступной директории.
При использовании плейсхолдера учитывайте следующие ограничения:
-
пользователь может просматривать историю установок ПО, инициированную любыми другими пользователями на том же АРМ — доступ к данным не ограничивается по принадлежности заказа;
-
плейсхолдер доступен только для конфигураций, использующих версию с поддержкой pillar;
-
для заказов, созданных до реализации передачи имени инициатора заказа из МП, значение
full_domain_user_nameотсутствует — для обработки таких случаев рекомендуется задавать значение по умолчанию.
Пример формулы
Следующий файл init.sls формулы демонстрирует использование плейсхолдера full_domain_user_name для создания файла с именем пользователя:
# -*- coding: utf-8 -*-
# vim: ft=sls
{#- Получаем корневой каталог формулы из пути шаблона #}
{%- set tplroot = tpldir.split('/')[0] %}
{#- Получаем конфигурацию формулы из pillar #}
{%- set formula_config = salt['pillar.get'](tplroot, {}) %}
{#- Извлекаем имя пользователя из pillar, со значением по умолчанию #}
{%- set full_domain_user_name = formula_config.get('full_domain_user_name', 'unknown-user') %}
# Создаем общедоступную директорию
/opt/shared:
file.directory:
- mode: 0755
- user: root
- group: root
- makedirs: True
# Создаем файл с именем пользователя
/opt/shared/user-name-test.txt:
file.managed:
- mode: 0755
- user: root
- group: root
- contents: |
Full Domain User Name: {{ full_domain_user_name }}
- require:
- file: /opt/shared
Настройка и использование формулы
Для использования плейсхолдера full_domain_user_name в формулах SaltStack выполните следующие шаги:
-
В формуле обращайтесь к переменной через
formula_config.get('full_domain_user_name', 'unknown-user'), чтобы безопасно извлечь имя пользователя со значением по умолчанию. -
Используйте
{{ full_domain_user_name }}в шаблонах Jinja для динамической вставки имени пользователя в файлы, команды или условия. -
Загрузите формулу в пользовательский интерфейс «Кабинет администратора» в виде архива .tar.gz, соблюдая структуру каталогов formula/ и formula/init.sls.
-
Создайте конфигурацию типа «Программное обеспечение» и свяжите ее с загруженной формулой.
-
Укажите пустой pillar (
{}) при создании версии конфигурации — система автоматически добавитfull_domain_user_nameпри выполнении заказа. -
Опубликуйте конфигурацию в МП для целевой группы пользователей.
-
Проведите тестирование: пусть пользователь создаст заказ на установку — система передаст его имя в pillar автоматически.
-
После завершения заказа проверьте результат на целевом АРМ: убедитесь, что файлы, использующие
{{ full_domain_user_name }}, содержат корректное имя пользователя в форматеusername@domain.