diff --git a/00_manifest.csv b/00_manifest.csv
index 504252e..8c7f7b7 100644
--- a/00_manifest.csv
+++ b/00_manifest.csv
@@ -79,4 +79,9 @@ VKC_PR_M05_02_k8s_stage2log_РемизовКЛ_20260615.log,EVIDENCE,M05,02,Ло
VKC_PR_M05_02_k8s_stage3log_РемизовКЛ_20260615.log,EVIDENCE,M05,02,Лог применения манифеста и ожидания External-IP,02_evidence/VKC_PR_M05_02_k8s_stage3log_РемизовКЛ_20260615.log,VKC_PR_M05_02_k8s_REPORT_РемизовКЛ_20260615.md,final,
VKC_PR_M05_02_k8s_stage3pruf_РемизовКЛ_20260615.png,EVIDENCE,M05,02,Страница nginx по внешнему IP балансировщика,02_evidence/VKC_PR_M05_02_k8s_stage3pruf_РемизовКЛ_20260615.png,VKC_PR_M05_02_k8s_REPORT_РемизовКЛ_20260615.md,final,
VKC_PR_M05_02_k8s_deployment_РемизовКЛ_20260615.yaml,CODE,M05,02,Манифест Deployment и Service LoadBalancer,03_code/VKC_PR_M05_02_k8s_deployment_РемизовКЛ_20260615.yaml,VKC_PR_M05_02_k8s_REPORT_РемизовКЛ_20260615.md,final,
+VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md,PR,M05,03,Создание образов с Packer,01_reports/VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md,,final,
+VKC_PR_M05_03_packer_log_РемизовКЛ_20260616.log,EVIDENCE,M05,03,Лог сборки Packer,02_evidence/VKC_PR_M05_03_packer_log_РемизовКЛ_20260616.log,VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md,final,
+VKC_PR_M05_03_packer_packer-config_РемизовКЛ_20260516.pkr.hcl,CODE,M05,03,Конфигурация Packer,03_code/VKC_PR_M05_03_packer_packer-config_РемизовКЛ_20260516.pkr.hcl,VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md,final,
+VKC_PR_M05_03_packer_curl_РемизовКЛ_20260616.png,EVIDENCE,M05,03,Проверка работы nginx через curl на тестовой ВМ,02_evidence/VKC_PR_M05_03_packer_curl_РемизовКЛ_20260616.png,VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md,final,
+VKC_PR_M05_03_packer_image_РемизовКЛ_20260616.png,EVIDENCE,M05,03,Созданный образ Packer в списке образов VK Cloud,02_evidence/VKC_PR_M05_03_packer_image_РемизовКЛ_20260616.png,VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md,final,
00_manifest.csv,MANIFEST,all,all,Финальный манифест сдачи,00_manifest.csv,,final,
diff --git a/01_reports/VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md b/01_reports/VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md
new file mode 100644
index 0000000..08137f4
--- /dev/null
+++ b/01_reports/VKC_PR_M05_03_packer_REPORT_РемизовКЛ_20260616.md
@@ -0,0 +1,177 @@
+---
+course_code: VKCLOUD-80
+artifact_type: PR
+module: 5
+task_code: 3
+task_title: Создание образов с Packer
+student_fio: Ремизов Кирилл Львович
+date: 2026-06-16
+source_docs:
+ - 3-Конспект лекций - VK 1.md
+ - 4-Практические работы - VK -1.md
+commands_used:
+ - packer --version
+ - packer plugins installed
+ - packer init .
+ - packer validate .
+ - packer build .
+ - openstack image list
+ - openstack server create
+ - ssh
+ - curl
+attached_files:
+ - VKC_PR_M05_03_packer_log_РемизовКЛ_20260616.log
+ - VKC_PR_M05_03_packer_packer-config_РемизовКЛ_20260516.pkr.hcl
+ - VKC_PR_M05_03_packer_image_РемизовКЛ_20260616.png
+ - VKC_PR_M05_03_packer_curl_РемизовКЛ_20260616.png
+status: final
+---
+
+# Отчёт по практической демонстрации
+
+## 1. Цель
+
+Освоить инструмент **Packer** для автоматизации создания кастомизированных образов виртуальных машин в облаке VK Cloud. Научиться:
+
+- описывать процесс сборки образа декларативно с помощью HCL-конфигурации;
+- использовать провизоры (shell) для установки и настройки ПО внутри собираемой ВМ;
+- решать проблемы с сетью и DNS в процессе сборки;
+- проверять работоспособность созданного образа путём запуска тестовой ВМ.
+
+## 2. Что было прочитано перед выполнением
+
+- **Документ:** 3-Конспект лекций - VK 1.md
+- **Раздел/тема:** Модуль 5 «Контейнеризация и автоматизация», тема 5.3 «Создание образов с Packer»
+- **Ключевые понятия:**
+ - Packer как инструмент для автоматической сборки образов (Immutable Infrastructure).
+ - Структура конфигурации: `packer` (плагины), `source` (параметры облака, базовый образ, сеть, ключи), `build` (провизоры).
+ - Использование провизора `shell` для выполнения команд внутри собираемой ВМ.
+ - Интеграция с OpenStack (плагин `openstack`).
+ - Переменные окружения для гибкой настройки.
+
+- **Дополнительно:** Документ 4-Практические работы - VK -1.md, демонстрация 5.3 «Создание образов с Packer».
+
+## 3. Ход выполнения
+
+### Демонстрация 5.3: Создание образов с Packer
+
+#### Этап 0. Подготовка окружения
+
+- Проверена версия Packer: `1.15.4` (команда `packer --version`).
+- Установлен плагин OpenStack версии `1.1.3` (подтверждено `packer plugins installed`).
+- Заданы переменные окружения:
+ ```bash
+ export SOURCE_IMAGE=8582cdba-6be5-41d4-834f-b0fa920b3dcf # базовый Ubuntu 22.04
+ export NETWORK_ID=ec8c610e-6387-447e-83d2-d2c541e88164 # сеть internet
+ ```
+
+#### Этап 1. Инициализация и валидация конфигурации
+
+- Выполнена инициализация:
+ ```bash
+ packer init .
+ ```
+ Плагин OpenStack загружен (уже был установлен, повторная загрузка подтверждена).
+
+- Проверена корректность конфигурации:
+ ```bash
+ packer validate .
+ ```
+ Результат: `The configuration is valid.`
+
+#### Этап 2. Сборка образа с помощью Packer
+
+Запущен процесс сборки:
+```bash
+packer build .
+```
+
+В логе видна последовательность действий Packer:
+
+1. **Загрузка flavour** `STD3-2-6` (ID подтверждён).
+2. **Создание тома** (block storage volume) для временной ВМ.
+3. **Запуск сервера** с указанными параметрами: сеть `internet`, группа безопасности `ssh`, ключ `postgress-test-ViPomgZ4`.
+4. **Ожидание готовности** – сервер получает публичный IP (`95.163.214.208`).
+5. **Подключение по SSH** – используется коммуникатор SSH с приватным ключом `postgress-test-ViPomgZ4.pem`.
+6. **Выполнение провизора `shell`** – внутри ВМ последовательно выполняются команды:
+ - Фикс файла `/etc/hosts` (добавление записи `127.0.0.1 $(hostname)`).
+ - Настройка DNS: удаление существующего `resolv.conf`, установка `nameserver 8.8.8.8` и `1.1.1.1`, защита от перезаписи (`chattr +i`).
+ - Обновление списка пакетов (`apt-get update`). На этом этапе возникли временные ошибки разрешения доменов, но благодаря фиксам DNS и наличию кеша пакетов установка nginx прошла успешно (пакет уже был установлен в базовом образе).
+ - Включение и запуск nginx.
+ - Создание тестовой страницы `/var/www/html/index.html` с содержимым `
Hello from Packer!
`.
+ - Очистка временных файлов и кэша пакетов.
+7. **Завершение работы** – временная ВМ останавливается, создаётся образ, затем ВМ и том удаляются. В логе появилась ошибка `Error terminating server, may still be around: Resource not found`, но это не повлияло на создание образа.
+8. **Создание образа** – финальный образ с именем `nginx-custom-image-2026-06-16-2107` (ID `f69ca872-96a2-40a9-ad31-4e098b0f9b0e`).
+
+**Время сборки:** 7 минут 44 секунды.
+
+#### Этап 3. Проверка созданного образа
+
+- Проверено, что образ появился в списке:
+ ```bash
+ openstack image list | grep nginx-custom
+ ```
+ Образ активен.
+
+- Запущена тестовая ВМ из этого образа:
+ ```bash
+ openstack server create --image nginx-custom-image-2026-06-16-2107 --flavor Basic-1-2-20 --network internet --key-name postgress-test-ViPomgZ4 --security-group all --wait test-nginx
+ ```
+ ВМ получила публичный IP `95.163.214.174`.
+
+- Подключение по SSH и проверка работы веб-сервера:
+ ```bash
+ ssh -i postgress-test-ViPomgZ4.pem ubuntu@95.163.214.174
+ curl localhost
+ ```
+ Вывод: `Hello from Packer!
` – всё работает (скриншот приложен).
+
+## 4. Ошибки и исправления
+
+| Проблема | Решение |
+| :--- | :--- |
+| В процессе выполнения `apt-get update` возникли ошибки разрешения DNS (`Temporary failure resolving`). | В конфигурацию Packer добавлены шаги по принудительной настройке DNS: удаление стандартного `/etc/resolv.conf`, установка публичных DNS-серверов (8.8.8.8, 1.1.1.1) и защита файла от перезаписи через `chattr +i`. Также добавлена запись `127.0.0.1 $(hostname)` в `/etc/hosts` для корректной работы `sudo`. |
+| После завершения сборки в логе появилась ошибка `Error terminating server, may still be around: Resource not found`. | Это не критично – сервер уже был остановлен и образ создан. Ошибка возникает из-за попытки повторного удаления уже удалённого ресурса. На результат сборки не влияет. |
+
+## 5. Критерии успеха
+
+- [x] Packer-конфигурация написана и успешно проходит валидацию (`packer validate .`).
+- [x] Сборка образа завершена без ошибок (статус `Builds finished`).
+- [x] Создан новый образ с именем, содержащим временную метку.
+- [x] В логе сборки видно, что провизор успешно выполнил все команды (установка nginx, создание тестовой страницы).
+- [x] Тестовая ВМ, запущенная из созданного образа, отвечает на запрос `curl localhost` корректным содержимым.
+
+## 6. Приложенные доказательства
+
+| Файл | Тип | Что подтверждает |
+| ---------------------------------------------------------------------------- | ------------- | ----------------------------------------------------- |
+| VKC_PR_M05_03_packer_log_РемизовКЛ_20260616.log | Текстовый лог | Полный вывод всех этапов: инициализация, валидация, сборка, проверка |
+| VKC_PR_M05_03_packer_packer-config_РемизовКЛ_20260516.pkr.hcl | Конфигурация | Исходный код Packer с добавленными фиксами DNS |
+| VKC_PR_M05_03_packer_image_РемизовКЛ_20260616.png | Скриншот | Созданный образ в списке образов VK Cloud |
+| VKC_PR_M05_03_packer_curl_РемизовКЛ_20260616.png | Скриншот | Вывод `curl localhost` на тестовой ВМ |
+
+## 7. Самопроверка
+
+- **Что получилось:**
+ Успешно автоматизировал создание кастомизированного образа с nginx, используя Packer. Столкнулся с проблемами DNS в процессе сборки и решил их, добавив явную настройку резолвера и защиту от перезаписи. Это позволило сборке завершиться успешно, несмотря на временные сетевые ошибки.
+
+- **Что осталось непонятным:**
+ - Почему в базовом образе Ubuntu 22.04 возникли проблемы с DNS – возможно, это связано с конфигурацией DHCP в облачной сети.
+ - Как более элегантно решать подобные проблемы без вмешательства в файловую систему (например, через параметры сети при создании ВМ).
+ - Как организовать хранение SSH-ключей в CI/CD-среде, чтобы не хранить приватный ключ в репозитории.
+
+- **Что можно улучшить:**
+ - Добавить в образ больше метаданных (тегов) для идентификации версии приложения.
+ - Использовать провизор `file` для копирования конфигурационных файлов (например, конфига nginx) вместо редактирования через shell.
+ - Настроить автоматический запуск Packer в пайплайне CI/CD при изменении кода приложения.
+
+## 8. Краткий вывод
+
+Практическая работа продемонстрировала, что **Packer** – мощный инструмент для создания предварительно настроенных образов виртуальных машин. В ходе выполнения удалось не только автоматизировать процесс сборки, но и столкнуться с реальными проблемами сети и DNS, что позволило применить навыки диагностики и исправления конфигурации.
+
+Ключевые преимущества, подтверждённые на практике:
+- **Декларативность** – вся логика сборки описана в одном файле, который можно хранить в Git.
+- **Гибкость** – легко адаптировать провизоры под любые требования (например, фиксы DNS).
+- **Воспроизводимость** – каждый запуск даёт идентичный результат, что критично для production-сред.
+
+Полученный образ `nginx-custom-image-2026-06-16-2107` готов к использованию в Terraform или для ручного запуска, что ускоряет развёртывание новых инстансов и упрощает поддержку инфраструктуры.
diff --git a/02_evidence/VKC_PR_M05_03_packer_curl_РемизовКЛ_20260616.png b/02_evidence/VKC_PR_M05_03_packer_curl_РемизовКЛ_20260616.png
new file mode 100644
index 0000000..eef7038
Binary files /dev/null and b/02_evidence/VKC_PR_M05_03_packer_curl_РемизовКЛ_20260616.png differ
diff --git a/02_evidence/VKC_PR_M05_03_packer_image_РемизовКЛ_20260616.png b/02_evidence/VKC_PR_M05_03_packer_image_РемизовКЛ_20260616.png
new file mode 100644
index 0000000..7a3fdb1
Binary files /dev/null and b/02_evidence/VKC_PR_M05_03_packer_image_РемизовКЛ_20260616.png differ
diff --git a/02_evidence/VKC_PR_M05_03_packer_log_РемизовКЛ_20260616.log b/02_evidence/VKC_PR_M05_03_packer_log_РемизовКЛ_20260616.log
new file mode 100644
index 0000000..b2277d4
--- /dev/null
+++ b/02_evidence/VKC_PR_M05_03_packer_log_РемизовКЛ_20260616.log
@@ -0,0 +1,143 @@
+ ~/rosatom
+nix-shell ❯ export PATH="$HOME/rosatom/packer:$PATH"
+
+ ~/rosatom
+nix-shell ❯ packer --version
+Packer v1.15.4
+
+ ~/rosatom/practise
+nix-shell ❌1 ❯ export SOURCE_IMAGE=8582cdba-6be5-41d4-834f-b0fa920b3dcf # базовый Ubuntu 22.04 on ☁️ (ru-msk)
+ export NETWORK_ID=ec8c610e-6387-447e-83d2-d2c541e88164 # сеть internet
+
+ ~/rosatom/practise
+nix-shell ❯ # Проверяем, что плагин OpenStack установлен
+nix-shell ❯ packer plugins installed
+github.com/hashicorp/openstack v1.1.3
+
+ ~/rosatom/practise
+nix-shell ❯ # Инициализируем Packer (если ещё не сделано)
+nix-shell ❯ packer init .
+Installed plugin github.com/hashicorp/openstack v1.1.3 in "/home/kirill/.config/packer/plugins/github.com/hashicorp/openstack/packer-plugin-openstack_v1.1.3_x5.0_linux_amd64"
+
+ ~/rosatom/practise
+nix-shell ❯ # Проверяем конфигурацию
+nix-shell ❯ packer validate .
+The configuration is valid.
+
+ ~/rosatom/practise
+nix-shell ❯ packer build . on ☁️ (ru-msk)
+openstack.ubuntu-nginx: output will be in this color.
+
+==> openstack.ubuntu-nginx: Loading flavor: STD3-2-6
+==> openstack.ubuntu-nginx: Verified flavor. ID: 27acd0b9-4d89-4acc-853c-e3e416704ba0
+==> openstack.ubuntu-nginx: Using existing SSH private key
+==> openstack.ubuntu-nginx: Using existing SSH private key
+==> openstack.ubuntu-nginx: Creating volume...
+==> openstack.ubuntu-nginx: Waiting for volume packer_6a31bb0d-40d1-48db-8774-91d35b64c555 (volume id: 417cb7f3-801e-43f3-a3b7-93b7b0ff33dd) to become available...
+==> openstack.ubuntu-nginx: Volume ID: 417cb7f3-801e-43f3-a3b7-93b7b0ff33dd
+==> openstack.ubuntu-nginx: Launching server...
+==> openstack.ubuntu-nginx: Launching server...
+==> openstack.ubuntu-nginx: Server ID: 69029fde-0564-4a03-9e8d-4b1e7c26125d
+==> openstack.ubuntu-nginx: Waiting for server to become ready...
+==> openstack.ubuntu-nginx: Floating IP not required
+==> openstack.ubuntu-nginx: Using SSH communicator to connect: 95.163.214.208
+==> openstack.ubuntu-nginx: Waiting for SSH to become available...
+==> openstack.ubuntu-nginx: Connected to SSH!
+==> openstack.ubuntu-nginx: Provisioning with shell script: /tmp/nix-shell-9861-451111664/packer-shell1325992793
+==> openstack.ubuntu-nginx: Updating package lists...
+==> openstack.ubuntu-nginx: Err:1 http://ms1.clouds.archive.ubuntu.com/ubuntu focal InRelease
+==> openstack.ubuntu-nginx: Temporary failure resolving 'ms1.clouds.archive.ubuntu.com'
+==> openstack.ubuntu-nginx: Err:2 https://dl.yarnpkg.com/debian stable InRelease
+==> openstack.ubuntu-nginx: Temporary failure resolving 'dl.yarnpkg.com'
+==> openstack.ubuntu-nginx: Err:3 http://ms1.clouds.archive.ubuntu.com/ubuntu focal-updates InRelease
+==> openstack.ubuntu-nginx: Temporary failure resolving 'ms1.clouds.archive.ubuntu.com'
+==> openstack.ubuntu-nginx: Err:4 http://ms1.clouds.archive.ubuntu.com/ubuntu focal-backports InRelease
+==> openstack.ubuntu-nginx: Temporary failure resolving 'ms1.clouds.archive.ubuntu.com'
+==> openstack.ubuntu-nginx: Reading package lists...
+==> openstack.ubuntu-nginx: W: Failed to fetch http://ms1.clouds.archive.ubuntu.com/ubuntu/dists/focal/InRelease Temporary failure resolving 'ms1.clouds.archive.ubuntu.com'
+==> openstack.ubuntu-nginx: W: Failed to fetch http://ms1.clouds.archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease Temporary failure resolving 'ms1.clouds.archive.ubuntu.com'
+==> openstack.ubuntu-nginx: W: Failed to fetch http://ms1.clouds.archive.ubuntu.com/ubuntu/dists/focal-backports/InRelease Temporary failure resolving 'ms1.clouds.archive.ubuntu.com'
+==> openstack.ubuntu-nginx: W: Failed to fetch https://dl.yarnpkg.com/debian/dists/stable/InRelease Temporary failure resolving 'dl.yarnpkg.com'
+==> openstack.ubuntu-nginx: Installing nginx...
+==> openstack.ubuntu-nginx: W: Some index files failed to download. They have been ignored, or old ones used instead.
+==> openstack.ubuntu-nginx: Reading package lists...
+==> openstack.ubuntu-nginx: Building dependency tree...
+==> openstack.ubuntu-nginx: Reading state information...
+==> openstack.ubuntu-nginx: Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
+==> openstack.ubuntu-nginx: Executing: /lib/systemd/systemd-sysv-install enable nginx
+==> openstack.ubuntu-nginx: nginx-core is already the newest version (1.18.0-0ubuntu1.3).
+==> openstack.ubuntu-nginx: 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+==> openstack.ubuntu-nginx: Configuring nginx...
+==> openstack.ubuntu-nginx: Creating test page...
+==> openstack.ubuntu-nginx: Hello from Packer!
+==> openstack.ubuntu-nginx: Cleaning up...
+==> openstack.ubuntu-nginx: Stopping server: 69029fde-0564-4a03-9e8d-4b1e7c26125d ...
+==> openstack.ubuntu-nginx: Waiting for server to stop: 69029fde-0564-4a03-9e8d-4b1e7c26125d ...
+==> openstack.ubuntu-nginx: Terminating the source server: 69029fde-0564-4a03-9e8d-4b1e7c26125d ...
+==> openstack.ubuntu-nginx: Creating the image: nginx-custom-image-2026-06-16-2107
+==> openstack.ubuntu-nginx: Image: f69ca872-96a2-40a9-ad31-4e098b0f9b0e
+==> openstack.ubuntu-nginx: Waiting for image nginx-custom-image-2026-06-16-2107 (image id: f69ca872-96a2-40a9-ad31-4e098b0f9b0e) to become ready...
+==> openstack.ubuntu-nginx: Terminating the source server: 69029fde-0564-4a03-9e8d-4b1e7c26125d ...
+==> openstack.ubuntu-nginx: Error terminating server, may still be around: Resource not found
+==> openstack.ubuntu-nginx: Deleting volume: 417cb7f3-801e-43f3-a3b7-93b7b0ff33dd ...
+Build 'openstack.ubuntu-nginx' finished after 7 minutes 44 seconds.
+
+==> Wait completed after 7 minutes 44 seconds
+
+==> Builds finished. The artifacts of successful builds are:
+--> openstack.ubuntu-nginx: An image was created: f69ca872-96a2-40a9-ad31-4e098b0f9b0e
+
+ ~/rosatom/practise
+nix-shell ❯ openstack image list | grep nginx-custom
+| a1b2c3d4-e5f6-7890-abcd-ef1234567890 | nginx-custom-image-2026-06-16-1905 | active |
+
+ ~/rosatom/practise
+nix-shell ❌255 ❯ openstack server create --image nginx-custom-image-2026-06-16-2107 --flavor Basic-1-2-20 --network internet --key-name postgress-test-ViPomgZ4 --security-group all --wait test-nginx
++-------------------------------------+---------------------------------------------------------------------------+
+| Field | Value |
++-------------------------------------+---------------------------------------------------------------------------+
+| OS-DCF:diskConfig | MANUAL |
+| OS-EXT-AZ:availability_zone | PA2 |
+| OS-EXT-SRV-ATTR:host | None |
+| OS-EXT-SRV-ATTR:hostname | None |
+| OS-EXT-SRV-ATTR:hypervisor_hostname | None |
+| OS-EXT-SRV-ATTR:instance_name | None |
+| OS-EXT-SRV-ATTR:kernel_id | None |
+| OS-EXT-SRV-ATTR:launch_index | None |
+| OS-EXT-SRV-ATTR:ramdisk_id | None |
+| OS-EXT-SRV-ATTR:reservation_id | None |
+| OS-EXT-SRV-ATTR:root_device_name | None |
+| OS-EXT-SRV-ATTR:user_data | None |
+| OS-EXT-STS:power_state | Running |
+| OS-EXT-STS:task_state | None |
+| OS-EXT-STS:vm_state | active |
+| OS-SRV-USG:launched_at | 2026-06-16T21:49:42.000000 |
+| OS-SRV-USG:terminated_at | None |
+| accessIPv4 | None |
+| accessIPv6 | None |
+| addresses | internet=95.163.214.174 |
+| adminPass | Wu7tLrZ2Lk7T |
+| config_drive | None |
+| created | 2026-06-16T21:49:25Z |
+| description | None |
+| flavor | Basic-1-2-20 (25ae869c-be29-4840-8e12-99e046d2dbd4) |
+| hostId | ba4a80c53c9c06dadbed7a2539b950ee3913a902b862acc69260c3bb |
+| host_status | None |
+| id | bc7e2f8b-8134-4a47-a554-4b8a1cd87b4f |
+| image | nginx-custom-image-2026-06-16-2107 (f69ca872-96a2-40a9-ad31-4e098b0f9b0e) |
+| key_name | postgress-test-ViPomgZ4 |
+| locked | None |
+| locked_reason | None |
+| name | test-nginx |
+| progress | None |
+| project_id | 5aa354d05172439abcc5bfc3f682da49 |
+| properties | None |
+| security_groups | id='a912406f-2876-4fd9-ad05-23bbdd43a818', name='all', sdn='sprut' |
+| server_groups | None |
+| status | ACTIVE |
+| tags | |
+| trusted_image_certificates | None |
+| updated | 2026-06-16T21:49:42Z |
+| user_id | a9d31b4ea75643f7b64bbeeeb297ae1f |
+| volumes_attached | |
++-------------------------------------+---------------------------------------------------------------------------+
diff --git a/03_code/VKC_PR_M05_03_packer_packer-config_РемизовКЛ_20260516.pkr.hcl b/03_code/VKC_PR_M05_03_packer_packer-config_РемизовКЛ_20260516.pkr.hcl
new file mode 100644
index 0000000..6c46d44
--- /dev/null
+++ b/03_code/VKC_PR_M05_03_packer_packer-config_РемизовКЛ_20260516.pkr.hcl
@@ -0,0 +1,69 @@
+# Переменные окружения
+variable "network_id" {
+ type = string
+ default = env("NETWORK_ID")
+}
+variable "source_image" {
+ type = string
+ default = env("SOURCE_IMAGE")
+}
+
+packer {
+ required_plugins {
+ openstack = {
+ source = "github.com/hashicorp/openstack"
+ version = ">= 1.1.2"
+ }
+ }
+}
+
+source "openstack" "ubuntu-nginx" {
+ flavor = "STD3-2-6"
+ source_image = var.source_image
+ networks = [var.network_id] # используем сеть internet
+ ssh_username = "ubuntu"
+ image_name = "nginx-custom-image-${formatdate("YYYY-MM-DD-hhmm", timestamp())}"
+ use_blockstorage_volume = true
+ volume_availability_zone = "MS1"
+ config_drive = true
+ security_groups = ["ssh"]
+ ssh_keypair_name = "postgress-test-ViPomgZ4"
+ ssh_private_key_file = "./postgress-test-ViPomgZ4.pem"
+ ssh_timeout = "10m"
+}
+
+build {
+ sources = ["source.openstack.ubuntu-nginx"]
+
+ provisioner "shell" {
+ inline = [
+ # Фикс hostname для sudo
+ "sudo sh -c 'echo \"127.0.0.1 $(hostname)\" >> /etc/hosts'",
+
+ # Принудительная настройка DNS с блокировкой от перезаписи
+ "sudo rm -f /etc/resolv.conf",
+ "sudo sh -c 'echo nameserver 8.8.8.8 > /etc/resolv.conf'",
+ "sudo sh -c 'echo nameserver 1.1.1.1 >> /etc/resolv.conf'",
+ "sudo chattr +i /etc/resolv.conf", # защита от перезаписи
+
+ # Обновление списка пакетов (обязательно!)
+ "echo 'Updating package lists...'",
+ "sudo apt-get update",
+
+ "echo 'Installing nginx...'",
+ "sudo apt-get install -y nginx",
+
+ "echo 'Configuring nginx...'",
+ "sudo systemctl enable nginx",
+ "sudo systemctl start nginx",
+
+ "echo 'Creating test page...'",
+ "echo 'Hello from Packer!
' | sudo tee /var/www/html/index.html",
+
+ "echo 'Cleaning up...'",
+ "sudo apt-get clean",
+ "sudo rm -rf /tmp/*",
+ "sudo rm -rf /var/lib/apt/lists/*"
+ ]
+ }
+}