coglinev3.ansible_bender

Ansible 角色: ansible_bender

构建 最新版本 许可证

你是否厌倦了使用 Dockerfile 构建容器?

这个角色安装了 ansible-bender,一个使用 Ansible playbook 来构建容器的工具,并将其转化为容器镜像。

使用 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 的 无 root 模式 需要安装 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'"

# 可以使用无 root 模式的用户列表:
ab_users: []

依赖项

无。

示例 Playbook

---
# 文件: roles/ansible-bender/tests/test.yml

- hosts: all
  vars:
    ab_users:
      - your_username
  roles:
    - { role: coglinev3.ansible_bender }

使用 ansible-bender 的示例

创建镜像

如果你想测试 ansible-bender,你首先需要一个 Ansible playbook。你可以使用以下命令创建一个 playbook 模板:

ansible-bender init

现在打开 playbook.yml 文件,修改 ansible_bender 字典变量并添加一些任务。以下简单的示例 playbook 创建一个基于 Alpine Linux 的 nginx 容器。

---
- 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_bender
许可证
bsd-3-clause
下载
6k
拥有者