LINUX.ORG.RU
ФорумAdmin

Ansible + ldap: организация доступа к серверному парку

 , , ,


1

1

Приветствую, гуру! Пытаясь внедрить ansible в свою инфраструктуру задался вопросом совмещения его с ldap.

Что дано:

  • ansible 2.0.0.2
  • Windows AD

Что хочу:

  • Костылём брать из AD группы серверов, группы пользователей, имена серверов и имена пользователей и на всём имеющемся сервером парке настроить и поддерживать доступы с помощью ansible. Сейчас этим занимается puppet.

Собственно вопрос: Как лучше объяснить ansible какие сервера у меня есть, в какие группы они входят, какие на них должны быть пользователи и в каких группах? Какие конфиги сформировать? Я пока не могу сообразить...

Вот пример того, что я забираю из AD:

dump(@servers) 
(
  ["voip", "asterisk3"],
  ["pm", "pm2"],
  ["vpn", "vpn1"],
  ["vpn", "vpn2"],
  ["hadoop", "hadoop1"],
  ["tp", "tp1"],
  ["web", "web1"],
  ["web", "web2"],

 )
dump(@users)
(
  [
    "user1",
    "user1",
    "ghSADJASdasghds^%*@5638215",
    15236,
    15236,
    "/bin/sh",
    "ad",
    "/home/user1",
    "user1",
    312452343,
    1,
    { devel => "admins,www,users" },
  ],
  [
    "user2",
    "user2",
    "hkgdKLADGASHDGashgd3313",
    15231,
    15231,
    "/bin/bash",
    "ad",
    "/home/user2",
    "user2",
    312452343,
    1,
    { pm => "users" },
  ],
    [
    "user3",
    "user3",
    "hsdgka^#652JSHDLKAS@",
    15172,
    15172,
    "/bin/false",
    "ad",
    "/home/user3",
    "user3",
    312452343,
    1,
    { netserv => "users" },
  ],
  [
    "user4",
    "user4",
    "\odsajdsHADUw7e2OIUDSAOD",
    15247,
    15247,
    "/bin/bash",
    "ad",
    "/home/user4",
    "user4",
    312452343,
    1,
    {
      pm      => "admins,apache,users",
      backup  => "admins",
      devel   => "admins",
      logserv => "admins",
      monitor => "admins",
      netserv => "admins",
      voip    => "admins",
    },
  ],
)

Ansible умеет dynamic inventory: http://docs.ansible.com/ansible/intro_dynamic_inventory.html Люди уже напилили костылей: https://github.com/vincentvdk/ansible_inventory/tree/master/ldap

Или можно купить Tower, там LDAP из коробки есть.

и на всём имеющемся сервером парке настроить и поддерживать доступы с помощью ansible

Я винду давно не трогал, но по-моему ты не тот инструмент используешь. В групповых политиках централизованная настройка разрешений точно есть, только уже не помню где.

selivan ★★★ ()
Ответ на: комментарий от selivan

Ну-у-у, вообще я хожу скриптом в AD, беру оттуда список групп_серверов и серверов в них, и хочу заполнять /etc/ansible/hosts, затем формировать какой-нибудь файл переменных со списком пользователей и групп и просто через стандартный модуль user управлять этими пользователями. Но пока не могу допереть детально :)

Grotesque ()

Затея у вас благая. Позвольте только порекомендовать более масштабируемое решение - Single Sign-On.

Что в Debian, что в Red Hat есть пакет sssd. С помощью него можно указать удалённую LDAP базу в качестве бэкэнда для авторизации/аутентификации PAM, sudo, а также имена для NSS. Есть куча опций... кэш, как самая полезная.

Контролировать аккаунты и список их разрешений гораздо удобнее на одном сервере, чем постоянно распихивать на все машины под управлением Ansible, Salt и т.д.

zuzzas ()
Ответ на: комментарий от Grotesque

Не надо скриптом править ansible/hosts, это кривой костыль. В ансибл есть dynamic inventory, это скрипт, который читает базу хостов/групп хостов из внешних источников(LDAP, zookeeper, да хоть mysql - что угодно), и отдаёт ansible в виде JSON. Читай по ссылке выше.

Вынимать пользователей из LDAP и с помощью ansible создавить локальных unix-пользователей - возможно, но лучше использовать специально предназначенные для этого решения, выше по треду писали про sssd.

selivan ★★★ ()
Последнее исправление: selivan (всего исправлений: 1)

Большое спасибо, ребята! Почитал я маны некоторые про sssd, инфы маловато; попробовал сделать: сказать получается плохо - не сказать ничего :) И у нас домен в который, если честно, не очень хочется лезть. Не сказать что он какой-то плохой, просто я не умею с ним управляться и по возможности стараюсь быть подальше от него, потому что это слишком большая тема для изучения :) Так же не совсем понятно как в sssd разделять доступ и права доступа по разным группам коих в АД - куча кучная; а так же что будет если домен отвалится.
На счёт dynamic inventory - тут ещё проблема в том, что помимо групп хостов у меня есть куча групп пользователей и их надо как-то подружить друг с другом...

Grotesque ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.