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