Страницы

14 февраля 2023 г.

NetBox. Обновление из репозитория Git

УСТАРЕЛО!!!
cd /opt/netbox
ll
sudo git checkout master
sudo git pull origin master
sudo ./upgrade.sh
sudo systemctl restart netbox netbox-rq


Если такая ошибка:
File "/opt/netbox/netbox/dcim/migrations/0145_site_remove_deprecated_fields.py", line 24, 
in check_legacy_data
    raise DataError(
django.db.utils.DataError: Unable to proceed with deleting contact fields from Site model: 
Found 4 sites with legacy contact data. Please ensure all legacy site contact data has been 
migrated to contact objects before proceeding. Or, set the NETBOX_DELETE_LEGACY_DATA 
environment variable to bypass this safeguard and delete all legacy site contact data
Выполнить это:
sudo NETBOX_DELETE_LEGACY_DATA=1 ./upgrade.sh
ОБНОВЛЕНИЕ!!!
ls -ld /opt/netbox /opt/netbox/.git
git ls-remote --tags https://github.com/netbox-community/netbox.git \
  | grep -o 'refs/tags/v[0-9]*\.[0-9]*\.[0-9]*$' \
  | tail -n 1 \
  | sed 's|refs/tags/||'

cd /opt/netbox && \
sudo git fetch && \
sudo git checkout v4.2.7

Вам может потребоваться запустить git fetch --tags
обновление локального репозитория с использованием удаленного обновленного контента и тегов.
https://github.com/netbox-community/netbox/discussions/12224

ОБНОВЛЕНИЕ!!!
В случае ошибки 
Ошибка при обновлении netbox Traceback (most recent call last): File "/opt/netbox/netbox/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 436, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/management/base.py", line 416, in run_from_argv self.execute(*args, **cmd_options) File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/management/base.py", line 460, in execute output = self.handle(*args, **options) File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/management/base.py", line 107, in wrapper res = handle_func(*args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/management/commands/migrate.py", line 114, in handle executor = MigrationExecutor(connection, self.migration_progress_callback) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/migrations/executor.py", line 18, in __init__ self.loader = MigrationLoader(self.connection) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/migrations/loader.py", line 58, in __init__ self.build_graph() File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/migrations/loader.py", line 235, in build_graph self.applied_migrations = recorder.applied_migrations() File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/migrations/recorder.py", line 89, in applied_migrations if self.has_table(): File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/migrations/recorder.py", line 63, in has_table with self.connection.cursor() as cursor: File "/opt/netbox/venv/lib/python3.10/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 320, in cursor return self._cursor() File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 296, in _cursor self.ensure_connection() File "/opt/netbox/venv/lib/python3.10/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 279, in ensure_connection self.connect() File "/opt/netbox/venv/lib/python3.10/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 258, in connect self.init_connection_state() File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/backends/postgresql/base.py", line 398, in init_connection_state super().init_connection_state() File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 225, in init_connection_state self.check_database_version_supported() File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 201, in check_database_version_supported raise NotSupportedError( django.db.utils.NotSupportedError: PostgreSQL 14 or later is required (found 12.18).
Ошибка указывает на то, что ваша версия PostgreSQL (12.18) не совместима с текущей версией NetBox. Требуется PostgreSQL 14 или новее.
Вот решение:
# Остановите NetBox и PostgreSQL
sudo systemctl stop netbox netbox-rq
sudo systemctl stop postgresql

# Добавление репозитория с PostgreSQL 14
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update

# Установка PostgreSQL 14
sudo apt-get install postgresql-14

# Миграция данных со старой версии
sudo pg_dropcluster --stop 14 main
sudo pg_upgradecluster 12 main 14

# Удаление старой версии (после проверки)
sudo pg_dropcluster --stop 12 main
sudo apt-get remove postgresql-12
cd /opt/netbox/
git fetch --tags
sudo git checkout v4.4.2
sudo ./upgrade.sh
sudo systemctl restart netbox netbox-rq