Формула tpl-group-members-formula
Формула-шаблон для управления членством в локальных группах.
Доступные состояния
Состояние tpl-group-members
Мета-состояние (состояние, которое включает в себя другие состояния).
Создает и управляет локальными настройками групп.
Имеет зависимость от tpl-group-members.install через список include.
Состояние tpl-group-members.install
Создает group_name (если эта группа отсутствует на агенте) и изменяет настройки группы.
-
если для параметра
changeустановлено значениеadd, список пользователей будет добавлен в качестве новых членов группы; -
если для параметра
changeустановлено значениеdel, пользователи будут исключены из состава группы; -
если для параметра
changeустановлено значение"", заменяет существующих членов группы списком новых участников.
Состояние tpl-group-members.clean
Удаляет группу group_name на агенте.
Пример файла pillar.example
tpl-group-members:
# Переопределите значение map.jinja
lookup:
# Задайте имя группы
group_name: "sudo"
# Задайте id для группы;
# Если оставить поле пустым, группе автоматически будет присвоен следующий свободный идентификатор.
gid: ""
# Укажите, является ли группа системной группой.
# Это опция '-r' в команде 'groupadd`
system: false
# Задайте действие для списка пользователей: добавить (`add`), удалить(`del`) или заменить ("").
change: ""
# Задайте список пользователей
users: [
"user1",
"user2",
]
Написание формулы типа tpl-group-members-formula
-
Скопируйте формулу-шаблон (
tpl-group-members) в новую директорию с новым названием (my-group-members).$ tar -xvf ~/Downloads/inno-lcm-salt-formulas-X.Y.Z.tar.gz \ --strip-components 3 \ -C ~/ \ ./formulas/tpl-yb-settings-formula/tpl-group-members $ cp -R ~/tpl-group-members/ ~/my-group-members && cd ~/my-group-members -
В файле состояний
install.sls(создание и настройка группы) измените ID состояний:# -*- coding: utf-8 -*- # vim: ft=sls {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {%- from tplroot ~ "/map.jinja" import mapdata as tplgroupmembers with context %} {%- if tplgroupmembers.group_name %} my-group-members-group-present: group.present: - name: {{ tplgroupmembers.group_name }} {%- if tplgroupmembers.gid %} - gid: {{ tplgroupmembers.gid }} {%- endif %} {%- if tplgroupmembers.system %} - system: {{ tplgroupmembers.system }} {%- endif %} {%- if tplgroupmembers.change == 'add' %} - addusers: {{ tplgroupmembers.users }} {%- elif tplgroupmembers.change == 'del' %} - delusers: {{ tplgroupmembers.users }} {%- else %} - members: {{ tplgroupmembers.users }} {%- endif %} {%- endif %} -
В файле состояний
clean.sls(удаление группы) измените ID состояний:# -*- coding: utf-8 -*- # vim: ft=sls {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {%- from tplroot ~ "/map.jinja" import mapdata as tplgroupmembers with context %} {%- if tplgroupmembers.group_name %} my-group-members-group-absent: group.absent: - name: {{ tplgroupmembers.group_name }} {%- endif %} -
Измените файл
map.jinja(словарь со значениями по умолчанию). Например, добавьте в группуsudoнекоторых пользователей, для этого:-
Измените имя ключа для словаря в хранилище Pillar, используемого для динамического переопределения значений по умолчанию.
-
Измените значение
group_nameнаsudo. -
Измените значение
changeнаadd(добавить в группу). -
Измените значение
users, указав список пользователей.{% set mapdata = salt['grains.filter_by']({ 'default': { 'group_name': 'sudo', 'gid': '', 'system': false, 'change': '', 'users': [ 'user1', 'user2', ], }, }, merge=salt['pillar.get']('my-group-members:lookup'), base='default') %}
-
| После того как формула будет написана, следуйте инструкциям по работе с формулой. |