community.okd.openshift_adm_groups_sync 模块 – 将 OpenShift 组与外部提供程序的记录同步。

注意

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

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

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

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

community.okd 2.1.0 中的新增功能

概要

  • 为了将 OpenShift 组记录与外部提供程序的记录同步/修剪,请确定要同步哪些组以及它们的记录存储位置。

  • 类似于 `oc adm prune groups` 和 `oc adm group sync`。

  • LDAP 同步配置文件语法可以在这里找到 https://docs.openshift.com/container-platform/4.9/authentication/ldap-syncing.html

  • LDAP 同步配置的 bindPassword 属性应为字符串,请使用 ansible-vault 加密来保护此信息。

注意

此模块具有相应的 action 插件

要求

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

  • python >= 3.6

  • kubernetes >= 12.0.0

  • python-ldap

参数

参数

注释

allow_groups

列表 / 元素=字符串

允许的组,可以是 OpenShift 组名称或 LDAP 组 dn 值。

当参数 type 设置为 ldap 时,这应该只包含 LDAP 组定义,例如 cn=developers,ou=groups,ou=rfc2307,dc=ansible,dc=redhat

默认值: []

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 环境变量指定。

deny_groups

列表 / 元素=字符串

拒绝的组,可以是 OpenShift 组名称或 LDAP 组 dn 值。

当参数 type 设置为 ldap 时,这应该只包含 LDAP 组定义,例如 cn=developers,ou=groups,ou=rfc2307,dc=ansible,dc=redhat

此列表中指定的元素将覆盖 allow_groups 中指定的元素。

默认值: []

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 版本中添加。

no_proxy

字符串

kubernetes.core 2.3.0 中添加

不应该通过代理的 host/domain/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”

password

字符串

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

请阅读 username 选项的描述,了解何时适用此选项。

persist_config

布尔值

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

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

默认为 false。

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

Kubernetes 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 环境变量指定。

state

字符串

确定当设置为 present 时是否同步组,或者当设置为 absent 时是否修剪组。

选项

  • "absent"

  • "present" ← (默认)

sync_config

别名:config, src

字典 / 必需

提供有效的 LDAP 同步配置的 YAML 定义。

type

字符串

允许和拒绝列表条目引用的组。

选项

  • "ldap" ← (默认)

  • "openshift"

username

字符串

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

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

validate_certs

别名:verify_ssl

布尔值

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

选项

  • false

  • true

注释

注意

  • validate_certsTrue 时,为了避免 SSL 证书验证错误,必须通过 ca_cert 或 kubeconfig 文件提供 API 服务器的完整证书链。

示例

# Prune all orphaned groups
- name: Prune all orphan groups
  openshift_adm_groups_sync:
    state: absent
    src: "{{ lookup('file', '/path/to/ldap-sync-config.yaml') | from_yaml }}"

# Prune all orphaned groups from a list of specific groups specified in allow_groups
- name: Prune all orphan groups from a list of specific groups specified in allow_groups
  openshift_adm_groups_sync:
    state: absent
    src: "{{ lookup('file', '/path/to/ldap-sync-config.yaml') | from_yaml }}"
    allow_groups:
      - cn=developers,ou=groups,ou=rfc2307,dc=ansible,dc=redhat
      - cn=developers,ou=groups,ou=rfc2307,dc=ansible,dc=redhat

# Sync all groups from an LDAP server
- name: Sync all groups from an LDAP server
  openshift_adm_groups_sync:
    src:
      kind: LDAPSyncConfig
      apiVersion: v1
      url: ldap://127.0.0.1:1390
      insecure: true
      bindDN: cn=admin,dc=example,dc=org
      bindPassword: adminpassword
      rfc2307:
        groupsQuery:
          baseDN: "cn=admins,ou=groups,dc=example,dc=org"
          scope: sub
          derefAliases: never
          filter: (objectClass=*)
          pageSize: 0
        groupUIDAttribute: dn
        groupNameAttributes: [cn]
        groupMembershipAttributes: [member]
        usersQuery:
          baseDN: "ou=users,dc=example,dc=org"
          scope: sub
          derefAliases: never
          pageSize: 0
        userUIDAttribute: dn
        userNameAttributes: [mail]
        tolerateMemberNotFoundErrors: true
        tolerateMemberOutOfScopeErrors: true

# Sync all groups except the ones from the deny_groups  from an LDAP server
- name: Sync all groups from an LDAP server using deny_groups
  openshift_adm_groups_sync:
    src: "{{ lookup('file', '/path/to/ldap-sync-config.yaml') | from_yaml }}"
    deny_groups:
      - cn=developers,ou=groups,ou=rfc2307,dc=ansible,dc=redhat
      - cn=developers,ou=groups,ou=rfc2307,dc=ansible,dc=redhat

# Sync all OpenShift Groups that have been synced previously with an LDAP server
- name: Sync all OpenShift Groups that have been synced previously with an LDAP server
  openshift_adm_groups_sync:
    src: "{{ lookup('file', '/path/to/ldap-sync-config.yaml') | from_yaml }}"
    type: openshift

返回值

常见的返回值已在 此处 记录,以下是此模块特有的字段

描述

builds

列表 / 元素=字典

已创建、更新或删除的组

返回:成功

示例:[{"apiVersion": "user.openshift.io/v1", "kind": "Group", "metadata": {"annotations": {"openshift.io/ldap.sync-time": "2021-12-17T12:20:28.125282", "openshift.io/ldap.uid": "cn=developers,ou=groups,ou=rfc2307,dc=ansible,dc=redhat", "openshift.io/ldap.url": "localhost:1390"}, "creationTimestamp": "2021-12-17T11:09:49Z", "labels": {"openshift.io/ldap.host": "localhost"}, "managedFields": [{"apiVersion": "user.openshift.io/v1", "fieldsType": "FieldsV1", "fieldsV1": {"f:metadata": {"f:annotations": {".": {}, "f:openshift.io/ldap.sync-time": {}, "f:openshift.io/ldap.uid": {}, "f:openshift.io/ldap.url": {}}, "f:labels": {".": {}, "f:openshift.io/ldap.host": {}}}, "f:users": {}}, "manager": "OpenAPI-Generator", "operation": "Update", "time": "2021-12-17T11:09:49Z"}], "name": "developers", "resourceVersion": "2014696", "uid": "8dc211cb-1544-41e1-96b1-efffeed2d7d7"}, "users": ["[email protected]"]}]

作者

  • Aubin Bikouo (@abikouo)