Программное обеспечение для синхронизации `/etc/profile` и других файлов конфигурации с серверными компьютерами

У меня есть домашний сервер Raspberry Pi с Debian Wheezy. У меня также есть пара ящиков Ubuntu и Debian, и я хотел бы использовать для них какое-то управление. В частности, я хотел бы сделать следующее:

  • Имейте одинаковые репозитории программного обеспечения на машинах с той же версией Ubuntu. Итак, один /etc/apt/sources.listдля всех Ubuntu, один для Debian Stable и один для Debian Wheezy.

  • Одни и те же пользователи на всех машинах и одни и те же пароли.

  • То же самое /etc/profile, так что вход на всех компьютерах выглядит одинаково.

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

До сих пор я слышал о:

  • Кукольный
  • шеф-повар
  • CF Двигатель
  • Ансибль
  • Поваренная соль

Судя по репозиторию Debian Wheezy, в репозитории есть все, кроме Ansible. Ansible не требует установки какого-либо программного обеспечения на других компьютерах, поэтому я мог бы просто попытаться упаковать его самостоятельно или установить из исходного кода.

У меня не так много опыта администрирования нескольких компьютеров. До сих пор у меня был только один компьютер, и на этом все. Хотя у меня есть опыт программирования. Не могли бы вы дать мне предложение, с какого инструмента мне начать?


До сих пор я играл с Puppet в течение двух часов. Кажется, он может делать то, что я хочу, это может быть слишком много.

Необработанной идеей было бы использовать для этого Git (см., например, Использование Git для управления веб-сайтом ). Таким образом, вы управляете всеми своими (конфигурационными) файлами на локальном компьютере, и после проверки и подтверждения помещаете их в «центральное репо», где post-receiveхук позаботится о «распространении» (например, локальное извлечение и использование rsyncдля xfer). вещи к другим машинам). Почти без накладных расходов. Это звучит приемлемо?
Я думал о том, чтобы ~/configuration/debian-wheezy/etc/profileиметь сценарий и, который копирует эти файлы на все машины Debian Wheezy. Но я читал в другом месте, что это может быть хорошо в течение пары дней и закончится тем, что поддерживать его будет кошмаром, так как это не масштабируется. Я мог бы что-то сделать, если другие варианты окажутся излишними, но я хотел бы попробовать инструмент, созданный для этой работы, а не возиться с ним.
Да я вижу. Я просто думаю, что такие программы, как CFEngine или Puppet, могут быть немного излишними всего для нескольких машин (не могу сказать о других), поэтому я просто предложил. Не работая ни с одним из таких, я лучше оставлю дальнейшие аргументы тому, у кого больше знаний в этой области;)

Ответы (1)

Более сложный момент здесь заключается в синхронизации пользователей (и паролей) для создания единого входа (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.

Только сейчас понял, что это длинный пост..

Часть LDAP выглядит хорошо, кто-то сказал, что она также поддерживает кэширование, чтобы ноутбуки можно было использовать вне сети. Копирование файлов с rsyncдействительно возможно. Я никоим образом не буду использовать Dropbox для управления конфигурацией моей системы, он должен работать как root. У меня нет хорошего опыта работы с ownCloud или PHP, он работает медленно, и вы не можете использовать больше оборудования, чем я (Opteron, 16 ГБ). Для совместного использования домашних каталогов я, вероятно, буду использовать Samba.
Да, я также обнаружил, что OwnCloud работает медленно. Тем не менее, я бы порекомендовал NFS вместо Samba в любой день, я нашел его проще в настройке и быстрее. Кроме того, основной «хороший момент» Sambas заключается в поддержке Windows, которая вам, похоже, не требуется.
Самба уже настроена. Здесь есть два компьютера с Windows, но один для игр, а другой для моей подруги, поэтому ими не нужно так тщательно управлять.