NewGriff
Участник
- Регистрация
- 29.09.25
- Сообщения
- 11
- Реакции
- 2
Решил, что в мире так мало инструкций и решил осчастливить всех еще одной про создание Групповых Политик для АЛД.
Политики в АЛД делятся на две группы, ПРОСТЫЕ и НЕОЧЕНЬ.
Для составления собственных групповых политик используется функция Доп. параметр групповых политик.
Управление доменом -> Доп. параметры групповых политик
Для того, чтобы политика применилась на ПК необходимо создать Атрибут с любым значением, например default_atribute
Результатом выполнения скрипта будет создание файла с содержимым Hello World!!!
Краткое пояснение:
-------------------------------------------------------------------------------------------------
Для того, чтобы задавать значение переменной (например здесь A_MESSAGE) с помощью Атрибутов параметра при конфигурации Групповой политики, необходимо изменить доп. параметр следующим образом.
(остаётся прежним)
Для того, чтобы политика применилась на ПК необходимо создать Атрибут с любым значением, например default_atribute
Краткое пояснение:
При применении групповых политик (aldpro-gpupdate --gp) формируется файл (/opt/rbta/aldpro-salt/minion/gp-host_pillar.json) с перечислением заданных Атрибутов назначенных групповых политик.
Задаем параметр my_host (в данном случае это имя компьютера)
Строка формируется следующим образом:
salt['pillar.get'] - вызов модуля исполнения SaltStack
'aldpro-hosts:' - pillar.get - модуль pillar с функцией get
my_host - переменная полученная выше
':rbta_ldap_custom_gp_host_test_atribute_2_message:a_message' - :путь внутри раздела: конечный ключ для получения значения
Ну и собственно ради чего было городить весь этот огород
Политики в АЛД делятся на две группы, ПРОСТЫЕ и НЕОЧЕНЬ.
Простые групповые политики.
Для составления собственных групповых политик используется функция Доп. параметр групповых политик.
Управление доменом -> Доп. параметры групповых политик
Основное
| Основное | Значение |
|---|---|
| Название параметра | test_atribute_2_message |
| Уникальный идентификатор | test_atribute_2_message |
| Тип каталога | Параметр компьютерной групповой политики |
| Тип параметра | Простой параметр |
| Папка параметра | test |
| Назначение параметра | Тестовый параметр |
| Требования к ОС |
Атрибуты параметра
Для того, чтобы политика применилась на ПК необходимо создать Атрибут с любым значением, например default_atribute
| Атрибуты параметра | Значение |
|---|---|
| Имя атрибута | default_atribute |
| Идентификатор | d_atribute |
| Описание | Атрибут нужен только для того, чтобы групповая политика отрабатывала на ПК |
Конфигурация скрипта:
Результатом выполнения скрипта будет создание файла с содержимым Hello World!!!
{% set A_MESSAGE = "Hello World!!!" %}
test_script:
cmd.run:
- name: |
echo '{{ A_MESSAGE }}' > /tmp/test_message.txt
Краткое пояснение:
- {% set A_MESSAGE = "Hello World!!!" %} - установка переменной Jinja2
- test_script: - идентификатор состояния (state ID)
- cmd.run: - использование модуля для выполнения команд
- - name: - параметр, содержащий выполняемую команду
- 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
Эта переменная будет доступна в контексте состояния 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
-------------------------------------------------------------------------------------------------
Использование Атрибута в групповой политике.
И вот вариант неочень простой политики с использованием Атрибутов.Для того, чтобы задавать значение переменной (например здесь A_MESSAGE) с помощью Атрибутов параметра при конфигурации Групповой политики, необходимо изменить доп. параметр следующим образом.
Основное
(остаётся прежним)
| Основное | Значение |
|---|---|
| Название параметра | test_atribute_2_message |
| Уникальный идентификатор | test_atribute_2_message |
| Тип каталога | Параметр компьютерной групповой политики |
| Тип параметра | Простой параметр |
| Папка параметра | test |
| Назначение параметра | Тестовый параметр |
| Требования к ОС |
Атрибуты параметра
Для того, чтобы политика применилась на ПК необходимо создать Атрибут с любым значением, например default_atribute
| Атрибуты параметра | Значение |
|---|---|
| Имя атрибута | Mesage |
| Идентификатор | a_message |
| Описание | Атрибут, текстовая строка |
Конфигурация скрипта:
{% 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
Краткое пояснение:
- Первая строка получает имя текущего хоста из grains
- Вторая строка использует это имя для получения специфичного для хоста сообщения из pillar
- Остальная часть - определение состояния 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
Это имя текущего целевого хоста (миньона) и сохраняем его в переменную 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"
}
}
}
}
"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"
}
}
}
}
Задаем параметр 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' - :путь внутри раздела: конечный ключ для получения значения
Ну и собственно ради чего было городить весь этот огород