Обновление сервера Chef Infra
Каждая новая версия сервера Chef Infra Server повышает надёжность и обновляет компоненты сторонних разработчиков, обеспечивая безопасность сервера. Важно поддерживать сервер Chef Infra Server в актуальном состоянии, чтобы обеспечить безопасную и надёжную работу Chef Infra в вашей организации.
Предупреждение
Матрица обновлений
Если вы используете сервер Chef Infra Server 12.17.15 или более поздней версии, вы можете обновить его напрямую до последних версий сервера Chef Infra Server 14. Если вы используете версию ниже 12.17.15, вы должны выполнить поэтапное обновление, как описано ниже.
| Используемая версия | Обновить до версии | Требуется лицензия | Поддерживаемая версия |
|---|---|---|---|
| 13 | 14 | Да | Да |
| 12.17.15 | 14 | Да | Нет |
| 12.3.0 | 12.17.15 | Нет | Нет |
| 11 | 12.3.0 | Нет | Нет |
- Требуется лицензия
- Сервер Chef Infra Server 13 и более поздние версии регулируются Лицензионным соглашением Chef. Вы должны принять эти условия при первом использовании сервера Chef Infra Server, введя
Yesпри запросе. - Поддерживаемая версия
- Сервер Chef Infra Server 14 и более поздние версии поддерживаются выпусками Chef Software. Более ранние версии не поддерживаются. Дополнительную информацию о поддерживаемых выпусках Chef Software см. в документации Поддерживаемые версии.
Шаги, зависящие от версии
Обновление до 14.x
В Chef Infra Server 14.0 индекс поиска переключился с Solr на Elasticsearch. Процесс обновления сервера Chef Infra Server 14 требует остановки сервера, установки нового пакета и последующего обновления сервера, включая автоматическую переиндексацию Elasticsearch для существующих пользователей Solr. Мы оцениваем, что операция переиндексации займёт 2 минуты на каждые 1000 узлов, но она может занять больше времени в зависимости от аппаратного обеспечения вашего сервера и сложности данных Chef.
Обновление сервера Chef Infra Server 14 не автоматически переиндексирует существующие внешние установки Elasticsearch.
Обновление до 14.8
Обновление сервера Chef Infra Server 14.8 обновляет PostgreSQL с версии 9.6 до 13.3. Процесс обновления 14.8 требует однократной остановки для удаления, обновления и переиндексации базы данных. Весь процесс обновления занимает около одной минуты на каждые 1000 узлов (1000 узлов – это приблизительно 286 МБ). Этот процесс может занять больше времени в зависимости от аппаратного обеспечения вашего сервера и размера объектов узлов на вашем сервере Chef Infra Server.
Примечание
postgresql['pg_upgrade_timeout'] в chef-server.rb для значения тайм-аута обновления. Установите это значение в зависимости от размера данных, где на каждые 1000 узлов (приблизительно 286 МБ) потребуется около одной минуты.Подготовка базы данных
-
Запустите
VACUUM FULLна базе данных PostgreSQL, если у вас не настроено автоматическое вакуумирование. Этот процесс уменьшит размер базы данных, удалив ненужные данные, и ускорит миграцию. ОперацияVACUUM FULLзанимает около 1-2 минут на гигабайт данных в зависимости от сложности данных и требует свободного места на диске, по крайней мере, размером с вашу базу данных.sudo su - opscode-pgsql /opt/opscode/embedded/bin/vacuumdb --all --fullЗатем вы должны увидеть вывод, подобный:
vacuumdb: vacuuming database "bifrost" vacuumdb: vacuuming database "oc_id" vacuumdb: vacuuming database "opscode-pgsql" vacuumdb: vacuuming database "opscode_chef" vacuumdb: vacuuming database "postgres" vacuumdb: vacuuming database "template1" -
Создайте резервную копию базы данных PostgreSQL перед обновлением, чтобы вы могли восстановить полную базу данных до предыдущей версии в случае сбоя. Дополнительную информацию см. в разделе Резервное копирование и восстановление.
Шаги обновления
Следуйте инструкциям по обновлению сервера Chef Infra Server ниже.
Примечание
Обновление до 12.17.15
Предупреждение
insecure_addon_compat в false. Начиная с версии 12.14, сервер Chef Infra Server по умолчанию отображает пароли внутри каталога /etc/opscode. Если вы используете сервер Chef Infra Server без дополнений или используете последние версии дополнений, вы можете установить insecure_addon_compat в false в `/etc/opscode/chef-server.rb`. Сервер Chef Infra Server запишет все учетные данные в одно место.
Дополнительную информацию о генерации паролей, включая список поддерживаемых версий дополнений, см. в разделе Управление учетными данными сервера Chef Infra Server.
Обновление до 12.3.0
Если вы используете версию сервера Chef Infra Server ниже 12.3.0, обратитесь в службу поддержки Chef для получения помощи по обновлению вашей установки сервера Chef Infra Server.
Процесс обновления сервера Chef Infra Server 14
Автономный сервер
Процесс обновления сервера Chef Infra Server 14 требует остановки сервера, установки нового пакета и последующего обновления сервера, включая автоматическую переиндексацию Elasticsearch для существующих пользователей Solr. Мы оцениваем, что операция переиндексации займёт 2 минуты на каждые 1000 узлов, но она может занять больше времени в зависимости от аппаратного обеспечения вашего сервера и сложности данных Chef.
-
Выполните
vacuumdbперед началом обновления:sudo su - opscode-pgsql /opt/opscode/embedded/bin/vacuumdb --all --full exitВы должны увидеть вывод, подобный:
vacuumdb: vacuuming database "bifrost" vacuumdb: vacuuming database "oc_id" vacuumdb: vacuuming database "opscode-pgsql" vacuumdb: vacuuming database "opscode_chef" vacuumdb: vacuuming database "postgres" vacuumdb: vacuuming database "template1" -
Создайте резервную копию данных сервера Chef Infra Server перед началом процесса обновления с помощью chef-server-ctl-backup. Запишите местоположение резервной копии (по умолчанию
/var/opt/chef-backup). Обратите внимание, что сервер Chef Infra Server будет недоступен во время выполнения резервного копирования:sudo chef-server-ctl backup -
Убедитесь, что службы сервера Chef Infra Server работают:
chef-server-ctl reconfigure -
Если вы уже используете версию 12.17.15 или выше, переходите к следующему шагу. В противном случае ознакомьтесь с матрицей обновлений и выполните поэтапное обновление.
- Если вы используете Chef Infra Server 12.3.0, обновитесь до 12.17.15.
- Если вы используете Chef Infra Server 11, сначала обновитесь до 12.3.0, а затем до 12.17.15.
После выполнения поэтапного обновления до 12.17.15, переходите к следующему шагу.
-
Загрузите нужную версию сервера Chef Infra Server с сайта загрузок сервера Chef Infra Server.
-
Остановите сервер Chef Infra Server:
chef-server-ctl stop || chef-server-ctl kill rabbitmq -
Установите пакет сервера Chef Infra Server:
Установить с помощью
dpkg:dpkg -iEG /path/to/chef-server-core-VERSION.debУстановить с помощью RPM Package Manager:
rpm -Uvh --nopostun /path/to/chef-server-core-VERSION.rpm -
Обновите сервер и примите лицензию Chef Software, введя
Yesв запросе:chef-server-ctl upgradeПринять лицензию и выполнить обновление одной командой:
CHEF_LICENSE='accept' chef-server-ctl upgrade -
Если обновление не удалось, см. раздел по устранению неполадок при обновлении ниже.
Если обновление прошло успешно, запустите сервер Chef Infra Server:
chef-server-ctl start -
Обновление любых дополнений к серверу Chef Infra Server.
-
После завершения процесса обновления протестируйте и проверьте работоспособность сервера.
-
Очистите данные сервера Chef Infra Server, удалив старые данные:
chef-server-ctl cleanup -
Переиндексируйте базу данных:
sudo su - opscode-pgsql /opt/opscode/embedded/bin/reindexdb --allВы должны увидеть вывод, подобный:
reindexdb: reindexing database "bifrost" reindexdb: reindexing database "oc_id" reindexdb: reindexing database "opscode-pgsql" reindexdb: reindexing database "opscode_chef" reindexdb: reindexing database "postgres" reindexdb: reindexing database "template1"
Обновление завершено.
Примечание
Устранение неполадок при сбое обновления
-
Если обновление завершилось сбоем и у вас повреждён сервер Chef Infra Server и/или база данных, НЕ РИСКУЙТЕ ВАШЕЙ РЕЗЕРВНОЙ КОПИЕЙ БАЗЫ ДАННЫХ. Предпримите все необходимые шаги для сохранения резервной копии, включая её копирование на другой диск. Обратитесь к профессиональному системному администратору за инструкциями и рекомендациями.
-
Обратитесь в службу поддержки.
-
Переустановите исходную версию сервера Chef Infra Server, которую вы использовали до попытки обновления (если вам пришлось выполнить поэтапное обновление, установите исходную версию сервера Chef Infra Server до поэтапного обновления, а не любые версии, до которых вы обновлялись в процессе поэтапного обновления). Опять же, НЕ РИСКУЙТЕ ВАШЕЙ РЕЗЕРВНОЙ КОПИЕЙ БАЗЫ ДАННЫХ. Например, рассмотрите возможность использования отдельного диска для новой установки.
-
Ознакомьтесь с документацией восстановления и восстановите базу данных из пути, где она была сохранена:
chef-server-ctl restore /path/to/tar/archive.tar.gz
Внешний PostgreSQL
Следующие шаги по обновлению внешнего PostgreSQL предоставляются только в качестве справочного материала. Пользователь несёт ответственность за обновление и обслуживание любых конфигураций внешнего PostgreSQL.
Обновить сервер Chef Infra Server
-
Войдите в систему на внешней машине PostgreSQL.
-
Запустите
vacuumdbперед началом обновления:sudo su postgres /usr/bin/vacuumdb --all --full exit -
Войдите в систему на машине Chef Infra Server.
-
Обратитесь к документации по
knife-ec-backup.Установите
knife-ec-backup, если это не сделано. Далее следует пример сеанса (обратите внимание, что ваши шаги могут отличаться в зависимости от версий программного обеспечения, топологии вашей настройки, вашей операционной системы и дистрибутива, а также ряда других факторов).Например:
apt-get update apt install ruby apt install make curl -L https://chef.io/chef/install.sh | sudo bash -s -- -P chefdk export PATH=$PATH:/root/.chefdk/gem/ruby/2.6.0/bin apt-get -y install gcc postgresql libpq-dev /opt/chefdk/embedded/bin/gem install knife-ec-backup -- --with-pg-config=/opt/opscode/embedded/postgresql/9.6/bin/pg_config -
Настройте
knife, если это не сделано. Далее следует пример сеанса (снова, обратите внимание, что ваши шаги могут отличаться в зависимости от ряда факторов).Например:
$ chef-server-ctl org-create 4thcafe 'Fourth Cafe, Inc.' --association_user janedoe --filename /tmp/4thcafe-validator.pem $ chef generate repo chef-repo $ cd chef-repo/ $ mkdir -p .chef $ echo '.chef' >> .gitignore $ cp /tmp/4thcafe-validator.pem .chef $ cp /home/ubuntu/janedoe.pem .chef $ cd .chef $ knife configure WARNING: No knife configuration file found. See https://docs.chef.io/config_rb/ for details. Please enter the chef server URL: [https://1.2.3.4/organizations/myorg] https://1.2.3.4/organizations/4thcafe Please enter an existing username or clientname for the API: [ubuntu] janedoe $ knife ssl fetch -
Сделайте резервную копию базы данных. Например:
mkdir /backup /opt/chefdk/embedded/bin/knife ec backup /backup -
Если вы используете Chef Infra Server версии 12.17.15 или выше, перейдите к следующему шагу. В противном случае, обратитесь к матрице обновления и выполните поэтапное обновление.
Если вы используете выпуск Chef Infra Server до 12.17.15, вы не можете напрямую обновиться до 14.8.X. Вы должны сначала выполнить поэтапное обновление.
- Если вы используете Chef Infra Server 12.3.0, обновитесь до 12.17.15.
- Если вы используете Chef Infra Server 11, вам сначала нужно обновить до 12.3.0, а затем до 12.17.15.
После выполнения поэтапного обновления вернитесь сюда и продолжайте со следующего шага.
-
Загрузить нужную версию Chef Infra Server.
-
Остановите Chef Infra Server:
chef-server-ctl stop || chef-server-ctl kill rabbitmq -
Установите пакет Chef Infra Server:
Для установки с
dpkg:dpkg -iEG /path/to/chef-server-core-VERSION.debДля установки с помощью диспетчера пакетов RPM:
rpm -Uvh --nopostun --force /path/to/chef-server-core-VERSION.rpm -
Обновите Chef Infra Server и примите лицензию Chef Software, введя
Yesв подсказке:chef-server-ctl upgradeДля принятия лицензии и обновления одной командой:
CHEF_LICENSE='accept' chef-server-ctl upgrade -
Если обновление не удалось, см. раздел по поиск проблем при неудачном обновлении.
Если обновление прошло успешно, запустите службы Chef Infra Server и очистите данные.
sudo chef-server-ctl start sudo chef-server-ctl cleanupТеперь вы завершили обновление Chef Infra Server. Перейдите непосредственно к разделу Обновление PostgreSQL.
Обновление PostgreSQL
-
Войдите в систему на внешней машине PostgreSQL.
-
Обновите пакеты и установите выбранную версию PostgreSQL. Пример (Ubuntu/PostgreSQL 13.3):
sudo apt-get update sudo apt-get install postgresql-13 -
Проверьте, есть ли какие-либо различия в конфигурационных файлах. Убедитесь, что при необходимости обновите новые конфигурационные файлы. Пример (PostgreSQL 13.3):
diff /etc/postgresql/OLD_POSTGRESQL_VERSION/main/postgresql.conf /etc/postgresql/13/main/postgresql.conf diff /etc/postgresql/OLD_POSTGRESQL_VERSION/main/pg_hba.conf /etc/postgresql/13/main/pg_hba.conf -
Остановите службу PostgreSQL.
sudo systemctl stop postgresql.service -
Войдите как пользователь
postgres.su postgres -
Убедитесь, что вы находитесь в каталоге, где можно выполнить команду
pg_upgrade.Пример:
cd /tmp -
Проверьте кластеры (обратите внимание на аргумент
--check, это не изменит никаких данных). Пример (PostgreSQL 13.3):/usr/lib/postgresql/13/bin/pg_upgrade \ --old-datadir=/var/lib/postgresql/9.6/main \ --new-datadir=/var/lib/postgresql/13/main \ --old-bindir=/usr/lib/postgresql/9.6/bin \ --new-bindir=/usr/lib/postgresql/13/bin \ --old-options '-c config_file=/etc/postgresql/9.6/main/postgresql.conf' \ --new-options '-c config_file=/etc/postgresql/13/main/postgresql.conf' \ --check -
Мигрируйте данные (без аргумента
--check). Пример (PostgreSQL 13.3):/usr/lib/postgresql/13/bin/pg_upgrade \ --old-datadir=/var/lib/postgresql/9.6/main \ --new-datadir=/var/lib/postgresql/13/main \ --old-bindir=/usr/lib/postgresql/9.6/bin \ --new-bindir=/usr/lib/postgresql/13/bin \ --old-options '-c config_file=/etc/postgresql/9.6/main/postgresql.conf' \ --new-options '-c config_file=/etc/postgresql/13/main/postgresql.conf' -
Выйдите из учетной записи пользователя
postgres.exit -
Поменяйте порты для старой и новой версий PostgreSQL. Пример (PostgreSQL 13.3):
$ sudo vim /etc/postgresql/13/main/postgresql.conf # change "port = 5433" to "port = 5432" $ sudo vim /etc/postgresql/9.6/main/postgresql.conf # change "port = 5432" to "port = 5433" -
Запустите службу PostgreSQL.
sudo systemctl start postgresql.service -
Войдите как пользователь
postgresи подтвердите, что новая версия PostgreSQL верна. Пример (PostgreSQL 13.3):$ sudo su - postgres $ psql -c "SELECT version();" version --------------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 13.3 (Ubuntu 13.3-1.pgdg16.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609, 64-bit (1 row) -
Запустите
reindexdb. Пример:$ /usr/bin/reindexdb --all reindexdb: reindexing database "bifrost" reindexdb: reindexing database "oc_id" reindexdb: reindexing database "opscode_chef" reindexdb: reindexing database "postgres" reindexdb: reindexing database "template1" -
Войдите в систему на машине Chef Infra Server.
-
Проверьте состояние Chef Infra Server. PostgreSQL должен быть подключен.
$ sudo chef-server-ctl status ------------------- Internal Services ------------------- run: bookshelf: (pid 15763) 219163s; run: log: (pid 16559) 228464s run: elasticsearch: (pid 15797) 219162s; run: log: (pid 16345) 228507s run: nginx: (pid 15901) 219162s; run: log: (pid 16745) 228452s run: oc_bifrost: (pid 15909) 219161s; run: log: (pid 16237) 228519s run: oc_id: (pid 15915) 219161s; run: log: (pid 16255) 228513s run: opscode-erchef: (pid 15948) 219160s; run: log: (pid 16673) 228458s run: redis_lb: (pid 15952) 219160s; run: log: (pid 16779) 228445s ------------------- External Services ------------------- run: postgresql: connected OK to 10.0.11.0:5432
Поиск проблем при неудачном обновлении
-
Если обновление завершилось неудачно и у вас поврежден Chef Infra Server и/или база данных, НЕ РИСКУЙТЕ ВАШЕЙ РЕЗЕРВНОЙ КОПИЕЙ БАЗЫ ДАННЫХ. Предпримите все необходимые шаги для сохранения резервной копии, включая копирование её на другой диск. Проконсультируйтесь с системным администратором по инструкциям и рекомендациям.
-
Свяжитесь с отделом технической поддержки.
-
Переустановите исходную версию Chef Infra Server, которую вы использовали до попытки обновления (если вам пришлось выполнить поэтапное обновление, установите исходную версию Chef Infra Server перед поэтапным обновлением, а не любые версии, к которым вы обновлялись в процессе поэтапного обновления). Снова, НЕ РИСКУЙТЕ ВАШЕЙ РЕЗЕРВНОЙ КОПИЕЙ БАЗЫ ДАННЫХ. Например, рассмотрите возможность использования отдельного диска для новой установки.
-
Обратитесь к документации по knife-ec-restore, и восстановите базу данных из пути, где она была сохранена.
Пример:
/opt/chefdk/embedded/bin/knife ec restore /backup/ -
Не продолжайте обновление PostgreSQL, пока у вас нет неповрежденного Chef Infra Server и неповрежденной базы данных PostgreSQL.
Установка Chef Backend
Предупреждение
Chef Backend устарел и больше не находится в активной разработке. Свяжитесь с вашим представителем Chef по вопросам обновления вашей системы.
Этот документ больше не поддерживается.
Chef Infra Server может работать в конфигурации с высокой доступностью, которая обеспечивает автоматическое распределение нагрузки и отказоустойчивость для состоятельных компонентов в архитектуре системы.
Чтобы обновить вашу установку Chef Backend, см. Высокая доступность: Обновление до Chef Backend 2.
Иерархическая установка
Этот раздел описывает процесс обновления с конфигурации иерархического сервера.
Примечание
tier. Для получения последней информации о настройке кластера серверов с высокой доступностью см. Высокая доступность: кластер Backend. Шаги по обновлению иерархической конфигурации
Для обновления до Chef Infra Server в иерархической конфигурации Chef Infra Server выполните следующие действия:
-
Создайте резервную копию данных Chef Infra Server перед началом процесса обновления с помощью knife-ec-backup.
-
Подтвердите, что службы Chef Infra Server работают:
chef-server-ctl reconfigure -
Загрузите нужную версию Chef Infra Server со страницы Загрузки Chef Infra Server, затем скопируйте её на каждый сервер.
-
Остановите все серверы front-end:
chef-server-ctl stop -
Установите пакет Chef Infra Server на все серверы:
Для установки с
dpkg:dpkg -i /path/to/chef-server-core-<version>.debДля установки с помощью диспетчера пакетов RPM:
rpm -Uvh --nopostun /path/to/chef-server-core-<version>.rpm -
Остановите сервер back-end:
chef-server-ctl stop -
Обновите сервер и примите лицензию Chef Software, введя
Yesв подсказке:chef-server-ctl upgradeДля принятия лицензии и обновления одной командой:
CHEF_LICENSE='accept' chef-server-ctl upgrade -
Скопируйте весь каталог
/etc/opscodeс сервера back-end на все серверы front-end:scp -r /etc/opscode <each server's IP>:/etc -
Обновите каждый из серверов front-end:
chef-server-ctl upgrade -
Выполните следующую команду как на сервере front-end, так и на сервере back-end:
chef-server-ctl start -
Обновить любые дополнения Chef Infra Server.
-
После завершения процесса обновления протестируйте и проверьте работоспособность сервера.
-
Очистите сервер, удалив старые данные:
chef-server-ctl cleanup
Примечание
Обновление дополнения Manage
Chef Manage — это консольная утилита для управления пакетами данных, атрибутами, списками выполнения, ролями, средами и кулинарными книгами через веб-интерфейс.
Chef Infra Server 14 поддерживает дополнение Chef Manage. Это дополнение устарело и достигнет конца жизненного цикла 31 декабря 2022 года. После обновления Chef Infra Server переустановите дополнение, а затем переконфигурируйте Chef Infra Server и дополнение.
Использование Downloads.chef.io
Подкоманда install по умолчанию загружает пакеты с https://downloads.chef.io. Для систем, которые не находятся за брандмауэром (и имеют доступ к https://downloads.chef.io), эти пакеты можно установить, как описано ниже.
-
Установить дополнения
Установите Chef Manage с:
sudo chef-server-ctl install chef-manage -
Переконфигурировать сервер
sudo chef-server-ctl reconfigure -
Переконфигурировать дополнения
Переконфигурируйте Chef Manage с:
sudo chef-manage-ctl reconfigure
Наконец, примите лицензию Chef:
sudo chef-manage-ctl reconfigure --accept-license
Использование локальных пакетов
Используйте подкоманду install с опцией --path, чтобы установить дополнение Chef Manage (chef-manage) для Chef Infra Server.
sudo chef-server-ctl install PACKAGE_NAME --path /path/to/package/directory
Например:
sudo chef-server-ctl install chef-manage --path /root/packages
Команда chef-server-ctl установит первый пакет chef-manage, найденный в каталоге /root/packages.
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/server/upgrades/