Использование плейсхолдера имени пользователя в формулах

Администраторы могут использовать системный плейсхолдер 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 выполните следующие шаги:

  1. В формуле обращайтесь к переменной через formula_config.get('full_domain_user_name', 'unknown-user'), чтобы безопасно извлечь имя пользователя со значением по умолчанию.

  2. Используйте {{ full_domain_user_name }} в шаблонах Jinja для динамической вставки имени пользователя в файлы, команды или условия.

  3. Загрузите формулу в пользовательский интерфейс «Кабинет администратора» в виде архива .tar.gz, соблюдая структуру каталогов formula/ и formula/init.sls.

  4. Создайте конфигурацию типа «Программное обеспечение» и свяжите ее с загруженной формулой.

  5. Укажите пустой pillar ({}) при создании версии конфигурации — система автоматически добавит full_domain_user_name при выполнении заказа.

  6. Опубликуйте конфигурацию в МП для целевой группы пользователей.

  7. Проведите тестирование: пусть пользователь создаст заказ на установку — система передаст его имя в pillar автоматически.

  8. После завершения заказа проверьте результат на целевом АРМ: убедитесь, что файлы, использующие {{ full_domain_user_name }}, содержат корректное имя пользователя в формате username@domain.

Проверка результата

После успешного выполнения заказа на АРМ пользователя alex@osmax.local файл /opt/shared/user-name-test.txt будет содержать:

Full Domain User Name: alex@osmax.local

Если пользователь не определен:

Full Domain User Name: unknown-user