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 后启动它,或者只创建它。

选项

  • “已创建”

  • “已启动”

  • “不存在”

  • “四元组”

tls_verify

布尔值

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

选项

  • false

  • true

用户名

字符串

如果需要,用于对注册表进行身份验证的用户名和密码。

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)