28.2. podman RHEL 系统角色的变量

用于 podman RHEL 系统角色的参数如下:

变量描述

podman_kube_specs

描述 Podman pod 和对应的 systemd 单元。

  • state :(默认:created)- 表示一个要通过 systemd 服务和 pod 执行的操作:

    • created :创建 pod 和 systemd 服务,但不运行它们
    • started: 创建 pod 和 systemd 服务,并启动它们
    • absent :删除 pod 和 systemd 服务
  • run_as_user :(默认: podman_run_as_user)- 每 pod 用户。如果没有指定用户,则使用 root

    注意

    用户必须已经存在。

  • run_as_group (默认: podman_run_as_group)- 每 pod 组。如果没有指定用户,则使用 root

    注意

    组必须已经存在。

  • systemd_unit_scope (默认: podman_systemd_unit_scope)- 用于 systemd 单元的范围。如果没有指定,则使用 系统 用于 root 容器,user 用于用户容器。
  • kube_file_src - 控制器节点上 Kubernetes YAML 文件的名称,该文件将被复制到受管节点上的 kube_file

    注意

    如果指定了 kube_file_content 变量,则不要指定 kube_file_src 变量。kube_file_content 优先于 kube_file_src

  • kube_file_content - Kubernetes YAML 格式的字符串,或 Kubernetes YAML 格式的字典。它指定受管节点上 kube_file 的内容。

    注意

    如果指定了 kube_file_src 变量,则不要指定 kube_file_content 变量。kube_file_content 优先于 kube_file_src

  • kube_file - 受管节点中有一个文件名,其中包含容器或 pod 的 Kubernetes 规格。除非需要将 kube_file 文件复制到角色外的受管节点,否则通常不必指定 kube_file 变量。如果指定了 kube_file_srckube_file_content,则不必指定此变量。

    注意

    强烈建议省略 kube_file,而指定 kube_file_srckube_file_content,让角色管理文件路径和名称。

    • 文件 basename 是 K8s yaml 中的 metadata.name 值,并附加了 .yml 后缀。
    • 对于系统服务,目录为 /etc/containers/ansible-kubernetes.d
    • 对于用户服务,目录为 $HOME/.config/containers/ansible-kubernetes.d
    • 这将被复制到受管节点上的 /etc/containers/ansible-kubernetes.d/<application_name>.yml 文件。

podman_quadlet_specs

Quadlet 规格 列表 .

警告

Quadlets 仅适用于 RHEL 8 上的根容器。Quadlets 仅在 RHEL 9 中使用无根容器。

Quadlet 由单位的名称和类型定义。一个单元的类型可以是以下: 容器kube网络。您可以显式传递 名称和 键入,或者 type 将派生自文件 中给出的文件名、 file _srctemplate_src

  • root 容器文件位于受管节点上的 /etc/containers/systemd/$name.$type 中。
  • rootless 容器文件位于受管节点上的 $HOME/.config/containers/systemd/$name.$type 中。

当 Quadlet 规格取决于其他文件时,如依赖于 Yaml 文件或 ConfigMapquadlet.kube,则该文件必须在 podman_quadlet_specs 列表中指定,然后才能使用它的文件。例如,如果您有一个 my-app.kube 文件:

[Kube]
ConfigMap=my-app-config.yml
Yaml=my-app.yml
...

然后,您必须在 my-app.kube 前指定 my-app-config.ymlmy-app.yml

podman_quadlet_specs:
  - file_src: my-app-config.yml
  - file_src: my-app.yml
  - file_src: my-app.kube

每个 Quadlet 规格的大部分参数都与上述 podman_kube_spec 相同,但 kube 参数不被支持。支持以下参数:

  • name - 单元的名称。如果没有指定名称,它将派生自文件、 file _srctemplate_src

    • 例如,如果您指定了 file_src: /path/to/my-container.container,则 名称为 my-container
  • type - 单元的类型可以是以下: 容器kube网络。如果没有指定名称,它将派生自文件、 file _srctemplate_src

    • 例如,如果您指定了 file_src: /path/to/my-container.container,则 类型是 容器

      注意

      如果此文件采用 Quadlet 单元格式,且具有有效的 Quadlet 单元后缀,它将用作 Quadlet 单元,否则将仅复制它。

  • file_src - 控制节点上要复制到受管节点的文件的名称,以用作 Quadlet 单元的来源。

    注意

    如果此文件采用 Quadlet 单元格式,且具有有效的 Quadlet 单元后缀,它将用作 Quadlet 单元,否则将仅复制它。

  • file - 受管节点上的文件的名称,用作 Quadlet 单元的来源。

    注意

    如果此文件采用 Quadlet 单元格式,且具有有效的 Quadlet 单元后缀,它将用作 Quadlet 单元,否则将仅复制它。

  • file_content - 要复制到受管节点的文件内容,格式为字符串。这有助于传递可轻松指定内联的短文件。您必须指定 nametype
  • template_src - 控制节点上将作为 Jinja * 模板文件 处理的文件的名称,然后复制到受管节点,以用作 Quadlet 单元的来源。

    注意

    如果此文件采用 Quadlet 单元格式,且具有有效的 Quadlet 单元后缀,它将用作 Quadlet 单元,否则将仅复制它。如果文件具有 .j2 后缀,则该后缀将被删除,以确定 quadlet 文件类型。

    • 例如,如果指定:

      podman_quadlet_specs:
        - template_src: my-app.container.j2

      然后,本地文件 templates/my-app.container.j2 将作为 Jinja 模板文件处理,然后作为受管节点上的 Quadlet 容器单元规格复制到 /etc/containers/systemd/my-app.container 中。

podman_secrets

secret specs 列表与 podman_secret 使用的格式相同,但还有额外的字段 run_as_user 用于在指定用户的帐户中创建 secret。如果没有指定,则会在 podman_run_as_user 指定的帐户中创建 secret,其默认值为 "root" 使用 Ansible Vault 来加密 data 字段的值。

podman_create_host_directories

如果为 true,该角色确保在 podman_kube_specs 中给定的 Kubernetes YAML 中的 volumes.hostPath 规范中的主机挂载中指定的主机目录。默认值为 false。

注意

为确保角色管理目录,您必须为非 root 容器指定目录作为 root 容器的绝对路径,或者相对于主目录的路径。

该角色将其默认所有权或权限应用到目录。如果需要设置所有权或权限,请参阅 podman_host_directory

podman_host_directories

它是字典。如果使用 podman_create_host_directories 告知角色为卷挂载创建主机目录,并且您需要指定应用到这些创建的主机目录的权限或所有权,请使用 podman_host_directory。每个键都是要管理的主机目录的绝对路径。该值采用 file 模块的参数格式。如果没有指定值,该角色将使用其内置的默认值。如果要指定一个用于所有主机目录的值,请使用特殊键 DEFAULT

podman_firewall

它是一个字典列表。指定您希望角色在防火墙中管理的端口。这使用的格式与 firewall RHEL 系统角色使用的格式相同。

podman_selinux_ports

它是一个字典列表。指定您希望角色为角色使用的端口管理 SELinux 策略的端口。这使用的格式与 selinux RHEL 系统角色使用的格式相同。

podman_run_as_user

指定用于所有无根容器的用户名称。您还可以使用 podman_kube_specspodman_quadlet_specspodman_secrets . 的 run_as_user 指定每个容器/单元/secret 用户名。

注意

用户必须已经存在。

podman_run_as_group

指定用于所有无根容器的组名称。您还可以使用 podman_kube_specspodman_quadlet_specs 中的 run_as_group 指定每个容器或单元组名称。

注意

组必须已经存在。

podman_systemd_unit_scope

定义所有 systemd 单元默认使用的 systemd 范围。您还可以使用 podman_kube_specspodman_quadlet_specs 中的 systemd_unit_scope 指定每个容器或单元范围。默认情况下,无根容器使用 user,root 容器使用 system

podman_containers_conf

containers.conf (5) 设置定义为字典。此设置在 containers.conf.d 目录中的置入文件中提供。如果以 root 身份运行,则 管理系统 设置。请参阅 podman_run_as_ user .Otherwise,用户设置会被管理。有关目录位置,请参阅 containers.conf 手册页。

podman_registries_conf

containers-registries.conf (5) 设置定义为字典。设置在 registry.conf.d 目录中的置入文件中提供。如果以 root 身份运行,则 管理系统 设置。请参阅 podman_run_as_user。否则,将管理 user 设置。有关目录位置,请参见 registries.conf 手册页。

podman_storage_conf

containers-storage.conf (5) 设置定义为字典。如果以 root 身份运行,则 管理系统 设置。请参阅 podman_run_as_user。否则,将管理 user 设置。有关目录位置,请参见 storage.conf 手册页。

podman_policy_json

containers-policy.conf (5) 设置定义为字典。如果以 root 身份运行(请参阅 podman_run_as_user),将管理 system 设置。否则,将管理 user 设置。有关目录位置,请参阅 policy.json 手册页。

其他资源

  • 有关 podman 中使用的参数以及 podman RHEL 系统角色的附加信息,请查看 /usr/share/ansible/roles/rhel-system-roles.podman/README.md 文件。