Рубрики
Uncategorized

INTRO: Hashicorp `Packer`

Введение в упаковщик Hashicorp и то, что я узнал за один день. Теги от автоматизации, Hashicorp, Packer, Devops.

Проблема пространства …

В современном современном процессе разработки приложений приложения имеют много домов. Местные разработки, (Docker) контейнеры, на серверах помещения Linux, возможно, даже Mainframes Unix для производства. Часто разработано приложение с использованием контейнера, затем развернутого в облачный вычислений экземпляра, который «построен как» контейнер. Тогда кто-то где-то должен переместить приложение к производству и убедиться, что он все еще работает правильно. Выпасти эти проблемы до ядра, мы видим, это проблема создания изображений машин, которые соответствуют желаемому состоянию. Контейнер докера? Изображение машины. В помещении Linux Integration Server? Изображение машины. Производственный облачный хозяин? Опять же, машинное изображение. Так же, как мы предполагаем создание соответствующих машин изображений над таким широким ассортиментом в лежащих системах?

Хаши-кто пакет — что-?

Hashicorp Это инструмент для разработки и управления. Самая известная там инфраструктура как код (IAC) инструмент Террафом Отказ Упаковщик является одним из инструментов, доступных из них. Создан специально для облегчения создания изображений машин, Packer является Super легко выучить и имеет очень низкий носитель входа. Контейнер, Minux Machines и даже виртуальные изображения и изображения VMware могут быть созданы с помощью Packer. В одном солидный день, и вы можете издавать изображения машины, как Pro!

Изображение из Бретта Джордана @ Unsplash: https://unsplash.com/@brett_jordan

Кривая обучения

Как указано выше кривой обучения для Упаковщик занимает один солидный день. Помощь упаковщика CLI Command возвращает 6 вариантов. 6! построить , консоль , исправить , проверять , проверить и Версия Отказ Красивая самоуверенность, правда?! Попробуйте с любым другим приложением CLI и прокрутки вверх и вниз становится образ жизни. Переход к файлам конфигурации, они планы текст JSON, даже не HCl, просто JSON. Внутри файлов конфигурации я люблю звонить в три «концепции верхнего уровня»:

  • Строители : Кто строит изображение машины? Подумайте об этом похоже на построить этап в конвейере CI/CD; Но гораздо более универсален. AWS, Docker, GCP, 1 & 1, OpenStack, Oracle, VMware и даже пользовательские сборки. Оформить заказ Полный список, чтобы увидеть на документах Отказ
  • Даватели : Эта часть конфигурации определяет, что используется для установки зависимостей, обновить основную ОС, создавать пользователей, устанавливать разрешения на файл и другие процессы конфигурации внутри изображения.
  • Пост-процессоры (Необязательно): Когда они выполняются после создания изображения машины, могут быть выполнены дополнительные команды. Загрузите изображение для хранения в артефактный репозиторий, повторно упаковывают виртуальную машину от VMware на VirtualBox, запустите отчеты об отчетах сборки и другие действия по почте.

Именно это; Три основных концепция, и один из них не является обязательным!

Примеры

Создайте локальный документ докеров и нажмите на репозиторий изображения Отказ

{
    "builders": [{
        "commit": true,
        "image": "ubuntu:16.04",
        "type": "docker"
    }],
    "provisioners": [
        {
            "type": "shell",
            "inline": [
                "apt-get update -y && apt-get install -y python python-dev"
            ]
        }
    ],
    "post-processors": [
        {
            "repository": "example-ubuntu-16.04-updated",
            "tag": "latest",
            "type": "docker-tag"
        }
    ]
}

В приведенном выше упаковке Packer Packer вытягивает Ubuntu 16.04 Docker Image из Docker Hub через Строители раздел. Сопровождаемый оболочка Provisioner для обновления системы и установить Python; Сейчас он готов к вам приложение Flask или Django! Наконец, последняя часть, Пост-процессор Добавляет тег на изображение и нажимает на ваш репозиторий изображения.

фото чутерснап на Бессмысленно

Создание AWS AMI, обновляя ОС и сохраняя изображение как AMI.

{
    "variables": {
      "aws_access_key": "",
      "aws_secret_key": ""
    },
    "builders": [{
      "type": "amazon-ebs",
      "access_key": "{{user `aws_access_key`}}",
      "secret_key": "{{user `aws_secret_key`}}",
      "region": "us-east-1",
      "source_ami_filter": {
        "filters": {
          "virtualization-type": "hvm",
          "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*",
          "root-device-type": "ebs"
        },
        "owners": ["099720109477"],
        "most_recent": true
      },
      "instance_type": "t2.micro",
      "ssh_username": "ubuntu",
      "ami_name": "packer-aws-ami-{{timestamp}}"
    }],
    "provisioners": [{
        "type": "shell",
        "inline": [
            "sleep 30",
            "sudo apt-get update",
            "apt-get install mysql-server libmysqlclient-dev"
        ]
    }]
  }

В приведенном выше конфигурации мы используем локальные учетные данные AWS для создания изображения на основе Ubuntu 16.04. В разделе импровизеров ОС обновляется, а MySQL-сервер установлен с помощью оболочка проведение. Это все. Теперь у вас есть изображение MySQL Server EC2.

Это всего лишь два простых примера того, что может сделать упаковщик. Представьте его как часть вашего CI/CD-трубопровода! Можно даже построить разные изображения для разных целей с тем же выполнением давления на каждом, одновременно! Параллельные сборки Удивительная продвинутая функция, чтобы посмотреть, как вы копаете в полный набор функций.

Заключение

Все сказанные Упаковщик подходит для хорошей ниши в процессе сборки: создание основного изображения машины. Оттуда проведения, как сценарии Shell, Anisible или PowerShell, поднимаются и выполняют пользовательские определенные команды приложений. Быстро, легко понять, удивительно просто (и повторяемый) способ настроить эти сладкие сладкие Золотые изображения Отказ Сейчас нет причин для базовых изображений устареть не ослабленным.

Так что ты думаешь? Можем ли мы увидеть, какой Packer вписывается в ваш ежедневный цикл сборки, или даже упрощает интенсивный процесс создания изображений? Дайте мне знать свои мысли в комментариях ниже.

Дальнейшее чтение

Оригинал: «https://dev.to/david_j_eddy/intro-hashicorp-packer-la9»