Как использовать встроенный инструмент для резервного копирования и восстановления FreeIPA

Обновлено и опубликовано Опубликовано:

Используемые термины: FreeIPA.

В создании резервной копии FreeIPA мало нюансов и сложностей. А вот при восстановлении они есть. Мы рассмотрим простую процедуру создания архива для каталога и его служб, а также процесс восстановления сервиса.

Создание резервной копии

Создание резервной копии выполняется встроенным методом (команда ipa-backup). Рассмотрим пример ее использования.

Имейте ввиду, что в процессе создания полной копии система останавливает IPA services. Поэтому запускать процесс стоит в нерабочее время.

Лучше всего, выполнять полное архивирование на сервере с CRL generation master. Найти его можно, выполнив команду:

ipa-crlgen-manage status

Сервер, на котором запущена данная роль должен вернуть ответ:

CRL generation: enabled

* Данный вопрос остается на выборе системного администратора. CRL generation master можно и назначить на любой реплике. А можно делать бэкап на всех репликах FreeIPA.

И так, резервную копию можно создать командой:

ipa-backup

* при запуске данной команды без параметров, будет создана полная копия каталога и его настроек. Такая копия может быть использована для восстановления каталога в случае нарушения его работы. Также можно сделать копию данных с помощью опции —data — это удобно для восстановления случайно удаленной информации.
** команда ipa-backup -h покажет нам полный набор возможностей. В нашем примере мы ограничимся созданием полной копии.

Мы должны увидеть вывод команды на подобие этого:

Preparing backup on ipa.admins24.local
Local roles match globally used roles, proceeding.
Stopping IPA services
Backing up ipaca in DMOSK-LOCAL to LDIF
Backing up userRoot in DMOSK-LOCAL to LDIF
Backing up DMOSK-LOCAL
Backing up files
Starting IPA service

Backed up to /var/lib/ipa/backup/ipa-full-2021-09-27-12-22-42
The ipa-backup command was successful

* как видим, наша копия создана в каталоге /var/lib/ipa/backup/.

Как и говорилось выше, процесс создания резерва, относительно, понятен и прост. Перейдем к процессу восстановления.

Восстановление

Мы рассмотрим процедуру в два этапа на примере полного восстановления службы каталогов. Сначала мы выполним подготовительные действия, после саму команду для восстановления.

Подготовка

Для успешного восстановления службы каталогов необходимо:

  • Установить пакет ipa-server (и, при необходимости, ipa-server-dns).
  • Задать то же имя, что и было у сервера, на котором запускалась процедура резервного копирования.

Приступим.

1. Смотрим информацию о резервной копии.

Для этого переходим в каталог с резервной копией. В нем будет файл header — смотрим его содержимое:

cat header

Мы должны увидеть что-то на подобие:

[ipa]
type = FULL
time = 2021-09-27T09:20:14
host = ipa.admins24.local
ipa_version = 4.9.2
version = 1
services = KDC,KPASSWD,HTTP,OTPD,KEYS,CA,DNS,DNSKeySync

* где для нас очень важны:

  • type — тип копии: FULL или DATA. От этого зависит процесс восстановления. FULL выполняется на чистом сервере, DATA — на работающей реплике.
  • host — имя сервера, на котором сделана копия. Новый сервер должен иметь такое же имя.
  • ipa_version — версия сервера FreeIPA. Нужно будет на целевом сервере установить такую же.
  • services — службы для которых будет восстановлена информация.

После сбора сведений, идем дальше.

2. Установка ipa-server.

Проще всего, установку выполнить из репозитория.  

а) для Rocky Linux / CentOS 8:

dnf install @idm:DL1

dnf install ipa-server

* первая команда установит модуль DL1 Stream-репозитория. Вторая — сам freeipa.

б) для CentOS 7:

yum install ipa-server

Подробнее процедура описана в инструкции Установка и использование FreeIPA на CentOS.

Но если нужная версия в нем отсутствует, придется собирать пакет из исходников. Список исходников можно найти на официальном сайте — старые и новые. Смотрим ссылку на нужный нам исходник, скачиваем его:

wget https://releases.pagure.org/freeipa/freeipa-4.9.2.tar.gz

 Распаковываем:

tar zxvf freeipa-*.tar.gz

Переходим:

cd freeipa-*/

Конфигурируем, собираем, устанавливаем:

./configure

make install

Если на сервере FreeIPA также выполняется роль DNS, нам нужен еще один пакет:

yum install ipa-server-dns

3. Смена имени хоста.

Как говорилось выше, имя нашего хоста должно быть таким же, так и у сервера, на котором создана резервная копия. В нашем примере это ipa.admins24.local — команда будет такой:

hostnamectl set-hostname ipa.admins24.local

Подготовительные работы выполнены.

Выполнение ipa-restore

Нам нужно загрузить каталог с резервной копией на целевой сервер, после помещаем его в каталог /var/lib/ipa/backup. Само копирование может быть выполнено с помощью rsync, scp, WinSCP и так далее.

После переходим в каталог с копией:

cd /var/lib/ipa/backup

Запускаем процесс восстановления:

ipa-restore ipa-full-2021-09-27-12-22-42

* где ipa-full-2021-09-27-12-22-42 — название каталога с архивом.

Мы увидим запрос с предупреждением, что все наши данные будут перезаписаны данными из архива. Соглашаемся:

Restoring data will overwrite existing live data. Continue to restore? [no]: yes

Ждем окончания процесса.

Проверка

После восстановления необходимо убедиться, что наши службы работают корректно. Описание решения некоторых проблем описано ниже.

1. Для начала, смотрим общее состояние служб:

ipactl status

В идеале, мы должны увидеть:

Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING
named Service: RUNNING
httpd Service: RUNNING
ipa-custodia Service: RUNNING
pki-tomcatd Service: RUNNING
ipa-otpd Service: RUNNING
ipa-dnskeysyncd Service: RUNNING
ipa: INFO: The ipactl command was successful

2. После смотрим состояние с помощью healthcheck. Для этого установим утилиту:

yum install ipa-healthcheck

Запустим:

ipa-healthcheck

Если проблем нет, то мы должны увидеть пустые скобки:

Возможные проблемы

Рассмотрим ошибки, с которыми столкнулся я.

pki-tomcatd Service: STOPPED

Ошибка появляется после восстановления при проверке состояния служб командой ipactl status.

Причина: при восстановлении в файл /etc/hosts прописывается строка для нашего сервера. Но если новый сервер имеет IP-адрес отличный от сервера, на котором выполнялась копия, данная запись будет неправильной.

Решение: в идеале, новый сервер должен быть с таким же адресом, что и был у предшественника. Если это невозможно по каким-либо причинам, то открываем файл hosts:

vi /etc/hosts

И задаем правильное значение:

192.168.1.15    ipa.admins24.local

* где 192.168.1.15 — новый адрес сервера; ipa.admins24.local — имя нашего сервера.

Перезапускаем сервис: 

ipactl restart

Теперь должно все работать.

No such file or directory: ‘/etc/httpd/alias/ipasession.key’

Ошибка появляется при проверке состоянию с помощью healthcheck.

Причина: отсутствует каталог /etc/httpd/alias. Скорее всего, недоработка со стороны разработчиков утилиты restore.

Решение: создаем каталог:

mkdir /etc/httpd/alias

Перезапускаем httpd:

systemctl restart httpd

Init: Pass phrase incorrect for key

Ошибка появляется в логе веб-сервера httpd при попытке его запуска.

Причина: нет доступа по сети к каталогу. Причины могут быть разные, нужна диагностика по сети. 

В моем случае оказалось, что в файле hosts было несколько записей для моего сервера. 

Решение: проверяем работу сети и доступность каталога. Проверяем, что в hosts нет лишних строчек для нашего сервера.

После выполняем:

ipactl restart