Доп. параметры групповых политик

NewGriff

Участник
Регистрация
29.09.25
Сообщения
11
Реакции
2
Решил, что в мире так мало инструкций и решил осчастливить всех еще одной про создание Групповых Политик для АЛД.

Политики в АЛД делятся на две группы, ПРОСТЫЕ и НЕОЧЕНЬ.

Простые групповые политики.​


Для составления собственных групповых политик используется функция Доп. параметр групповых политик.


Управление доменом -> Доп. параметры групповых политик


Основное​



ОсновноеЗначение
Название параметраtest_atribute_2_message
Уникальный идентификаторtest_atribute_2_message
Тип каталогаПараметр компьютерной групповой политики
Тип параметраПростой параметр
Папка параметраtest
Назначение параметраТестовый параметр
Требования к ОС




Pasted image 20251212152419.png


Атрибуты параметра​


Для того, чтобы политика применилась на ПК необходимо создать Атрибут с любым значением, например default_atribute


Атрибуты параметраЗначение
Имя атрибутаdefault_atribute
Идентификаторd_atribute
ОписаниеАтрибут нужен только для того, чтобы групповая политика отрабатывала на ПК


Pasted image 20251212152347.png



Pasted image 20251212152316.png


Конфигурация скрипта:​


Результатом выполнения скрипта будет создание файла с содержимым Hello World!!!

{% set A_MESSAGE = "Hello World!!!" %}
test_script:
cmd.run:
- name: |
echo '{{ A_MESSAGE }}' > /tmp/test_message.txt

Краткое пояснение:
  1. {% set A_MESSAGE = "Hello World!!!" %} - установка переменной Jinja2
  2. test_script: - идентификатор состояния (state ID)
  3. cmd.run: - использование модуля для выполнения команд
  4. - name: - параметр, содержащий выполняемую команду
  5. echo '{{ A_MESSAGE }}' > /tmp/test_message.txt - команда, которая запишет "Hello World!!!" в указанный файл

{# Установка переменной A_MESSAGE с помощью Jinja2.
Эта переменная будет доступна в контексте состояния SaltStack #}


{% set A_MESSAGE = "Hello World!!!" %}


{# Начало определения состояния SaltStack с идентификатором 'test_script' #}


test_script:


{# Использование модуля cmd.run для выполнения команды на целевом хосте #}


cmd.run:

{# Параметр 'name' содержит команду, которая будет выполнена #}

- name: |
{# Многострочная команда, которая:
1. Выводит значение переменной A_MESSAGE
2. Перенаправляет вывод в файл /tmp/test_message.txt
Значение переменной подставляется с помощью Jinja2 #}

echo '{{ A_MESSAGE }}' > /tmp/test_message.txt

Pasted image 20251212152439.png





-------------------------------------------------------------------------------------------------



Использование Атрибута в групповой политике.​

И вот вариант неочень простой политики с использованием Атрибутов.

Для того, чтобы задавать значение переменной (например здесь A_MESSAGE) с помощью Атрибутов параметра при конфигурации Групповой политики, необходимо изменить доп. параметр следующим образом.


Основное​


(остаётся прежним)


ОсновноеЗначение
Название параметраtest_atribute_2_message
Уникальный идентификаторtest_atribute_2_message
Тип каталогаПараметр компьютерной групповой политики
Тип параметраПростой параметр
Папка параметраtest
Назначение параметраТестовый параметр
Требования к ОС

Атрибуты параметра​


Для того, чтобы политика применилась на ПК необходимо создать Атрибут с любым значением, например default_atribute


Атрибуты параметраЗначение
Имя атрибутаMesage
Идентификаторa_message
ОписаниеАтрибут, текстовая строка


Pasted image 20251212153720.png


Pasted image 20251212153731.png




Конфигурация скрипта:​

{% set my_host = salt['grains.get']("nodename") %}
{% set A_MESSAGE = salt['pillar.get']('aldpro-hosts:' + my_host + ':rbta_ldap_custom_gp_host_test_atribute_2_message:a_message') %}
test_script:
cmd.run:
- name: |
echo '{{ A_MESSAGE }}' > /tmp/test_message.txt



Краткое пояснение:


  1. Первая строка получает имя текущего хоста из grains
  2. Вторая строка использует это имя для получения специфичного для хоста сообщения из pillar
  3. Остальная часть - определение состояния SaltStack, которое записывает это сообщение в файл
Важно: Эта конфигурация является более продвинутой, так как:
  • Использует динамические данные (имя хоста)
  • Получает конфигурацию из pillar (централизованное управление)
  • Позволяет иметь разные сообщения для разных хостов
{# Получаем значение зерна (grains) 'nodename' с помощью SaltStack execution module.
Это имя текущего целевого хоста (миньона) и сохраняем его в переменную my_host #}
{% set my_host = salt['grains.get']("nodename") %}

{# Получаем значение из pillar, используя составной ключ.
Ключ формируется динамически: 'aldpro-hosts:' + my_host + ':rbta_ldap_custom_gp_host_test_atribute_2_message:a_message'
Это позволяет получать разные сообщения для разных хостов из pillar-данных #}
{% set A_MESSAGE = salt['pillar.get']('aldpro-hosts:' + my_host + ':rbta_ldap_custom_gp_host_test_atribute_2_message:a_message') %}

{# Начало определения состояния SaltStack с идентификатором 'test_script' #}
test_script:

{# Использование модуля cmd.run для выполнения команды на целевом хосте #}
cmd.run:

{# Параметр 'name' содержит команду, которая будет выполнена #}
- name: |
{# Многострочная команда, которая:
1. Выводит значение переменной A_MESSAGE (полученное из pillar)
2. Перенаправляет вывод в файл /tmp/test_message.txt
Значение переменной подставляется с помощью Jinja2 #}
echo '{{ A_MESSAGE }}' > /tmp/test_message.txt


ПОЯСНЕНИЯ:​


При применении групповых политик (aldpro-gpupdate --gp) формируется файл (/opt/rbta/aldpro-salt/minion/gp-host_pillar.json) с перечислением заданных Атрибутов назначенных групповых политик.


{
"aldpro-users": {},
"aldpro-hosts": {
"vm001.my.domain.local": {
"rbta_ldap_master_minion": {
"rbta_ldap_master_minion__variables": "true"
},
"rbta_ldap_custom_gp_host_apt-update": {
"install": "install"
},
"rbta_ldap_auth_fast": {
"rbta_ldap_auth_fast__preferences": "never"
},
"rbta_ldap_custom_gp_host_dns-workstation": {
"install": "$true"
},
"rbta_ldap_custom_gp_host_r7-organizer-lickey": {
"install": "$True"
},
"rbta_ldap_custom_gp_host_test_atribute_2_message": {
"a_message": "!!!dlroW olleH"
},
"rbta_ldap_custom_gp_host_sssd-cache-expiration": {
"install": "$true"
},
"rbta_ldap_custom_gp_host_cert-deploy-2-browser": {
"deployed": "$true"
},
"rbta_ldap_custom_gp_host_r7-office-lickey": {
"install": "$true"
},
"rbta_ldap_custom_gp_host_apt-sources-list": {
"install": "$true"
},
"rbta_ldap_custom_gp_host_sssd-dnsupdate-conf": {
"install": "true"
}
}
}
}

Pasted image 20260520162854.png




Задаем параметр my_host (в данном случае это имя компьютера)

{% set my_host = salt['grains.get']("nodename") %}


Строка формируется следующим образом:

{% set A_MESSAGE = salt['pillar.get']('aldpro-hosts:' + my_host + ':rbta_ldap_custom_gp_host_test_atribute_2_message:a_message') %}


salt['pillar.get'] - вызов модуля исполнения SaltStack
'aldpro-hosts:' - pillar.get - модуль pillar с функцией get
my_host - переменная полученная выше
':rbta_ldap_custom_gp_host_test_atribute_2_message:a_message' - :путь внутри раздела: конечный ключ для получения значения

Pasted image 20260520162939.png



Ну и собственно ради чего было городить весь этот огород

Pasted image 20260520165649.png
 
Назад
Сверху Снизу