- Централизованная установка по linux
- Сервер хранения дистрибутивов.
- Настраиваем TFTP сервер.
- Настраиваем DHCP сервер
- unixforum.org
- Централизованное управление в сети Linux (Вопроc централизованного управления клиентскими станциями)
- Централизованное управление в сети Linux
- Централизованное управление конфигурациями: Puppet + Foreman. Часть І
Централизованная установка по linux
Установка ОС на большое количество рабочих станций — достаточно муторная процедура. Особенно, если требуется устанавливать однотипные ПК с одинаковыми набором программ и различных настроек. У Microsoft для этих целей есть замечательный инструмент: System Center Configuration Manager. Но у нас же импортозамещение. А значит нужно любыми способами обходиться без продуктов Microsoft. В среде Linux инструмента, содержащего такие же широчайшие возможности, как у SCCM нет. Но можно приблизиться к нему, собирая систему по «кирпичикам». В этой статье рассмотрим как реализовать установку ОС Linux, используя сетевую загрузку.
Выполнение установки по сети позволяет производить установку на большом количестве ПК одновременно. Не нужно подходить к каждому ПК с загрузочным носителем, содержащим дистрибутив ОС. Можно настроить процесс установки таким образом, что достаточно будет только выбрать тип ОС, которую необходимо установить, запустить установку и забыть про этот процесс. На выходе получаем готовый ПК со всеми необходимыми настройками и набором ПО. Системы будут загружаться при помощи PXE (Preboot Execution Environment) с использованием загрузочного образа, расположенного на сервере, после чего будет запущена программа установки.
Для того, что бы настроить такую систему нужно произвести три основных шага:
Для решения поставленной задачи будем использовать сервера с ОС CentOS 7. В принципе все можно сделать на одном сервере, но т.к. у нас в сети уже есть DHCP сервер (о его настройках рассказывалось здесь), то нам останется только поднять сервер, на котором будут храниться дистрибутивы ОС и настроить TFTP и HTTP сервисы.
Сервер хранения дистрибутивов.
Дистрибутивы ОС могут раздаваться различными способами : NFS, HTTP или FTP. В случае использования NFS дистрибутив достаточно хранить в виде ISO файла. Но здесь мы рассмотрим способ раздачи по HTTP. Т.к. для этих целей не требуется каких-либо «навороченных» настроек web-сервера, я решил использовать в NGINX с самыми простыми настройками.
Создаем корневой каталог web-сервера:
Редактируем файл конфигурации /etc/nginx/nginx.conf . Файл должен будет иметь примерно такой вид:
Запускаем сервис и разрешаем его автозапуск:
Далее необходимо поместить установочные файлы в папку на вновь созданном web-сервере. Допустим у на имеется iso файл с ОС Centos centos.iso . Необходимо смонтировать его и скопировать содержимое в указанное место неа web-сервере.
Создаем папку, куда поместим содержимое установочного диска:
Смонтируем iso файл в папку /mnt:
Копируем содержимое iso в папку на web-сервере. После этого не забываем отмонтировать iso файл:
Теперь при заходе браузером на сервер дистрибутивов http://server/CentOS мы сможем увидеть все содержимое установочного диска.
Настраиваем TFTP сервер.
Следующитй шаг — настройка TFTP-сервера. Его можно так же назвать PXE-сервером. Этот сервер предназначен для того, что бы выдавать загрузочные образы клиентам, выбравшим сетевую загрузку ПК.
Устанавливаем ПО TFTP-сервера:
Приводим файл /etc/xinetd.d/tftp к виду (если хотим работать посредством xinetd ):
Т.е. задаем папку, где будут храниться файлы раздаваемые tftp-сервером и разрешаем сервис как таковой.
Мне не очень хочется завязывать на xinetd, поэтому вносим изменения в файл /usr/lib/systemd/system/tftp.service :
Т.е. так же задаем папку для хранения раздаваемых файлов.
Затем запускаем сервис tftpd и разрешаем его автозапуск при старте системы.
Далее настраиваем сервер для ответов по PXE.
Нам понадобится файл pxelinux.0 из пакета SYSLINUX, который включен в ISO-образ. Чуть раньше мы скопировали дистрибутив в папку сервера /opt/PXE/www/CentOS . Копируем файл пакета syslinux в какую-либо папку папку:
Копируем файл pxelinux.0 в корневую папку tftp-сервера
Для создания меню выбора загрузки PXE понадобятся еще некоторые файлы. Они находятся в той же папке распакованного пакета SYSLINUX. Копируем их в корень TFTP-сервера:
Если необходимо использовать в меню кирилицу, то так же понадобиться файл кирилических шрифтов. Можно использовать например этот: Cyr_a8x16.psf.gz. Распаковываем и копируем в корень TFTP-сервера.
Так же понадобятся загрузочные файлы ядра, находящиеся в папке images/pxeboot установочного диска ОС. Создаем в корне TFTP-сервера папку CentOS и коипруем туда соответствующие файлы:
Создаем файл конфигурации в pxelinux.cfg/ (именно там сервер будет искать свою конфигурацию). Имя файла может быть определено как default или сформировано на основе IP-адреса системы. Например, компьютеру с адресом 10.0.0.1 будет соответствовать файл 0A000001 . Создаем папку конфигурации в корне tftp-сервера и помещаем туда файл примерно со следующего содержания:
В получившемся конфиге указано, что надо подгружать файл кирилических шрифтов и два пункта меню: загрузка с локального HDD и «Установка CentOS 7 x86_64». Если в течении задонного таймаута не происходит нажатия клавиш, то загружается пункт меню, отвечающий за загрузку ПК с локального диска без установки ОС.
Настраиваем DHCP сервер
Для того, что бы новый ПК смог увидеть PXE сервер и, соответственно, смог запустить установку ОС, необходимо в настройках DHCP сервера указать соответствующие параметры.
Предусмотрим, что ПК имеют два типа Firmware: классический BIOS и UEFI. Соответственно DHCP сервер по разному определяет эти ПК. В файл /etc/dhcp/dhcpd.conf вносим соответствующие строки (в глобальные настройки или в раздел, отвечающий за конкретный диапазон IP):
О том где взять и куда положить файл pxelinux.0 говорилось чуть выше в разделе настройки TFTP сервера. Сейчас поговорим о том, где взять файлы для UEFI.
Понадобятся файлы shim.efi , shimx64.efi (из пакета shim) и grubx64.efi (из пакета grub2-efi). Эти пакеты включены в ISO-образ. Мы уже имеем развернутый образ дистрибутива на нашем сервере. Поэтому просто копируем необходимые пакеты в рабочую папку и извлекаем необходимые файлы:
Создаем в папке TFTP сервера еще одну папку UEFI и копируем в нее файлы shim.efi , shimx64.efi и grubx64.efi .
Создаем в этом же каталоге создаем файл конфигурации grub.cfg приблизительно такого содержания:
Копируем загрузочные образы в папку uefi/ :
Далее перезапускаем TFTP сервер и загружаем ПК при помощи PXE.
При данном методе установки ОС можно автоматизировать процесс до нажатия одной кнопки (выбор ОС в меню загрузки PXE). Т.е. все параметры ПК, список устанавливаемого ПО и т.д. можно задать в файле автоответов. Как это зделать — в одной из следующих статей.
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
Централизованное управление в сети Linux (Вопроc централизованного управления клиентскими станциями)
Модератор: SLEDopit
Централизованное управление в сети Linux
Сообщение lamaboy » 17.04.2017 14:15
Не так давно начал свою деятельность в роли помошника системного администратора. Поставили задачу, перелопатил много статей, но так и не нашел оптимального варианта для решения задачи. Да есть хорошая статья » Достойный контроллер домена на Linux. (Подробный HowTo), MDS, Ldap, Samba, Postfix, SQU «, но она больше подходит под win парк, да и ей уже 9 лет.
Вопрос централизованного управления клиентскими станциями, что-то вроде ActiveDirectory c наворотами под Linux. Что надо:
1. Решение должно позволить любому человеку на любом компьютере загрузить свое рабочее окружение Linux и работать
2. Все программы должны запускаться на клиенте а не на сервере.
3. По возможности 2х факторная авторизация, возможно с использованием USB токенов.
4. Управление софтом и обновлениями удалено. Т.е я на сервере установил софт, добавил его нескольким пользователям и сделал для них конфиги/настроил софт. И они могут пользоваться.
5. Надо придумать как убрать зависимость от сервера, т.е к примеру я сел за комп ввел свои данные, подгрузилась моя ОС, тут падает сервер. И вот тут работа должна продолжиться. Т.е должен быть какой-то кеш на комьютере пользователя. Чтобы при неработающем сервере он мог войти под собой, если уже входил под собой раньше
Заранее не судите строго, я нуб
Источник
Централизованное управление конфигурациями: Puppet + Foreman. Часть І
В этой статье будет рассмотрена установка и настройка связки Puppet + Foreman для централизованного управления конфигурациями.
Для сервера, на котором будет установлена связка Puppet + Foreman, будет использоваться виртуальная машина (1 CPU, 2 Gb RAM, 20Gb HDD), в качестве клиентов будут физические ПК на которых установлена Ubuntu. Конфигурация моего виртуального сервера с указанными выше характеристиками позволяет без проблем обслуживать 500 клиентов (можно и больше).
Установка Puppet довольно простая (все последующие команды выполняются от root):
Этими командами мы скачиваем deb пакет с сайта разработчиков puppet и устанавливаем его. Данный пакет puppetlabs-release-trusty.deb при установке создает файл /etc/apt/sources.list.d/puppetlabs.list в котором прописаны репозитории puppet, а также импортируется gpg ключ которым подписан репозиторий puppet. Сам puppetmaster мы не устанавливаем, он будет установлен автоматически при установке Foreman.
На этом установка Puppet закончена, приступим к установке веб-интерфейса Foreman:
Здесь мы добавили файл /etc/apt/sources.list.d/foreman.list в который вписали репозитории от Foreman, а также добавили ключ от данного репозитория. После добавления репозитория мы обновили список пакетов и установили foreman-installer — это пакет который позволяет установить Foreman.
Далее нам нужно настроить правильное имя компьютера. Прописываем в /etc/hosts и /etc/hostname
Перезагружаем наш сервер.
Запускаем наш установщик коммандой foreman-installer -i.
Нас спрашивают — готовы ли мы к установке, отвечаем «y», далее следует меню в котором можно выбрать дополнительные конфигурации Foreman и дополнительные модули. Мы же устанавливаем стандартную конфигурацию, поэтому выбираем пункт «Save and run» и у нас начинается установка (можно было ставить командой foreman-installer без опции -i, тогда у нас поставится базовая установка, -i подразумевает интерактивный режим).
У меня установка заняла примерно 5 минут, после установки мы видим сообщение об успешно установке, в этом сообщении находятся наши параметры доступа к Foreman.
Переходим по адресу srv.co.com и заходим в веб-интерфейс используя параметры доступа которые мы получили при установке (их желательно сохранить в файлик, а после первого входа в панель управления — поменять пароль). После входа мы видим страницу с множеством текстовой информации на английском языке, можно перейти в настройки аккаунта и сменить язык на русский. Переходим в правый верхний угол, жмем Admin User, My account, вибираем нужный нам язык и сохраняем настройки.
При последующем входе в Foreman мы получим другой интерфейс:
Здесь в списке будут отображаться наши клиенты.
Вот мы и завершили установку связки Puppet + Foreman. Давайте попробуем добавить клиента puppet и посмотреть что поменяется в веб-интерфейсе.
Для установки Puppet агентов на клиентские ПК я использую следующий скрипт:
Этот скрипт устанавливает puppet agent, настраивает автозапуск агента при старте системы, указывает адрес Puppet сервера и запускает агента. Также мы закомментируем в конфиге /etc/puppet/puppet.conf строку templatedir, если не закомеентировать — сыпятся ошибки (как фиксить без комментирования я не разобрался, хотя оно меня не раздражает).
После установки агента у нас на сервере будет запрос на подпись сертификата, если мы не подпишем данный сертификат, тогда агент не будет подключен в серверу.
Для просмотра сертификатов на сервере можно использовать комманду puppet cert —list —all:
# puppet cert —list —all
«zeppelin» (SHA256) 43:64:08:BF:DB:AF:7C:17:5B:DE:3C:CE:22:8B:40:6A:13:60:B7:F4:2C:38:B6:57:E5:FA:EA:CC:63:FB:87:EB
+ «srv.co.com» (SHA256) 04:CB:EB:CF:B2:D1:09:3C:74:00:20:A9:87:24:4B:CE:40:CC:0A:73:1D:F6:E4:24:7D:34:6E:4E:6C:17:DF:61 (alt names: «DNS:puppet», «DNS:puppet.co.com», «DNS:srv.co.com»)
Здесь мы видим что у нас 2 сертификата, один не подписан с именем zeppelin и другой подписан (+) с именем srv.co.com. Не подписаный сертификат — это сертификат от нашего новоустановленого клиента.
Для подписи сертификата можно использовать комманду puppet cert —sign $client_name. Также для подписи сертификатов мы можем использовать веб-интерфейс от Foreman, для этого нам нужно перейти в меню «Инфраструктура» — «Капсули» — «Сертификаты» и здесь можно подписать или удалить сертификат.
Жмем «Подписать», в результате при просмотре списка сертификатов в консоли у нас будет 2 подписаных сертификата:
# puppet cert —list —all
+ «srv.co.com» (SHA256) 04:CB:EB:CF:B2:D1:09:3C:74:00:20:A9:87:24:4B:CE:40:CC:0A:73:1D:F6:E4:24:7D:34:6E:4E:6C:17:DF:61 (alt names: «DNS:puppet», «DNS:puppet.co.com», «DNS:srv.co.com»)
+ «zeppelin» (SHA256) 03:C6:FF:F9:4D:10:7C:7D:6C:32:A7:E8:0C:9F:DA:FB:DD:43:B6:E5:36:79:DD:E3:04:41:D3:58:9F:6A:C4:8F
Переходим в меню «Узлы» — «Все узлы» — здесь мы видим 2 сервера (новый сервер может появиться не сразу, а через некоторое время, для того чтобы он появился сразу, нужно после подписи сертификата выполнить на клиенте команду puppet agent -t).
Поумолчанию Foreman берет манифесты из папки /etc/puppet/environments далее в записимоти от окружения. Сейчас мы добавим манифест в Foreman и попробуем применить его для одного из наших клиентов. Создаем папку mkdir -p /etc/puppet/environments/production/modules/vsftpd/manifests, в эту папку закидаем файл init.pp:
Теперь для того чтобы наш модуль с манифестом появился в Foreman нужно зайти в меню «Настройки» — «Классы Puppet» и нажать «Импорт из srv.co.com».
Отметить птичкой нужное нам окружение и нажать «Обновить».
В результате мы получим список доступных классов Puppet с указанием окружений, узлов к которым они применены и т.д.
Давайте добавим наш манифест в одному из клиентов. Для этого переходим в «Узлы» — «Все узлы», жмем на имени нужного нам узла и у нас открывается страница с детальной характеристикой узла.
Жмем кнопу «Изменить», попадаем на другую страницу с настройками указанного узла, тут жмем на вторую вкладку «Классы Puppet» и видим наш класс «vsftpd».
Выбираем наш клас (значок +), он перемещается в левую сторону с «Доступных классов» в «Включенные классы», подтверждаем изменения.
Все — наш манифест добавлен для выбраного сервера, остается подождать пока он будет применен на клиенте. Если мы не хотим ждать, можно зайти на клиент и выполнить комманду puppet agent -t, сразу после ее выполнения манифест будет применен к клиенту и на нем будет установлення vsftpd (в нашем случае).
Foreman также имеет множество дополнительного функционала, хосты можно группировать, манифесты можно применять на группы, также можно настроить автоподпись клиентских сертификатов, права на клиентские машины для разных администраторов, аудит оборудования и многое другое, о чем я расскажу в следующей статье.
Источник