ansible_bender

Ansible Роль: ansible_bender

Сборка Гитхаб тег (последний по дате) Лицензия

Вас утомляет создание контейнеров с помощью Dockerfiles?

Эта роль устанавливает ansible-bender, инструмент, который создает контейнеры, используя Ansible playbooks, и превращает их в образы контейнеров.

С ansible-bender вам больше не нужно строить и настраивать контейнеры иначе, чем традиционные виртуальные машины или физические системы. Теперь вы можете использовать мощь Ansible и повторно использовать ваше существующее содержание Ansible для вашей контейнеризованной экосистемы. Используйте шаблоны, копируйте файлы, добавляйте зашифрованные данные, обрабатывайте ошибки, добавляйте условия и многое другое. Все, что привносит Ansible в организации вашей инфраструктуры, теперь может быть применено к процессу создания образа.

Поддерживаемые дистрибутивы Linux для этой роли:

  • Alpine Linux 3.14,
  • Alpine Linux 3.15,
  • Alpine Linux 3.16,
  • Alpine Linux 3.17,
  • Alpine Linux 3.18,
  • Alpine Linux 3.19,
  • Enterprise Linux 8,
  • Enterprise Linux 9,
  • Debian 11 (Bullseye),
  • Debian 12 (Bookworm),
  • Linux Mint 20 (Ulyana),
  • Ubuntu 20.04 LTS (Focal Fossa),
  • Ubuntu 22.04 LTS (Jammy Jellyfish).

ПРИМЕЧАНИЕ

Режим без корневого доступа для Podman требует установки программы newuidmap. Enterprise Linux 7 (RHEL 7 / CentOS 7) поддерживает это только с версии 7.7.


Требования

Для работы ansible-bender требуется несколько бинарных файлов на вашей хост-системе:

  • Buildah
  • Podman
  • Python 3.6 или позднее (Python 3.5 или более ранние версии не поддерживаются и, как известно, не работают)
  • Ansible (Ansible должен быть собран с поддержкой Python 3)

Все требования устанавливаются с этой ролью.

Переменные роли

Список доступных переменных со значениями по умолчанию приведен ниже (см. defaults/main.yml):


# зависимости для ansible-bender (такие как buildah, podman и python3.6 или выше)
ab_dependencies:
  - buildah
  - podman
  - python3
  - python3-pip
  - python3-setuptools
  - python3-software-properties
  - python3-virtualenv
  - procps
  - runc
  - slirp4netns

# состояние пакета для зависимостей: (present) | latest 
ab_dependencies_package_state: present

# Пакеты, которые устанавливаются с помощью установщика Python3 pip3.
ab_python_packges:
  - wheel
  - ansible
  - ansible-bender

# состояние пакета для python пакетов: (present) | latest
ab_python_packge_state: present

# список реестров контейнеров, разделенных запятыми
ab_container_search_registry: "'docker.io', 'registry.fedoraproject.org', 'quay.io', 'registry.access.redhat.com', 'registry.centos.org'"

# список пользователей, которые могут использовать режим без корневого доступа:
ab_users: []

Зависимости

Нет.

Пример Playbook

---
# файл: roles/ansible-bender/tests/test.yml

- hosts: all
  vars:
    ab_users:
      - ваше_имя_пользователя
  roles:
    - { role: coglinev3.ansible_bender }

Пример использования ansible-bender

Создание образа

Если вы хотите протестировать ansible-bender, сначала вам нужен Ansible playbook. Вы можете создать шаблон playbook с помощью:

ansible-bender init

Теперь откройте файл playbook.yml, измените переменную словаря ansible_bender и добавьте несколько задач. Приведенный ниже простой пример playbook создает контейнер nginx на основе Alpine Linux.

---
- name: Контейнеризованная версия nginx
  hosts: all
  vars:
    # конфигурация, специфичная для ansible-bender
    ansible_bender:
      # ansible-bender нуждается в образе с предустановленным Python 3 для работы
      base_image: python:3-alpine
      target_image:
        # команда, которая будет выполнена по умолчанию при обращении к контейнеру
        cmd: "nginx -g \"daemon off;\""
        name: bender-nginx
        ports: ['80', '443']
        working_dir: /var/www/localhost/htdocs
        labels:
          build-by: "{{ ansible_user }}"
      working_container:
        volumes:
        # смонтируйте этот git репозиторий в рабочий контейнер по адресу /src
        - "{{ playbook_dir }}:/src:Z"
  tasks:
  - name: установить зависимости, необходимые для работы проекта bender-nginx
    apk:
      name: nginx
      state: present
  - name: Убедиться, что директория /run/nginx существует
    file:
      path: /run/nginx
      state: directory
      mode: '0750'
      owner: nginx
      group: nginx

Теперь вы можете создать пример образа с помощью:

ansible-bender build ./playbook.yml

Запуск контейнера

После успешного создания образа вы можете запустить новый контейнер с помощью podman.

podman run -d -p 8080:80 bender-nginx

Наконец, вы можете использовать curl, чтобы проверить, работает ли контейнер nginx правильно.

curl http://127.0.0.1:8080/ 

Если вы получите ответ "404 Not Found", значит, nginx работает хорошо. Nginx сообщает вам, что запрашиваемая страница не найдена.

Версия

Выпуск: 1.5.0

Лицензия

BSD

Информация об авторе

Авторское право © 2024 Cogline.v3.

О проекте

Installs ansible-bender, a tool which bends containers using Ansible playbooks and turns them into container images.

Установить
ansible-galaxy install coglinev3/ansible-role-ansible_bender
Лицензия
bsd-3-clause
Загрузки
5314
Владелец