chasinglogic.podman
Podman 的 Ansible 角色
使用 Podman 管理服务和容器
使用方法
默认情况下,此角色将根据 Podman 文档 安装 Podman,并执行任何其他必需的设置,以使安装在支持的平台上正常运行。
重要提示: 这意味着对于 Ubuntu / Debian 系统,在添加仓库后,它将执行 apt upgrade
,该升级仅在添加或更改仓库时运行,不会在后续运行中执行。
另外,它可以将 Podman 容器部署并配置为 SystemD 服务。
示例剧本
- hosts: all
roles:
- role: podman
自动服务部署
Podman 容器设置为服务时,相对比较统一。因此,此角色提供了一个变量,可以用来将容器部署并配置为 SystemD 服务。更复杂的用例,如将多个容器配置为一个 pod,目前尚不支持。要在您的主机上使用此功能,请定义一个名为 podman_services
的变量,其结构如下:
podman_services:
## Podman 变量
#
# 必需:要下载的镜像名称
- image_name: nginx
# 可选:要下载的标签。通常对应于版本,默认为 'latest'
image_tag: mainline
# 可选:将添加到 SystemD 服务文件的描述
description: Web host
# 可选:要发布的端口列表。格式与 podman CLI 相同,即:主机端口:容器端口。这直接传递给 '--publish' 标志,因此 IP 绑定也可以使用(例如 '127.0.0.1:8080:80')。默认为无。
publish:
- '80:80'
# 可选:作为 --network 标志传递的网络名称字符串。
# 如果网络不存在,将会创建。可用于允许多个服务相互连接。有关注意事项,请参见网络部分。
network: somenetwork
# 可选:要挂载的卷列表。格式与 podman CLI 的主机目录:容器目录相同,并且如下面所示,允许使用挂载选项。
volumes:
- '/tmp:/usr/share/nginx/html:ro'
# 可选:为 Podman 的 hostname 标志定义主机名。设置容器的主机名,默认为无。
hostname: chasinglogic.io
# 可选:要挂载的秘密列表。秘密不会自动创建。使用时唯一必需的字段是名称。其他值有 Podman 文档中指定的默认值
# https://docs.podman.io/en/v4.6.0/markdown/options/secret.html
secrets:
- name: secret
type: mount
target: /run/secrets/secret
uid: 0
gid: 0
mode: 0
# 可选:要添加到容器的环境变量列表。默认值为无。
env_vars:
- SOME_VAR=SOME_VALUE
# 可选:将作为字符串的任意参数列表添加在镜像名称之前。
flags:
- '--cap-add=NET_ADMIN'
## SystemD 变量
#
# 可选:为此服务定义重启策略。默认值为 always
restart: always
# 可选:定义此服务重启之间等待的时间(秒)。默认值为 30
restart_sec: 30
# 可选:为 SystemD 服务定义实际使用的名称。{{ 默认为 image_name + '-podman' }}
service_name: nginx
# 可选:定义该 SystemD 服务必须启动后才能启动的目标/服务。这是一个 YAML 列表而不是字符串。
after:
- network.target
# 可选:定义启动此 SystemD 服务的超时时间。有效值请参见 'man systemd.service'。默认值为5分钟。
timeout_start_sec: 5m
# 可选:为 SystemD 服务定义安装部分。目前仅支持 wanted_by。有关此部分的描述,请参见 'man systemd.unit'。默认值为无,绝大多数用户不需要此项。
install:
wanted_by:
- multi-user.target
# 可选:为服务文件定义用户和组。默认值不指定,通常等于 root。
user: root
group: root
网络设置
目前,Ansible 并未提供类似于 docker_network
的 podman 网络模块。如果您在容器上使用了网络选项,则需要确保在此角色运行之前,网络已存在。在将来,当 podman 网络支持添加到 Ansible 时,此角色将确保其创建。
开发
在开发时,最好像这样使用 converge 和 verify 阶段:
make converge verify