containers.podman.podman_play 模块 – 使用 Podman 运行 Kubernetes YAML 文件

注意

此模块是 containers.podman 集合 (版本 1.16.2) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查是否已安装它,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install containers.podman。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求

要在 playbook 中使用它,请指定: containers.podman.podman_play

概要

  • 该模块读取 Kubernetes YAML 的结构化文件。然后,它将重新创建 YAML 中描述的 Pod 和容器。

要求

以下是执行此模块的主机所需的条件。

  • 主机上安装了 Podman

参数

参数

注释

annotation

别名:annotations

字典

向容器或 Pod 添加注释。

authfile

路径

身份验证文件的路径。默认为 ${XDG_RUNTIME_DIR}/containers/auth.json,通过 podman login 设置。如果在那里找不到授权状态,则会检查 $HOME/.docker/config.json,这是通过 docker login 设置的。注意 - 您还可以通过设置 REGISTRY_AUTH_FILE 环境变量来覆盖身份验证文件的默认路径。export REGISTRY_AUTH_FILE=path

build

布尔值

即使在本地存储中找到镜像,也要构建镜像。

需要存在与要构建的镜像名称匹配的子目录。

选项

  • false

  • true

cert_dir

路径

使用路径下的证书 (*.crt, *.cert, *.key) 连接到注册表。默认证书目录为 /etc/containers/certs.d。(此选项不适用于远程 Podman 客户端)

configmap

列表 / 元素=路径

使用路径下的 Kubernetes configmap YAML 为 Pod 容器内的环境变量值提供来源。注意 - configmap 选项可以多次使用以传递多个 Kubernetes configmap YAML。

context_dir

路径

将路径用作每个镜像的构建上下文目录。需要 build 选项为 true。

debug

布尔值

启用模块的调试。

选项

  • false

  • true

executable

字符串

要运行的可执行文件的名称,默认为“podman”

默认值: "podman"

kube_file

路径

包含 Pod YAML 配置文件的路径。

kube_file_content

字符串

kube 文件的内容。

log_driver

字符串

为所有创建的容器设置日志驱动程序。

log_level

字符串

设置 podman 调用的日志级别。高于指定级别(“debug”|“info”|“warn”|“error”|“fatal”|“panic”)的日志消息(默认为“error”)

选项

  • "debug"

  • "info"

  • "warn"

  • "error"

  • "fatal"

  • "panic"

log_opt

别名:log_options

字典

日志驱动程序特定选项。设置自定义日志记录配置。

max_size

字符串

指定日志文件的最大大小(例如 10mb)。

path

字符串

指定日志文件的路径(例如 /var/log/container/mycontainer.json)。

tag

字符串

为容器指定自定义日志标签。此选项目前仅受 Podman 中的 journald 日志驱动程序支持。

network

列表 / 元素=字符串

Pod 应该加入的 CNI 网络名称列表。

password

字符串

如果需要,用于验证注册表的用户名和密码。

quadlet_dir

路径

写入 quadlet 文件的目录路径。默认情况下,对于 root 用户将设置为 /etc/containers/systemd/,对于非 root 用户将设置为 ~/.config/containers/systemd/

quadlet_file_mode

任意

quadlet 文件的权限。

可以将 quadlet_file_mode 指定为八进制数或符号模式(例如,u+rwxu=rw,g=r,o=r)。对于八进制数格式,您必须添加前导零,以便 Ansible 的 YAML 解析器知道它是一个八进制数(如 064401777),或者将其用引号引起来(如 '644''1777'),以便 Ansible 接收一个字符串并可以自行将字符串转换为数字。如果不遵循这些规则之一而向 Ansible 提供数字,则最终会得到一个十进制数,这将产生意想不到的结果。

如果未指定 quadlet_file_mode 且 quadlet 文件 **不存在**,则在设置新创建文件的模式时,将使用默认的 '0640' 掩码。

如果未指定quadlet_file_mode且quadlet文件已存在,则将使用现有文件的模式。

指定quadlet_file_mode是确保文件以正确的权限创建的最佳方法。

quadlet_filename

字符串

要写入的quadlet文件名。如果状态为quadlet,则必须指定。

quadlet_options

列表 / 元素=字符串

quadlet文件的选项。以行列表的形式提供通常网络参数选项中缺少的内容。

quiet

布尔值

隐藏输出中的镜像拉取日志。

选项

  • false

  • true

recreate

布尔值

如果pod已存在,则将其删除并运行新的pod。

选项

  • false

  • true

seccomp_profile_root

路径

seccomp配置文件的目录路径(默认值为“/var/lib/kubelet/seccomp”)。远程Podman客户端不可用此选项。

state

字符串 / 必填

创建pod后启动它,或者只创建它。

选项

  • "created"

  • "started"

  • "absent"

  • "quadlet"

tls_verify

布尔值

联系注册表时需要HTTPS并验证证书(默认为true)。如果显式设置为true,则将使用TLS验证。如果设置为false,则将不使用TLS验证。如果未指定,则除非目标注册表在registries.conf中列为不安全注册表,否则将使用TLS验证。

选项

  • false

  • true

username

字符串

如果需要,用于验证注册表的用户名和密码。

userns

字符串

设置pod中所有容器的用户命名空间模式。它默认为PODMAN_USERNS环境变量。空值(“”)表示禁用用户命名空间。

示例

- name: Play kube file
  containers.podman.podman_play:
    kube_file: ~/kube.yaml
    state: started

- name: Recreate pod from a kube file with options
  containers.podman.podman_play:
    kube_file: ~/kube.yaml
    state: started
    recreate: true
    annotations:
      greeting: hello
      greet_to: world
    userns: host
    log_opt:
      path: /tmp/my-container.log
      max_size: 10mb

- name: Create a Quadlet file
  containers.podman.podman_play:
    kube_file: ~/kube.yaml
    state: quadlet
    annotations:
      greeting: hello
      greet_to: world
    userns: host
    quadlet_filename: kube-pod
    quadlet_file_mode: '0640'
    quadlet_options:
      - "SetWorkingDirectory=yaml"
      - "ExitCodePropagation=any"

作者

  • Sagi Shnaidman (@sshnaidm)