Как лучше организовать управление разнородной инфраструктуры (Linux,Windows,etc)?
Нужен Ваш совет и опыт. Занимаюсь администрированием ОС и сетей 5 лет. Конечно, в основном это Windows Server (MS AD,Exchange и пр). Помимо, имею сертификат о прохождении курса по Linux (проходил пару курсов на Stepik), разворачивал в небоевой среде несколько сервисов (в т.ч. LAMP,nginx,etc). То есть имею общие, поверхностные знания о системе. На последней работе была большая инфраструктура из 17 поддоменов, ~500 рабочих станций, ~100 серверов. Linux практически не было (только postfix и mysql\postgre). Общую логику построения инфраструктуры на основе Windows я вижу\понимаю\знаю, как это происходит. В двух словах - поднимаем домен и DC, настраиваем сетевые интерфейсы, устанавливаем нужные службы (AD+DNS, DHCP и пр.), заводим учётки пользователей в AD, вводим рабочие компы сотрудников в домен и пр.
Случилось так, что через, буквально, 2 недели устроюсь на другое рабочее место с совершенно другой, разнородной инфраструктурой – там есть и Linux (в большей степени, со всякими DevOps инструментами типа Docker, GitLab и пр), и Windows (в гораздо меньшей – 1-2 хоста) и MacOS (ноут начальства). Компания небольшая, но перспективная (пока в ней 20 чел). Волнуют следующие вопросы:
1) Подскажите, пожалуйста, общую логику построения сети в Linux? Нужно ли поднимать домен, как в Windows, чтобы потом создавать пользователей и пр?
2) Как лучше всего это всё объединить и на основе чего, какие инструменты для управления задействовать – MS AD\Samba\FreeIPA\OpenLDAP\Ansible\etc? Ваш опыт.
3) И если смотреть на перспективу дальнейшего расширения – какой путь лучше выбрать? (Поднимать домен на основе MS AD и потом уже как-то управлять из него Linux-хостами или ограничиваться какими-то open-source unix-инструментами)? Как лучше это сделать (этапы, инструменты и пр)?
4) По Вашему - стоит ли задействовать в этой цепочке облака (AWS, Azure, Yandex, etc)? В каких случаях это было бы оптимально?
Вообщем, всё это как-то хаотично крутиться в голове, не знаю даже с чего начать. Если не трудно – подскажите, что да как. Если трудно – то просто тыкните «где» и «что» можно почитать.
Заранее спасибо Всем, кто уделил внимание.
UPD: После продолжительной дискуссии с коллегами для себя сделал вывод, что самое подходящее масштабируемое решение будет развернуть домен MS AD (сервер уже есть). И постепенно вогнать туда машинки по разным OU (отдельная OU для линукс и для windows). Авторизацию для Linux пользователей задействовать через cвязку SSSD+Samba4. Позже позже задействовать SSO. Постепенно уходить от OpenLDAP. Windows десктопы конфигурировать через групповые политики, Linux через Ansible, . Но это в планах, а как будет на деле, покажет время! )
Ещё раз спасибо всем, кто помог в этом всём разобраться
Если бы предприятию был нужен домен - они в каком-то виде наверняка реализовали его до вас. Для единой системы хранения учётных данных обычно используют LDAP. Поднимать AD/DC только ради этого - перебор.
Из вашего рассказа не ясно, используется ли линукс в качестве десктопных машин. Если да - управлять ими можно теми же способами, что и серверами - Ansible, Chef etc. Правда, не ясно, что вы в данном случае подразумеваете под "управлять" - накатывать обновления, устанавливать новые пакеты?
Благодарю за отклик. Да, уточнил, они в какой-то цепочке задействовали OpenLDAP, с ним какие-то проблемы сейчас имеются, на месте уже посмотрю (что-то связано с идентификацией пользователей). Но при это сказали, что на сервере у них есть виртуалка с Windows Server. Есть ли там AD ответить затруднились. Возможно с OpenLDAP стоит уйти в какую-то более удобную и гибкую систему?
Когда я писал про "по большей части Linux" - я и имел ввиду, что на рабочих станциях (десктопах) там стоит Linux в основном. Windows кажется у HR и ещё у кого-то. Под управлением , я имел ввиду и накатывание обновлений, и подключение шар и запрещение запуска определённых приложений и удалённый запуск скриптов\программ и пр плюшки (аналогия Windows GP и PowerShell). Где-то читал, что Ansible более универсальная система, написанная на python при этом, может админить десктопный Windows через PowerShell?
А что думаете по поводу облачных технологий? В каких случаях это уместно (в рамках компании из 20 чел)?
Артём Брыкин, OpenLDAP, несмотря на некоторую гемороечность начальной настройки, прост, как тапок и особой гибкости от него (по крайней мере на ваших масштабах) не требуется. Фактически это просто список учётных записей с набором аттрибутов у каждой - членство в группах, имена-фамилии, пароли, SSH-ключи, фотографии и т. д. Какие могут быть проблемы - затрудняюсь сказать с ходу, у нас всё работает :)
Если в компании инструменты разработки на линуксе, то скорее всего уже есть хотя бы зачатки централизованного управления. Думаю, что распространить её на десктопные машины будет не особенно сложно.
К облачным технологиям я отношусь положительно, но нужно понимать - зачем они вам и подойдёт ли вам именно облачное решение, которое в некоторых случаях получается намного более дорогим, чем своё железо, хоть и снимает большую часть головной боли с эксплуатацией.
Понял, надо будет почитать по OpenLDAPА. А, что думаете по поводу сценария, которое предложил другой коллега: Поднять домен AD, распределить по OU компьютеры с разными ОС (линукс один контейнер, винда - другой) и управлять ими уже в зависимости от ОС (Ansible для Linux, GP для Windows). Если смотреть с перспективой развития инфраструктуры в плане увеличение числа сотрудников, то такой вариант проще\удобней будет, как считаете?
Сценарии использования облака, допустим - файловое хранилище (аля гуглдокс). Ну или почта (аля gmail и пр)?
Артём Брыкин, по поводу двух систем с пересекающимся функционалом - отрицательно. Виндовый домен и AD нужен, когда инфраструктура сильно завязана на сугубо виндовые плюшки вроде групповых политик, WSUS, прозрачной авторизации с помощью виндовых реквизитов и т. п. Только для того, чтобы мочь управлять двумя хостами, покупать дорогущие лицензии на серверную винду и всё остальное (мы же сейчас не рассматриваем вариант с пиратскими версиями, правда?) - очевидный оверкилл.
Пока виндовых рабочих мест не стало несколько десятков - имхо, проще админить их точечно, заходя по RDP, например.
У гугла, насколько я знаю, бесплатных тарифов для GSuite больше нет. Как файлохранилище (именно хранилище, а не систему общего доступа и редактирования документов) проще поставить файловый сервер или NAS. Гугловская почта хороша (по личному опыту, в сравнении с Office 365), тут ничего сказать не могу.
То есть лучше, в данном случае, "раскурить" OpenLDAP и обойтись средствами Ansible для всех типов десктопов? А уже AD внедрять по мере развития компании (допустим, если количество десктопов на винде превысит количество, которое комфортно конфигурировать точечно по RDP)?
А если планируется поднять MS Exchange в будущем? Возможно будет авторизовывать как-то пользователей из OpenLDAP и присваивать им адрес почты как в AD? или лучше тогда развернуть что-то другое (FreeIPA, например? Понимаю что AD в связке с Эксчейнджем лучший вариант, но учитывая наши реалии из подавляющего числа декстопов на линукс)?
И ещё, возможно нубский вопрос, но пользуясь случаем. Я правильно понимаю, что если у них поднят OpenLDAP, то значит у них поднят свой домен? Как в таком случае лучше организовать файловый сервер(интересует вопрос авторизации со стороны винды, если это будет линуксовый сервак и обратно, если это виндовый сервер)?
Артём Брыкин, свой локальный эксчейндж - это серьёзный челлендж. Я рекомендую, всё-таки, облачный Office 365. Он умеет синхронизироваться с AD и LDAPом в целом.
> Я правильно понимаю, что если у них поднят OpenLDAP, то значит у них поднят свой домен?
Нет, LDAP - это просто каталог. ПО, реализующее аналогичный AD функционал в линуксе - Samba4. В ней есть и AD/DC, и возможность управлять файловыми шарами.
Мой опыт - freeipa для linux, AD для винды, между доменами доверие. Управляю хостами Ansible. Жить можно, но проблем куда больше чем в чисто виндовом окружении.
Благодарю за отзыв. Я правильно понял, что вы создали 2 домена - один для виндовых машин, другой для линух? С какими основными проблемами сталкиваетесь при такой конфигурации? Как решаете?
Все верно, 2 домена с доверительными отношениями согласно документации freeipa.
Проблемы с багами и недоделками. Например, самба, настроенная на введенном в ipa домен debian или ubuntu, не будет авторизовывать пользователей. А вот на centos будет. Потому что в центос самбу собирают с MIT Kerberos, а в deb-based - с Heimdal. Между собой не совместимы.
С керберизованным nfs та же фигня.
Доверие между доменами отваливается самопроизвольно, без ошибок. Если сделать проверку отношений со стороны АД или IPA - все также самопроизвольно начинает работать. Пришлось поставить проверку по крону.
Баги с ldap. Периодически задваиваются записи в копии дерева, предназначенной для маппинга записей из АД. Таким образом, сервисы настроенные на авторизацию в IPA через ldap перестают пускать задвоенных пользователей. Лечится перезапуском dirsrv. Разработчики советую использовать не лдап, а SSO, но там своих граблей хватает.
Ну и при обновлениях вроде гемморой вылезает. У меня не было, но список рассылки пугает.
Если честно, если бы сейчас запускал с нуля такое, то просто взял бы АД, а вместо групповых политик для линукс использовал бы ansible.
Да уж... То есть гораздо практичней было бы всё-таки поднять домен на AD, вогнать в него все десктоные машинки (Linux, Win, Mac) и админить как-то точечно? Например, создать несколько OU - для Windows и для Linux. Там где Windows - управлять GP, там где Linux - подключать Ansible. Кстати, Ansible может вроде как и Windows конфигурировать (Есть такой опыт?)? А как в таком случае пользователи из AD будут логиниться на Linux десктопы?
И ещё вопрос - если возникает потребность в общих сервисах - ну, например, файловый сервер или допустим почта(если это AD то логично было бы использовать Exchange). То как будет происходит авторизация на всех этих ресурсах? Вот если взять такой популярный сценарий, например. Есть СХД c LUN под дисковое хранилище. Мы подключаем его к файловому серверу (пускай на Windows). Авторизация десктопов на Linux будет происходить через SAMBA? Здесь облачная инфраструктура спасла бы от заморочек?
У меня нет опыта массового использования linux в АД. Мои кейсы ограничиваются 1-2 машинами. Первоначальные танцы с бубном при вводе в домен, но затем все работает как обычно. Пользователи логинятся везде с учетками АД.
Какое отношение имеет облако к организации хранения учетных данных? Вы там также будете АД использовать, или IPA, только на облачных серверах.
А Вы, простите, технический директор, чтобы такого рода вопросы решать? Поскольку это уже "политика", а не "техника". Если да, то начать нужно с задач, которые нужно автоматизировать и уже от этого списка выбирать инструменты.
Если нет - не греть голову, использовать что скажут :)
Нет, я не технический директор, но так как я буду первый и единственный системный администратор в компании, то, уверен, что от меня будут ждать каких-то рекомендаций и советов, как сделать лучше. Сначала, конечно, я погружусь полностью в существующую структуру предприятия, чтобы понять что да как, а дальше уже буду смотреть, что и как можно автоматизировать, оптимизировать и развить. Тут с Вами не поспоришь! ;)
Хочется не сидеть и не ждать пока укажут, а предвкушать ситуацию и понимать самому, что стоит поменять или усовершенствовать. Лучше предвидеть ситуацию заранее, чем пытаться её наспех решать в критический момент, правда?
Артём Брыкин, оно конечно да. Ну, если от Вас ждут каких-то рекомендаций на самом деле, то можете поступить так, как если бы были техническим директором :) Начинайте с бизнес-процессов. Не надо пытаться решить задачу "снизу" - решая, нужен ли домен или нет. Нужно решать ее "сверху" - то есть разобраться, какие в конторе работают бизнес-процессы и чем Вы, как админ/техдир можете им, этим процессам помочь. Причем рассматривать не в контексте админа (нужно AD, нужен сервак, нужна сеть, etc) а в контексте бизнеса
Артём Брыкин, Контекст бизнеса - это взгляд со стороны бизнеса, не знакомого с подробностями устройства AD и прочими админскими кунштюками :) Вот, допустим, есть бизнес-процесс электронной почты. С точки зрения бизнеса - он должен просто работать, желательно так, чтобы спаму было поменьше. Бизнес не интересуют тонкости, ему пофиг антиспам, грейлистинг, черные списки, постфикс, сендмайл, коды SMTP. Ему нужно, чтобы работало. Причем БП электронной почты - может быть вспомогательным процессом, а может быть и продающим - если заказы приходят по мылу. Если встает продающий процесс - Вас вообще на тряпочки распустят :)
Вот и смотрите, чем собственно контора занимается. Анализ БП - это отдельная и обычно весьма не малая работа, так что смотрите - нужна ли она Вам. Но если решили заняться, то сначала бизнес-процессы - а уже потом инструменты, их обслуживающие. Домен, облака, выбор того-сего - это уже технические вопросы, которые возникают, когда решены главные - а зачем все? а чем это все поможет продающим процессам?
(Помощь - она может быть разная. Можно помочь напрямую - допустим подав более крутую рекламу. Можно помочь косвенно - ликвидировав задержки во вспомогательных процессах или допустим поставив более мощный комп. Можно условно - например, вконтактик заблокировав, в расчете на то, что чел будет больше работать - а это вовсе не факт)
1. Первое правило -- не бежать впереди паровоза. Не бежать и позади. Ехать. Отсюда -- не создавать себе проблем заранее. Увеличиваем количество сервисов, работаем на энтропию. Все работает? 20 машин? ssh, rdp, vpn.
2. Второе правило -- не нервничать, вселять уверенность в других, решать задачи по мере поступления. Людям не нужны ваши админские плюшки: AD, WSUS, Ansible и т.п. Им нужно, чтобы все работало и если что-то отвалилось -- быстро восстанавливалось. Подумайте о втором, третьем резервировании. Запасной Интернет-канал, запасные виртуальные сервера, свичи, диски. NAS внутри и NAS снаружи, в облаке и т.п. (про бэкапы молчу)
3. Создавайте простые, но нужные сервисы людям. У вас уже есть джабер-сервер внутри для локального чата? Openfire+LDAP и люди оценят.
4. Хорошую вещь АДом не назовут. У вас 1 (одна! windows машина у HR). Зачем win-домен?! Чтобы было удобно что? Лениться? Повторю: ssh, rdp, через vpn за чашкой кофе утром в кафе. Компания Google как-то наверное обходится без домена, Apple тоже (надеюсь, точно не знаю ;)
Огромное спасибо за отзыв.
Главный вопрос - удобство управления компьютерами и пользователями. Вот допустим сейчас мне нужно на всех десктопах открыть SSH и установить пароль на root. Как это сделать централизованно, не бегая по всем машинкам? Нужен ли для этого домен? и вообще в ближайшей перспективе понадобится ли он?
В домене MS AD можно было открыть доступ через групповые политики. Локального админа знать не обязательно, если есть доменный. Из-под него можно было бы запускать скрипты\командлеты PowerShell. Удобно? Безусловно. Как добиться подобного в гетерогенной среде?
Насчёт AD, ада и пр) Тут ещё встает вопрос о поднятии Exchange(понадобился сервис аналогичный встречам). Windows Server есть, лицензии все на месте. Вот я и думаю. Если смотреть в перспективе, то как лучше... И да, я не против конечно VPN, SSH+RDP. Удобно, просто.
Если "в основном линукс, DevOps и вот это вот всё" - не надо тащить сюда практики из мира Windows, это лишний труд. Так что - MS AD мимо. OpenLDAP для хранения пользователей, система хранения конфигурации (например Ansible) - для всего остального. Ansible под Windows активно пилится сейчас, хотя для пары виндовых хостов имхо избыточно всё, и настройка вручную - самое быстрое и надежное решение. Но коли вы уже умеете в винду - тогда заворачивайте винду в AD наверное, тут вам виднее, что с ней сделать такого, чтоб как можно проще и удобнее было работать.
Чужая облачная инфрастуктура выбирается тогда, когда она - дешевле своей. Т.е. для ответа на этот вопрос нужно посчитать бюджет.