Скидки до 20% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Дневник студента

Packer - необходимый минимум

Время чтения статьи ~1 минута
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Packer - необходимый минимум главное изображение

Packer - собираем нужный образ в любом месте (локально, в облаке, vagrant).

Суть Packer - подготовить такой образ, на котором есть необходимый минимум, в основном это ОС и рантайм, но так же можно добавлять любые операции, включая git clone..., bash-скрипты, ansible-роли и уже на этом образе разворачивать приложения.

Базовый образ должен содержать:

  • Настройки ОС
  • Пакеты, с низкой частотой изменения (Nodejs, python, ruby, mongodb...)
  • Логи, мониторинг, агенты систем управления конфигурацией ### Подход - Immutable Infrastructure
  • Образ VM - артефакт для деплоя
  • Не изменяем запущенные инстансы
  • Любые изменения: собираем новый образ
  • Старый инстанс заменяем на новый ### Packer

Download

$ packer -v

Для управления сторонней инфраструктурой необходимо в ней авторизоваться

например Google cloud:

$ gcloud auth application-default login

Переменные описываются в файле variables.json

Gist с примером файла переменных

Конфигурация образа описывается в json-файле

Содержит разделы:

  • builders (настройки сборки, где - облако или локально, что - имя образа и базовый образ ОС, как - ssh)
  • variables (переменные)
  • provisioners (различные действия по установке или настройке на ОС)

Gist на пример конфига с shell

Gist на примере конфига с ansible

запуск с файлом переменных:

$ packer build -var 'project_id=aaaa-123' packer_example.json
$ packer build -var-file variables.json packer_example.json

валидация

$ packer validate -var 'project_id=aaaa-123' packer_example.json
Template validation failed. Errors are shown below.
Errors validating build 'googlecompute'. 1 error(s) occurred:
* a source_image or source_image_family must be specified

Inspect

$ packer inspect packer_example.json
Required variables:
  project_id
Optional variables and their defaults:
  machine_type = f1-micro
  source_image = ubuntu-1804-bionic-v20181003
  zone         = europe-wes1-b
Builders:
  googlecompute
Provisioners:
  shell

Build

packer build packer_example.json
Аватар пользователя Михаил Бондарев
Михаил Бондарев 15 марта 2019
0
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря