У меня есть домашний сервер Raspberry Pi с Debian Wheezy. У меня также есть пара ящиков Ubuntu и Debian, и я хотел бы использовать для них какое-то управление. В частности, я хотел бы сделать следующее:
Имейте одинаковые репозитории программного обеспечения на машинах с той же версией Ubuntu. Итак, один /etc/apt/sources.list
для всех Ubuntu, один для Debian Stable и один для Debian Wheezy.
Одни и те же пользователи на всех машинах и одни и те же пароли.
То же самое /etc/profile
, так что вход на всех компьютерах выглядит одинаково.
Я предполагаю, что для пользовательских файлов я буду использовать что-то вроде Samba или что-то в этом роде, но все вышеперечисленное похоже на управление конфигурацией.
До сих пор я слышал о:
Судя по репозиторию Debian Wheezy, в репозитории есть все, кроме Ansible. Ansible не требует установки какого-либо программного обеспечения на других компьютерах, поэтому я мог бы просто попытаться упаковать его самостоятельно или установить из исходного кода.
У меня не так много опыта администрирования нескольких компьютеров. До сих пор у меня был только один компьютер, и на этом все. Хотя у меня есть опыт программирования. Не могли бы вы дать мне предложение, с какого инструмента мне начать?
До сих пор я играл с Puppet в течение двух часов. Кажется, он может делать то, что я хочу, это может быть слишком много.
Более сложный момент здесь заключается в синхронизации пользователей (и паролей) для создания единого входа (SSO) — для /etc/apt/sources.list
и /etc/profile
вы могли бы использовать rsync
, так как эти файлы вряд ли изменятся слишком сильно.
Единая точка входа
Однако для SSO вам понадобится что-то вроде сервера LDAP (облегченный протокол доступа к каталогам). Чтобы установить это, запустите на своем сервере следующее (для сервера я бы рекомендовал стабильную версию Debian, поэтому запустите там следующее):
sudo aptitude install slapd ldap-utils
Он попросит вас ввести пароль, запомните его! Теперь slapd
должен запросить у вас домен, но он не был у меня по памяти, поэтому запустите следующее, чтобы настроить это:
sudo dpkg-reconfigure slapd
На первом экране выберите no
, как вы хотите изменить конфигурацию. Затем введите доменное имя (это может быть что угодно, так как оно находится в локальной сети, я буду использовать mylovelyserver.lan в качестве примера здесь). Затем введите название организации (опять же, это может быть что угодно, например My Lovely Server ). Затем введите пароль администратора. учетную запись и повторно введите ее при появлении запроса. Затем выберите HDB
в качестве базы данных (раньше не использовал BDB
, не совсем уверен, в чем разница!). При появлении запроса скажите no
очистить базу данных. Выберите yes
, когда будет предложено переместить старую базу данных. Скажем no
, разрешить LDAPv2 (он устарел и не нужен для совместимости).
Теперь у него должен быть запущен сервер LDAP, но он нуждается в управлении. Раньше я делал это через командную строку, но, честно говоря, это было головной болью. Поэтому вместо этого используйте phpldapadmin
- это графический веб-интерфейс для управления серверами LDAP. Для этого требуется веб-сервер, я буду использовать nginX
здесь, так как он легкий и подходит для работы. Итак, для установки выполните следующее:
sudo aptitude install php5-fpm php5-cli php5-ldap php-apc phpldapadmin nginx
Далее вам нужно будет отредактировать /etc/phpldapadmin/config.php
, чтобы изменить настройки на свои:
sudo nano /etc/phpldapadmin/config.php
Измените это:$servers->setValue('server','base',array('dc=example,dc=com'));
К этому:$servers->setValue('server','base',array('dc=mylovelyserver,dc=lan'))
И измените это:$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
К этому:$servers->setValue('login','bind_id','cn=admin,dc=mylovelyserver,dc=lan');
Теперь вам нужно указать веб-серверу (nginX), откуда серверировать phpldapadmin. Итак, откройте следующее:
sudo nano /etc/nginx/sites-available/default
Удалите основной server
блок и добавьте следующее:
server {
root /usr/share/phpldapadmin/htdocs;
index index.php index.html;
server_name localhost;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Затем перезапустите веб-сервер:
sudo service nginx restart
Теперь откройте браузер и перейдите http://localhost
на IP-адрес сервера. Вы должны быть на странице phpLDAPadmin, нажать войти (слева) и войти в админку. имя пользователя и пароль, установленные выше.
Нажмите Create new entry here
(слева). Сначала создайте группу (общая: группа POSIX). Введите имя группы (в качестве примера я буду использовать ldapgroup ). Щелкните Create object
, затем commit
.
Сделайте то же самое для создания нового пользователя, выбрав только что созданную группу. Заполните необходимые поля.
Это работа на стороне сервера! Теперь о клиентской части (другие Debian, Ubuntu и Raspberry Pi).
На клиентах устанавливаем следующее:
sudo aptitude install libpam-ldapd libnss-ldapd
На первом экране настройки введите адрес сервера localhost.ldap://127.0.0.1
Затем войдите в базу поиска LDAP-сервераdc=mylovelyserver,dc=lan
Когда вас спросят, какие службы имен настроить, просто выберите там все (используя пробел..).
Редактирование /etc/pam.d/common-session
путем запуска:
sudo nano /etc/pam.d/common-session
Добавив в конец файла следующее:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
Аутентификация клиента теперь должна быть настроена, выполнение следующего должно показать ранее добавленного пользователя в конце вывода:
sudo getent passwd
Откройте SSH-соединение с пользователем LDAP, и теперь оно должно работать!
Это биты имени пользователя и пароля (SSO). Теперь вы не упомянули синхронизацию /home
каталогов, поэтому я пока оставлю этот момент, если вам это тоже не нужно (требуется немного больше настройки).
Синхронизация файлов конфигурации
У вас есть несколько вариантов, я думаю, с /etc/apt/sources.list
и /etc/profile
. Там rsync
(и SSH с rsync
) cfengine
(как вы сказали, вероятно, излишний для этого) и git
(вы можете создать репо, а затем использовать его). Однако, хотя я не люблю проприетарное программное обеспечение, ответом здесь может быть Dropbox (или OwnCLoud, если вы хотите настроить это, но опять же для нескольких конфигурационных файлов, вероятно, немного излишне).
У Dropbox есть хороший .deb для Debian/Ubuntu (а также RPM и т. д. для систем на основе Red Hat), так что получите его с веб-сайта Dropbox (или используйте скрипт Python здесь: http://wiki.getdropbox.com/DropboxAddons/ DropboxLinuxCLI , если вы не хотите использовать версию с графическим интерфейсом).
Создайте каталог в своем каталоге Dropbox после установки Dropbox:
mkdir -p ~/Dropbox/configs
Добавьте файлы конфигурации, которыми вы хотите поделиться в этом каталоге.
Затем создайте символическую ссылку (симлинк) на каждом клиенте на файлы конфигурации, которыми вы хотите поделиться:
sudo ln -s ~/Dropbox/configs/sources.list /etc/apt/sources.list
sudo ln -s ~/Dropbox/configs/profile /etc/profile
И это должно синхронизировать ваши файлы! Для дальнейшего чтения и т. д. взгляните на Ubuntu LDAP и RSync и т. д. документы и вики сообщества, я нашел их немного проще, чем в Debian!
Кроме того, для совместного использования /home
каталогов обратите внимание на NFS (сетевая файловая система) и LDAP.
Только сейчас понял, что это длинный пост..
rsync
действительно возможно. Я никоим образом не буду использовать Dropbox для управления конфигурацией моей системы, он должен работать как root. У меня нет хорошего опыта работы с ownCloud или PHP, он работает медленно, и вы не можете использовать больше оборудования, чем я (Opteron, 16 ГБ). Для совместного использования домашних каталогов я, вероятно, буду использовать Samba.
Иззи
post-receive
хук позаботится о «распространении» (например, локальное извлечение и использованиеrsync
для xfer). вещи к другим машинам). Почти без накладных расходов. Это звучит приемлемо?Мартин Юдинг
~/configuration/debian-wheezy/etc/profile
иметь сценарий и, который копирует эти файлы на все машины Debian Wheezy. Но я читал в другом месте, что это может быть хорошо в течение пары дней и закончится тем, что поддерживать его будет кошмаром, так как это не масштабируется. Я мог бы что-то сделать, если другие варианты окажутся излишними, но я хотел бы попробовать инструмент, созданный для этой работы, а не возиться с ним.Иззи