Centos створення локального репозиторія, rtfm linux, devops і системне адміністрування

Centos створення локального репозиторія, rtfm linux, devops і системне адміністрування
В наявності є 8 серверів, і дуже сумний канал в світ.

Що б зменшити навантаження, і прискорити процес - можна створити окремий репозиторій на одній машині, яка буде оновлювати в ньому пакети, і потім роздавати поновлення іншим машинам в мережі.

Налаштування виконується на CentOS 6.6.

Список дзеркал (як HTTP. Так і rsync) можна знайти тут >>>.

Створюємо каталоги для сховища:

Коротко про структуру директорій в репозиторії.

  • [Base] - зазвичай зберігається в директорії os. містить в собі пакети, що знаходяться в релізний випуску системи;
  • [Updates] - зазвичай зберігається в директорії updates. містить в собі більш нові стосовно [Base] пакети.

Зараз нам потрібні тільки ці два. Опис інших можна знайти тут >>>.

Підключаємо образ DVD. що б не качати все з мережі:

Копіюємо вміст диска в директорію /repository/CentOS/6.6/os/i386/:

Підключаємо DVD2. і повторюємо, але копіюємо тільки rpm-файли:

Загальний розмір вийшов:

На завантаження файлів з дисків пішло

Якщо ж підключити диск можливості немає - можна скачати [Base] з дзеркала.

Вибираємо сервер, перевіряємо його вміст:

І починаємо завантаження:

Репозиторій [Base] готовий. Утиліта createrepo потрібно тільки в тому випадку, якщо ви хочете створювати свій репозиторій зі своїми пакетами.

Так як ми копіювали дані з диска або мережі - всі метадані для сховища вже є в каталозі /repository/CentOS/6.6/os/i386/repodata/:

Приступаємо до [Updates]. Вміст будемо завантажувати з дзеркала.

І завантажуємо дані в каталог updates:

За часу зайняло

Створюємо файл конфігурації нашого сховища /etc/yum.repos.d/local.repo:

Перевіряємо поновлення, відключивши всі репозиторії, крім нашого нового [Updates]:

Далі, що б відкрити доступ до сховища для інших серверів - налаштовуємо NGINX (або Apache HTTP. Але у мене всюди NGINX).

Створюємо файл /etc/nginx/conf.d/repo.local.net.conf з таким вмістом:

Далі, повертаємося до файлу налаштувань сховища, і міняємо:

Тепер замість звернення безпосередньо до локальної директорії - YUM буде відправляти запит по HTTP.

У разі помилок виду:

Error importing repomd.xml for update: Damaged repomd.xml file

В першу чергу пробуємо отримати файл по HTTP:

І дивимося помилки веб-сервера.

Встановлюємо новий репозиторій (файл local.repo) на інших серверах.

Останній крок - налаштувати оновлення пакетів в [Updates].

Зробимо простий скрипт /etc/cron.daily/reposupdate.sh:

Останній момент, який варто уточнити. У всіх прикладах вище - завантаження пакетів робиться з директорії 6.6, тоді як на дзеркалах є директорія 6:

Можна оновлюватися з нього (обов'язково і [Base] і [Updates]), тоді система оновиться при виході нової версії, наприклад, 6.7 (хоча такий вже не буде, напевно).

Так само - додаються репозиторії Elrepo. RPMforge і інші.