Size: a a a

2020 February 25

n

n3 in Saltstack
{% for user, args in pillar.get('users', {}).items() %}
{{user}}:
 user.present:
   - fullname: {{ args['fullname'] }}
   - home: {{ args['home'] }}
   - shell: /bin/bash

{{user}}_key:
 ssh_auth.present:
   - user: {{user}}
   - names:
     {% for key in args['ssh-keys'] %}
     - {{ key }}
     {% endfor %}

{% for user, args in pillar.get('ops-team', {}).items() %}
{{user}}_root_key:
 ssh_auth.present:
   - user: root
   - names:
     {% for key in args['ssh-keys'] %}
     - {{ key }}
     {% endfor %}
{% endfor %}
{% endfor %}

{% for user, args in pillar.get('fired', {}).items() %}
{{user}}:
 user.absent: []
 group.absent: []
{% if args['ssh-keys'] %}
{{user}}_root_key:
 ssh_auth.absent:
   - user: root
   - user: {{user}}
{% endif %}
{% endfor %}
источник

n

n3 in Saltstack
Обгадился с разметкой, простите. Итак, по моей логике: в пилларах лежат team*.sls ops-team.sls, fired.sls
источник

n

n3 in Saltstack
users:
 v.pupkin:
   fullname: Vasya Pupkin
   home: /home/v.pupkin/
   group: admins
   ssh-keys:
       - ssh-rsa
источник

n

n3 in Saltstack
Пример пиллара.
источник

n

n3 in Saltstack
Я не понимаю (да, именно так, туго догоняю):
1) Я хочу сделать отдельный стэйт типа givesudo.sls чтобы напрямую обращаться к структуре пиллара, брать его аргументы, и временно давать судо на хосте, потом альтернативно отнимать.
2) Как разрулить грэйнсами всех пользаков, которых нет в пилларах. Мне нужно удалять с машин ВСЕХ не валидных (вот тут уже может у кого-то есть решение), уровня, выпиливать из файла судоерс.
источник

n

n3 in Saltstack
Одним словом, втупую разлить пользаков угукая как мартышка на ансибле я могу. Я вот в офигительные конструкции с грамотным подходом - не получается, хотя и пытаюсь. Буду очень признателен за помощь
источник

R

Roman in Saltstack
1) - не видать вопроса, есть только утверждение :)
2) afaik возможности "удалить всех кроме [здесь список]" нельзя используя Солт.
Если судоерс в виде одного файла - то просто надо генерить этот файл каждый раз на основе данных из пилларов и автоматически все кто был исключен.
источник

B

Bandikoot in Saltstack
проще на каждого создавать /etc/sudoers.d/<username>.conf
источник

n

n3 in Saltstack
Пардон, в первом пункте, мне интересно, как джинджей докопаться до нужной мне сущности. Я бы с радостью делал (иногда нужно) только для одного пользака. но я не могу к нему обратиться сквозь пиллар. проще говоря я могу так : salt 'host' pillar.keys users  - и он вернёт мне всю пачку, но я не могу так: salt 'host' pillar.keys users.ops-team.username
источник

n

n3 in Saltstack
Bandikoot
проще на каждого создавать /etc/sudoers.d/<username>.conf
Создать можно, мне важно контролировать. Чтобы никто не рисовал себе левых пользаков, нужно чтобы всех отсутствующих в пилларе - убивало. Иначе, ну, сами понимаете
источник

R

Roman in Saltstack
n3
Создать можно, мне важно контролировать. Чтобы никто не рисовал себе левых пользаков, нужно чтобы всех отсутствующих в пилларе - убивало. Иначе, ну, сами понимаете
солт не про это
источник

R

Roman in Saltstack
n3
Пардон, в первом пункте, мне интересно, как джинджей докопаться до нужной мне сущности. Я бы с радостью делал (иногда нужно) только для одного пользака. но я не могу к нему обратиться сквозь пиллар. проще говоря я могу так : salt 'host' pillar.keys users  - и он вернёт мне всю пачку, но я не могу так: salt 'host' pillar.keys users.ops-team.username
по умолчанию в солте разделитель двоеточие, так что обратился к нужному ключу в пилларах можно так pillar.get('users:ops-team:username')
В остальном я не понял идею, создавать отдельный стейт для одного пользователя, но при этом брать данные из пилларов? Зачем?
источник

R

Roman in Saltstack
Bandikoot
проще на каждого создавать /etc/sudoers.d/<username>.conf
Так красивее (я так и делаю например), но в таком случае сложнее удалять старые записи, в случае с одним файлом достаточно выпилить из пилларов элементы и при генерации из шаблона они из конфига так же будут удалены. Если же использовать отдельные файлы то сложнее - надо либо очищать директорию и затем создавать новые файлы в соответствии с данными из пилларов либо в пилларах непременно надо иметь записи помеченные как absent, но даже в этом случае могут остаться левые файлы. Так что по сути единственный надежный вариант - очищать директорию и затем создавать все заново. И так каждый раз, а это уже совсем не красиво.
источник

GG

George Gaál in Saltstack
Roman
1) - не видать вопроса, есть только утверждение :)
2) afaik возможности "удалить всех кроме [здесь список]" нельзя используя Солт.
Если судоерс в виде одного файла - то просто надо генерить этот файл каждый раз на основе данных из пилларов и автоматически все кто был исключен.
2) можно
источник

n

n3 in Saltstack
Идея такая, что время от времени кого-то из разработчиков нужно закинуть на хост с правами судо. В рядовой ситуации ему там делать совсем нечего, его туда и разливать не надо, а вот в виде исключения - да.
источник

GG

George Gaál in Saltstack
Bandikoot
проще на каждого создавать /etc/sudoers.d/<username>.conf
+
источник

B

Bandikoot in Saltstack
Roman
Так красивее (я так и делаю например), но в таком случае сложнее удалять старые записи, в случае с одним файлом достаточно выпилить из пилларов элементы и при генерации из шаблона они из конфига так же будут удалены. Если же использовать отдельные файлы то сложнее - надо либо очищать директорию и затем создавать новые файлы в соответствии с данными из пилларов либо в пилларах непременно надо иметь записи помеченные как absent, но даже в этом случае могут остаться левые файлы. Так что по сути единственный надежный вариант - очищать директорию и затем создавать все заново. И так каждый раз, а это уже совсем не красиво.
- при наличии юзера в пилларе absent можно удостоверяться, что соотв. файл в sudoers.d отсутствует
- солт же вроде умненький и при
 file.directory:
   - clean: True

не пересоздаёт файлы каждый раз
источник

GG

George Gaál in Saltstack
Roman
Так красивее (я так и делаю например), но в таком случае сложнее удалять старые записи, в случае с одним файлом достаточно выпилить из пилларов элементы и при генерации из шаблона они из конфига так же будут удалены. Если же использовать отдельные файлы то сложнее - надо либо очищать директорию и затем создавать новые файлы в соответствии с данными из пилларов либо в пилларах непременно надо иметь записи помеченные как absent, но даже в этом случае могут остаться левые файлы. Так что по сути единственный надежный вариант - очищать директорию и затем создавать все заново. И так каждый раз, а это уже совсем не красиво.
Очищать директорию каждый раз это фу
источник

GG

George Gaál in Saltstack
Bandikoot
- при наличии юзера в пилларе absent можно удостоверяться, что соотв. файл в sudoers.d отсутствует
- солт же вроде умненький и при
 file.directory:
   - clean: True

не пересоздаёт файлы каждый раз
+
источник

n

n3 in Saltstack
У меня видимо неправильная схема пиллара и такое: raise KeyError("Pillar key not found: {0}".format(key))
   KeyError: 'Pillar key not found: users:ops-team:username
источник