community.okd.openshift_process 模块 – 处理 OpenShift 模板(openshift.io/v1 Template)

注意

此模块是 community.okd 集合(版本 4.0.0)的一部分。

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

要安装它,请使用:ansible-galaxy collection install community.okd。您需要进一步的要求才能使用此模块,请参阅要求 了解详细信息。

要在 playbook 中使用它,请指定:community.okd.openshift_process

community.okd 0.3.0 中的新增功能

概要

  • 使用提供的模板处理指定的 OpenShift 模板。

  • 模板可以内联提供、从文件提供,或者在集群中按名称和命名空间指定。

  • 类似于 `oc process`。

  • 有关模板资源本身的 CRUD 操作,请参阅 community.okd.k8s 模块。

要求

在执行此模块的主机上需要以下要求。

  • python >= 3.6

  • kubernetes >= 12.0.0

  • PyYAML >= 3.11

参数

参数

注释

api_key

字符串

用于向 API 进行身份验证的令牌。也可以通过 K8S_AUTH_API_KEY 环境变量指定。

ca_cert

别名:ssl_ca_cert

路径

用于向 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链以避免证书验证错误。也可以通过 K8S_AUTH_SSL_CA_CERT 环境变量指定。

client_cert

别名:cert_file

路径

用于向 API 进行身份验证的证书的路径。也可以通过 K8S_AUTH_CERT_FILE 环境变量指定。

client_key

别名:key_file

路径

用于向 API 进行身份验证的密钥文件的路径。也可以通过 K8S_AUTH_KEY_FILE 环境变量指定。

context

字符串

配置文件中找到的上下文的名称。也可以通过 K8S_AUTH_CONTEXT 环境变量指定。

host

字符串

提供用于访问 API 的 URL。也可以通过 K8S_AUTH_HOST 环境变量指定。

impersonate_groups

列表 / 元素=字符串

在 kubernetes.core 2.3.0 中添加

用于操作的模拟组。

也可以通过 K8S_AUTH_IMPERSONATE_GROUPS 环境变量指定。示例:Group1,Group2

impersonate_user

字符串

在 kubernetes.core 2.3.0 中添加

用于操作的模拟用户名。

也可以通过 K8S_AUTH_IMPERSONATE_USER 环境变量指定。

kubeconfig

任何

现有 Kubernetes 配置文件的路径。如果未提供,并且未提供其他连接选项,则 Kubernetes 客户端将尝试从 ~/.kube/config 加载默认配置文件。也可以通过 K8S_AUTH_KUBECONFIG 环境变量指定。

可以使用分隔符“;”(对于 Windows 平台)或“:”(对于其他平台)提供多个 Kubernetes 配置文件。

可以将 Kubernetes 配置作为字典提供。此功能需要 python kubernetes 客户端版本 >= 17.17.0。在版本 2.2.0 中添加。

name

字符串

要处理的模板的名称。

模板必须存在于集群中。

提供时,需要 *namespace*。

与 *resource_definition* 或 *src* 互斥

namespace

字符串

可以在其中找到模板的命名空间。

namespace_target

字符串

应在其中创建、更新或删除资源的命名空间。

仅当 *state* 存在或不存在时使用。

no_proxy

字符串

在 kubernetes.core 2.3.0 中添加

不应通过代理的以逗号分隔的主机/域名/IP/CIDR 列表。也可以通过 K8S_AUTH_NO_PROXY 环境变量指定。

请注意,此模块不会从环境(例如 NO_PROXY)中获取典型的代理设置。

此功能需要 kubernetes>=19.15.0。当 kubernetes 库小于 19.15.0 时,即使 no_proxy 设置正确也会失败。

示例值为“localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16”

parameter_file

字符串

包含模板参数值以覆盖/设置模板中值的文件的路径。

对应于 oc process 的 `–param-file` 参数。

parameters

字典

一组键:值对,将用于设置/覆盖模板中的值。

对应于 oc process 的 `–param` 参数。

password

字符串

提供用于向 API 进行身份验证的密码。也可以通过 K8S_AUTH_PASSWORD 环境变量指定。

请阅读 username 选项的描述,以讨论何时适用此选项。

persist_config

布尔值

是否保存 kube config 刷新令牌。也可以通过 K8S_AUTH_PERSIST_CONFIG 环境变量指定。

当 k8s 上下文使用带有刷新令牌的用户凭据(如 oidc 或 gke/gcloud 身份验证)时,令牌由 k8s python 客户端库刷新,但默认情况下不会保存。因此,旧的刷新令牌可能会过期,并且下一次身份验证可能会失败。将此标志设置为 true 将告诉 k8s python 客户端将新的刷新令牌保存到 kube 配置文件中。

默认为 false。

请注意,当前版本的 k8s python 客户端库尚不支持将此标志设置为 True。

此 k8s Python 库的修复方案在这里:https://github.com/kubernetes-client/python-base/pull/169

选项

  • false

  • true

proxy

字符串

用于连接的 HTTP 代理的 URL。也可以通过 K8S_AUTH_PROXY 环境变量指定。

请注意,此模块不会从环境中获取典型的代理设置(例如 HTTP_PROXY)。

proxy_headers

字典

在 kubernetes.core 2.0.0 中添加

basic_auth

字符串

用于基本身份验证标头的冒号分隔的用户名:密码。

也可以通过 K8S_AUTH_PROXY_HEADERS_BASIC_AUTH 环境变量指定。

proxy_basic_auth

字符串

用于代理基本身份验证标头的冒号分隔的用户名:密码。

也可以通过 K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH 环境变量指定。

user_agent

字符串

表示您想要的 user-agent 的字符串,例如 foo/1.0。

也可以通过 K8S_AUTH_PROXY_HEADERS_USER_AGENT 环境变量指定。

resource_definition

别名:definition, inline

字符串

在创建或更新对象时,提供有效的 YAML 定义(可以是字符串、列表或字典)。

注意:kindapi_versionnamenamespace 将被提供的 resource_definition 中找到的相应值覆盖。

src

路径

提供一个文件路径,其中包含要创建或更新的一个或多个对象的有效 YAML 定义。与 resource_definition 互斥。注意:kindapi_versionnamenamespace 将被从 src 文件中读取的配置中找到的相应值覆盖。

从本地文件系统读取。要从 Ansible 控制器的文件系统(包括 vault 文件)读取,请使用文件查找插件或模板查找插件,并结合 from_yaml 过滤器,然后将结果传递给 resource_definition。请参见下面的示例。

可用于创建资源的清单文件的 URL。在 2.4.0 版本中添加。

kubernetes.core.k8s 模块的情况下,与 template 互斥。

state

字符串

确定如何处理呈现的模板。

状态 rendered 将基于提供的参数呈现模板,并在 resources 字段中返回呈现的对象。这些可以在未来的任务中引用。

状态 present 将在呈现的模板中创建资源(如果它们尚不存在),并在存在时进行修补。

状态 absent 将删除呈现的模板中的资源。

选项

  • "absent"

  • "present"

  • "rendered" ←(默认)

username

字符串

提供用于与 API 进行身份验证的用户名。也可以通过 K8S_AUTH_USERNAME 环境变量指定。

请注意,这仅适用于配置为使用 HTTP 基本身份验证的集群。如果您的集群具有不同的身份验证形式(例如 OpenShift 中的 OAuth2),则此选项将无法按预期工作,您应该研究 community.okd.k8s_auth 模块,因为它可能满足您的需求。

validate_certs

别名:verify_ssl

布尔值

是否验证 API 服务器的 SSL 证书。也可以通过 K8S_AUTH_VERIFY_SSL 环境变量指定。

选项

  • false

  • true

wait

布尔值

是否等待某些资源类型达到所需状态。

默认情况下,一旦 Kubernetes 收到请求,模块就会退出。

state=presentDeploymentDaemonSetPod 以及 state=absent 的所有资源类型实现。

对于没有实现的资源类型,wait 会立即返回,除非设置了 wait_condition

选项

  • false ←(默认)

  • true

wait_condition

字典

指定要等待的状态的自定义条件。

如果未设置 wait 或将其设置为 False,则忽略。

reason

字符串

所需条件中 reason 字段的值

例如,如果暂停了 Deployment,则 Progressing type 将具有 DeploymentPaused 原因。

条件中可能的原因特定于 Kubernetes 中的每种资源类型。

请参阅给定资源的 status 字段的 API 文档,以查看可能的选项。

status

字符串

所需条件中 status 字段的值。

例如,如果暂停了 Deployment,则 Progressing type 将具有 Unknown 状态。

选项

  • "True" ←(默认)

  • "False"

  • "Unknown"

type

字符串

要等待的条件类型。

例如,Pod 资源将设置 Ready 条件(以及其他条件)。

如果您指定了 wait_condition,则为必需项。

如果留空,将忽略 wait_condition 字段。

条件的可能类型特定于 Kubernetes 中的每种资源类型。

请参阅给定资源的 status 字段的 API 文档,以查看可能的选项。

wait_sleep

整数

两次检查之间休眠的秒数。

默认值: 5

wait_timeout

整数

等待资源达到所需状态的秒数。

如果未设置 wait,则忽略。

默认值: 120

说明

注意

  • 为避免当 validate_certs 为 *True* 时出现 SSL 证书验证错误,必须通过 ca_cert 或在 kubeconfig 文件中提供 API 服务器的完整证书链。

示例

- name: Process a template in the cluster
  community.okd.openshift_process:
    name: nginx-example
    namespace: openshift # only needed if using a template already on the server
    parameters:
      NAMESPACE: openshift
      NAME: test123
    state: rendered
  register: result

- name: Create the rendered resources using apply
  community.okd.k8s:
    namespace: default
    definition: '{{ item }}'
    wait: true
    apply: true
  loop: '{{ result.resources }}'

- name: Process a template with parameters from an env file and create the resources
  community.okd.openshift_process:
    name: nginx-example
    namespace: openshift
    namespace_target: default
    parameter_file: 'files/nginx.env'
    state: present
    wait: true

- name: Process a local template and create the resources
  community.okd.openshift_process:
    src: files/example-template.yaml
    parameter_file: files/example.env
    namespace_target: default
    state: present

- name: Process a local template, delete the resources, and wait for them to terminate
  community.okd.openshift_process:
    src: files/example-template.yaml
    parameter_file: files/example.env
    namespace_target: default
    state: absent
    wait: true

返回值

通用返回值记录在这里,以下是此模块特有的字段

描述

resources

复杂

在模板中定义的呈现的资源

返回:当状态为 rendered 时成功返回

apiVersion

字符串

此对象表示的版本化架构。

返回:成功

kind

字符串

表示此对象所代表的 REST 资源。

返回:成功

metadata

复杂

标准对象元数据。包括名称、命名空间、注释、标签等。

返回:成功

name

字符串

资源的名称

返回:成功

namespace

字符串

资源的命名空间

返回:成功

spec

字典

对象的特定属性。将根据 api_versionkind 而变化。

返回:成功

status

字典

对象的当前状态详细信息。

返回:成功

conditions

复杂

对象的 状态条件 数组。不保证存在

返回:成功

result

复杂

已创建、修补或以其他方式存在的对象。在删除的情况下将为空。

返回:当状态为 present 或 absent 时成功返回

apiVersion

字符串

此对象表示的版本化架构。

返回:成功

duration

整数

任务的已用时间(以秒为单位)

返回:wait 为 true 时

示例: 48

items

列表 / 元素=字符串

仅当多个 yaml 文档传递给 src 或 resource_definition 时返回

返回:当 resource_definition 或 src 包含对象列表时

kind

字符串

表示此对象所代表的 REST 资源。

返回:成功

metadata

复杂

标准对象元数据。包括名称、命名空间、注释、标签等。

返回:成功

name

字符串

资源的名称

返回:成功

namespace

字符串

资源的命名空间

返回:成功

spec

字典

对象的特定属性。将根据 api_versionkind 而变化。

返回:成功

status

复杂

对象的当前状态详细信息。

返回:成功

conditions

复杂

对象的 状态条件 数组。不保证存在

返回:成功

作者

  • Fabian von Feilitzsch (@fabianvf)