Spec-Zone.ru › OpenTofu 1.9

Использование OpenTofu в качестве образа Docker

OpenTofu доступен в виде образов контейнеров OCI и распространяется через общедоступный реестр GitHub Packages.

Предупреждение!

Не используйте образ контейнера OCI в качестве базового образа. Это не поддерживается и перестанет работать в OpenTofu 1.10. Вместо этого следуйте приведённым ниже инструкциям по созданию собственного образа OpenTofu.

Версии​

Образы размещены в виде пакетов в организации OpenTofu на GitHub. Список доступных версий см. здесь.

Мультиплатформенные образы доступны с помощью следующих тегов:

  • latest: последняя доступная версия OpenTofu,
  • Major: конкретная основная версия OpenTofu,
  • Major.Minor: конкретная младшая версия OpenTofu,
  • Major.Minor.Patch: конкретная версия исправления OpenTofu,

Кроме того, начиная с OpenTofu версии 1.9.1 мы предоставляем следующие минимальные теги для создания пользовательского образа:

  • minimal: минимальный образ, содержащий только исполняемый файл OpenTofu в /usr/local/bin/tofu
  • Major-minimal: минимальный образ конкретной основной версии OpenTofu,
  • Major.Minor-minimal: минимальный образ конкретной младшей версии OpenTofu,
  • Major.Minor.Patch-minimal: минимальный образ конкретной версии исправления OpenTofu.

Чтобы загрузить образы для конкретной платформы (amd64, arm, arm64, 386), используйте:

  • <Version>-<Platform>: версия OpenTofu для конкретной платформы.
  • <Version>-minimal-<Platform>: минимальная версия OpenTofu для конкретной платформы.

Использование​

Примечание

Если вы столкнулись с ограничением частоты запросов GitHub, создайте персональный токен доступа и войдите в реестр.

Примечание

В приведённых ниже примерах в папке, из которой вы запускаете команду docker, должен находиться как минимум один файл .tf.

Чтобы загрузить образ из реестра GitHub Packages:

Блок кода
docker pull ghcr.io/opentofu/opentofu:latest

Чтобы запустить OpenTofu в контейнере Docker:

Блок кода
# Init providers plugins
docker run \
    --workdir=/srv/workspace \
    --mount type=bind,source=.,target=/srv/workspace \
    ghcr.io/opentofu/opentofu:latest \
    init

# Creating plan file
docker run \
    --workdir=/srv/workspace \
    --mount type=bind,source=.,target=/srv/workspace \
    ghcr.io/opentofu/opentofu:latest \
    plan -out=main.plan

# Applying plan file
docker run \
    --workdir=/srv/workspace \
    --mount type=bind,source=.,target=/srv/workspace \
    ghcr.io/opentofu/opentofu:latest \
    apply "/srv/workspace/main.plan"

Создание собственного образа​

Образ OCI, опубликованный OpenTofu, предназначен для использования в качестве базового инструмента командной строки. Если вам нужны дополнительные инструменты в образе или вы хотите создавать службы на основе OpenTofu, необходимо создать собственный образ. Это можно сделать двумя способами:

  1. Создать образ на основе минимального образа (ghcr.io/opentofu/opentofu:minimal или аналогичного) и использовать многоэтапную сборку, чтобы скопировать исполняемый файл tofu в свой образ.
  2. Использовать автономный сценарий установки, чтобы установить tofu в образ контейнера.

Способ 1: использование многоэтапной сборки​

Если вы хотите использовать Alpine Linux, ваш Dockerfile/Containerfile может выглядеть так:

Блок кода
FROM ghcr.io/opentofu/opentofu:minimal AS tofu

FROM alpine

COPY --from=tofu /usr/local/bin/tofu /usr/local/bin/tofu

# Your other build instructions
Примечание

Рекомендуем зафиксировать версию на уровне конкретного хеша SHA слоя и обновлять её только при необходимости, чтобы воспользоваться преимуществами проверки целостности.

Способ 2: использование сценария установки​

Шаг 1: получение сценария установки​

OpenTofu публикует сценарии установки для POSIX/Powershell. С их помощью можно безопасно установить OpenTofu в образ контейнера. Следуйте инструкциям по автономной установке, чтобы получить сценарий установки и поместить его рядом с вашим Dockerfile/Containerfile.

Шаг 2: создание этапа установки​

Затем можно создать этап загрузки в файле Dockerfile/Containerfile. Подробнее о многоэтапных сборках читайте в документации Docker.

Блок кода
FROM alpine:3.20 AS tofu

ADD install-opentofu.sh /install-opentofu.sh
RUN chmod +x /install-opentofu.sh
RUN apk add gpg gpg-agent
RUN ./install-opentofu.sh --install-method standalone --install-path / --symlink-path -

Шаг 3: создание собственного образа​

Теперь можно добавить образ ниже этапа установки и скопировать в него исполняемый файл tofu:

Блок кода
FROM alpine:3.20 AS tofu

ADD install-opentofu.sh /install-opentofu.sh
RUN chmod +x /install-opentofu.sh
RUN apk add gpg gpg-agent
RUN ./install-opentofu.sh --install-method standalone --install-path / --symlink-path -

## This is your stage:
FROM ubuntu
COPY --from=tofu /tofu /usr/local/bin/tofu

# Add your commands here

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/intro/install/docker/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API