netapp.ontap.na_ontap_security_certificates 模块 – NetApp ONTAP 安全证书管理。

注意

此模块是 netapp.ontap 集合 (版本 22.13.0) 的一部分。

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

要安装它,请使用: ansible-galaxy collection install netapp.ontap。您需要其他要求才能使用此模块,请参阅 要求 了解详情。

要在 playbook 中使用它,请指定: netapp.ontap.na_ontap_security_certificates

netapp.ontap 20.7.0 中的新增功能

概要

  • 在 ONTAP 上安装或删除安全证书。(创建和签名将在第二次迭代中进行)

要求

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

  • Ansible 2.9 或更高版本 - 建议使用 2.12 或更高版本。

  • Python3 - 建议使用 3.9 或更高版本。

  • 使用 ZAPI 时,需要 netapp-lib 2018.11.13 或更高版本(使用“pip install netapp-lib”安装),强烈建议使用 netapp-lib 2020.3.12,因为它提供了更好的连接问题错误报告。

  • 物理或虚拟集群式 Data ONTAP 系统,模块支持 Data ONTAP 9.1 及更高版本,REST 支持需要 ONTAP 9.6 或更高版本。

参数

参数

注释

cert_filepath

字符串

netapp.ontap 20.6.0 中添加

SSL 客户端证书文件(.pem)的路径。

python 2.6 不支持。

common_name

字符串

证书的通用名称。

创建和安装时必填。

如果名称存在,则在签名和删除时忽略。

如果名称不存在或被忽略,则在签名和删除时必填。

expiry_time

字符串

证书过期时间。创建证书时建议指定过期时间。

签名证书时可以提供。

feature_flags

字典

netapp.ontap 20.5.0 中添加

启用或禁用新功能。

这可以用来启用实验性功能或禁用破坏向后兼容性的新功能。

支持的键和值可能会随时更改,恕不另行通知。未知键将被忽略。

force_ontap_version

字符串

netapp.ontap 21.23.0 中添加

使用 REST 时覆盖集群 ONTAP 版本。

如果版本与目标集群不匹配,则行为未定义。

这是在由于权限问题无法读取集群版本时提供的解决方法。请参阅 https://github.com/ansible-collections/netapp.ontap/wiki/Known-issues

这应采用 9.10 或 9.10.1 的形式,每个元素都是一个整数。

use_rest 设置为 auto 时,这可能会根据版本和平台功能强制切换到 ZAPI。

ZAPI 中忽略。

hash_function

字符串

哈希函数。创建自签名证书或签名证书时可以提供。

创建和签名允许的值为 sha256、sha224、sha384、sha512。

hostname

字符串 / 必填

ONTAP 实例的主机名或 IP 地址。

http_port

整数

使用此端口覆盖默认端口(80 或 443)

https

布尔值

启用和禁用 https。

使用 REST 时忽略,因为只支持 https。

使用 SSL 证书身份验证时忽略,因为它需要 SSL。

选项

  • false ← (默认)

  • true

ignore_name_if_not_supported

布尔值

netapp.ontap 20.8.0 中添加

ONTAP 9.6 和 9.7 REST API 不支持 *name*。

如果设置为 true,则如果 *name* 存在且未使用 *name*,则不会报告错误。

选项

  • false

  • true ← (默认)

intermediate_certificates

列表 / 元素=字符串

PEM 格式的中间证书链。

仅在安装证书时有效。

key_filepath

字符串

netapp.ontap 20.6.0 中添加

SSL 客户端密钥文件的路径。

key_size

整数

证书的密钥大小(以位为单位)。创建证书时建议指定强密钥大小。

签名和删除时忽略。

name

字符串

每个 SVM 的安全证书的唯一名称。

此参数不支持 ONTAP 9.6 或 9.7,因为 REST API 不支持它。

如果与 ONTAP 9.6 或 9.7 一起出现,则默认情况下会被忽略,请参阅 *ignore_name_if_not_supported*。

强烈建议对较新版本的 ONTAP 使用 name。

ontapi

整数

要使用的 ontap api 版本

password

别名:pass

字符串

指定用户的密码。

private_key

字符串

PEM 格式的私钥证书。

安装 CA 签名的证书时必填。否则忽略。

public_certificate

字符串

PEM 格式的公钥证书。

安装证书时必填。否则忽略。

signing_request

字符串

如果存在,则使用 name 和 svm 标识的证书来签名请求。

返回签名的证书。

state

字符串

指定的安全证书是否存在。

选项

  • "present" ← (默认)

  • "absent"

svm

别名:vserver

字符串

SVM(vserver)的名称。

如果存在,则证书安装在 SVM 中。

如果不存在,则证书安装在集群中。

type

字符串

证书类型

创建和安装时必填。

如果名称存在,则在签名和删除时忽略。

如果名称不存在或被忽略,则在签名和删除时必填。

选项

  • "client"

  • "server"

  • "client_ca"

  • "server_ca"

  • "root_ca"

use_rest

字符串

是否使用 REST 或 ZAPI。

always – 如果模块支持 REST,则始终使用 REST API。如果模块不支持 REST,则会发出警告。如果 REST 中不支持模块选项,则会发出错误。

never – 如果模块支持 ZAPI,则始终使用 ZAPI。如果 ZAPI 中不支持 REST 选项,则可能会发出错误。

auto – 如果模块支持 REST 且支持模块选项,则将尝试使用 REST API。否则将回退到 ZAPI。

默认值: "auto"

用户名

别名:user

字符串

这可以是集群范围或 SVM 范围的帐户,具体取决于是否需要集群级或 SVM 级的 API。

更多信息,请阅读文档 https://mysupport.netapp.com/NOW/download/software/nmsdk/9.4/

支持两种身份验证方法:

  1. 基本身份验证,使用用户名和密码;

  2. SSL 证书身份验证,使用 SSL 客户端证书文件,并可选地使用私钥文件。

要使用证书,必须已在 ONTAP 集群中安装该证书,并且必须已启用证书身份验证。

validate_certs

布尔值

如果设置为 no,则不会验证 SSL 证书。

仅当在使用自签名证书的个人控制站点上使用时,才应将其设置为 False

选项

  • false

  • true ← (默认)

备注

注意

  • 支持检查模式。

  • 仅支持 REST。需要 ONTAP 9.6 或更高版本,推荐使用 ONTAP 9.8 或更高版本。

  • 以 na_ontap 为前缀的模块旨在支持 ONTAP 存储平台。

  • 默认情况下启用 https 并推荐使用。要在集群上启用 http,必须运行以下命令:‘set -privilege advanced;’ ‘system services web modify -http-enabled true;’

示例

- name: install certificate
  netapp.ontap.na_ontap_security_certificates:
    # <<: *cert_login
    common_name: "{{ ontap_cert_common_name }}"
    name: "{{ ontap_cert_name }}"
    public_certificate: "{{ ssl_certificate }}"
    type: client_ca
    svm: "{{ vserver }}"

# ignore svm option for cluster/admin vserver.
- name: install certificate in cluster vserver.
  netapp.ontap.na_ontap_security_certificates:
    # <<: *cert_login
    common_name: "{{ ontap_cert_common_name }}"
    name: "{{ ontap_cert_name }}"
    public_certificate: "{{ ssl_certificate }}"
    type: client_ca

- name: create certificate
  netapp.ontap.na_ontap_security_certificates:
    # <<: *cert_login
    common_name: "{{ ontap_cert_root_common_name }}"
    name: "{{ ontap_cert_name }}"
    type: root_ca
    svm: "{{ vserver }}"
    expiry_time: P365DT     # one year

- name: sign certificate using newly create certificate
  tags: sign_request
  netapp.ontap.na_ontap_security_certificates:
    # <<: *login
    name: "{{ ontap_cert_name }}"
    svm: "{{ vserver }}"
    signing_request: |
      -----BEGIN CERTIFICATE REQUEST-----
      MIIChDCCAWwCAQAwPzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQH
      DAlTdW5ueXZhbGUxDzANBgNVBAoMBk5ldEFwcDCCASIwDQYJKoZIhvcNAQEBBQAD
      ggEPADCCAQoCggEBALgXCj6Si/I4xLdV7wjWYTbt8jY20fQOjk/4E7yBT1vFBflE
      ks6YDc6dhC2G18cnoj9E3DiR8lIHPoAlFB/VmBNDev3GZkbFlrbV7qYmf8OEx2H2
      tAefgSP0jLmCHCN1yyhJoCG6FsAiD3tf6yoyFF6qS9ureGL0tCJJ/osx64WzUz+Q
      EN8lx7VSxriEFMSjreXZDhUFaCdIYKKRENuEWyYvdy5cbBmczhuM8EP6peOVv5Hm
      BJzPUDkq7oTtEHmttpATq2Y92qzNzETO0bXN5X/93AWri8/yEXdX+HEw1C/omtsE
      jGsCXrCrIJ+DgUdT/GHNdBWlXl/cWGtEgEQ4vrUCAwEAAaAAMA0GCSqGSIb3DQEB
      CwUAA4IBAQBjZNoQgr/JDm1T8zyRhLkl3zw4a16qKNu/MS7prqZHLVQgrptHRegU
      Hbz11XoHfVOdbyuvtzEe95QsDd6FYCZ4qzZRF3se4IjMeqwdQZ5WP0/GFiwM8Uln
      /0TCWjt759XMeUX7+wgOg5NRjJ660eWMXzu/UJf+vZO0Q2FiPIr13JvvY3TjT+9J
      UUtK4r9PaUuOPN2YL9IQqSD3goh8302Qr3nBXUgjeUGLkgfUM5S39apund2hyTX2
      JCLQsKr88pwU9iDho2tHLv/2QgLwNZLPu8V+7IGu6G4vB28lN4Uy7xbhxFOKtyWu
      fK4sEdTw3B/aDN0tB8MHFdPYycNZsEac
      -----END CERTIFICATE REQUEST-----
    expiry_time: P180DT

- name: delete certificate
  netapp.ontap.na_ontap_security_certificates:
    # <<: *cert_login
    state: absent
    name: "{{ ontap_cert_name }}"
    svm: "{{ vserver }}"

# For ONTAP 9.6 or 9.7, use common_name and type, in addition to, or in lieu of name
- name: install certificate
  netapp.ontap.na_ontap_security_certificates:
    # <<: *cert_login
    common_name: "{{ ontap_cert_common_name }}"
    public_certificate: "{{ ssl_certificate }}"
    type: client_ca
    svm: "{{ vserver }}"

- name: create certificate
  netapp.ontap.na_ontap_security_certificates:
    # <<: *cert_login
    common_name: "{{ ontap_cert_root_common_name }}"
    type: root_ca
    svm: "{{ vserver }}"
    expiry_time: P365DT     # one year

- name: sign certificate using newly create certificate
  tags: sign_request
  netapp.ontap.na_ontap_security_certificates:
    # <<: *login
    common_name: "{{ ontap_cert_root_common_name }}"
    type: root_ca
    svm: "{{ vserver }}"
    signing_request: |
      -----BEGIN CERTIFICATE REQUEST-----
      MIIChDCCAWwCAQAwPzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQH
      DAlTdW5ueXZhbGUxDzANBgNVBAoMBk5ldEFwcDCCASIwDQYJKoZIhvcNAQEBBQAD
      ggEPADCCAQoCggEBALgXCj6Si/I4xLdV7wjWYTbt8jY20fQOjk/4E7yBT1vFBflE
      ks6YDc6dhC2G18cnoj9E3DiR8lIHPoAlFB/VmBNDev3GZkbFlrbV7qYmf8OEx2H2
      tAefgSP0jLmCHCN1yyhJoCG6FsAiD3tf6yoyFF6qS9ureGL0tCJJ/osx64WzUz+Q
      EN8lx7VSxriEFMSjreXZDhUFaCdIYKKRENuEWyYvdy5cbBmczhuM8EP6peOVv5Hm
      BJzPUDkq7oTtEHmttpATq2Y92qzNzETO0bXN5X/93AWri8/yEXdX+HEw1C/omtsE
      jGsCXrCrIJ+DgUdT/GHNdBWlXl/cWGtEgEQ4vrUCAwEAAaAAMA0GCSqGSIb3DQEB
      CwUAA4IBAQBjZNoQgr/JDm1T8zyRhLkl3zw4a16qKNu/MS7prqZHLVQgrptHRegU
      Hbz11XoHfVOdbyuvtzEe95QsDd6FYCZ4qzZRF3se4IjMeqwdQZ5WP0/GFiwM8Uln
      /0TCWjt759XMeUX7+wgOg5NRjJ660eWMXzu/UJf+vZO0Q2FiPIr13JvvY3TjT+9J
      UUtK4r9PaUuOPN2YL9IQqSD3goh8302Qr3nBXUgjeUGLkgfUM5S39apund2hyTX2
      JCLQsKr88pwU9iDho2tHLv/2QgLwNZLPu8V+7IGu6G4vB28lN4Uy7xbhxFOKtyWu
      fK4sEdTw3B/aDN0tB8MHFdPYycNZsEac
      -----END CERTIFICATE REQUEST-----
    expiry_time: P180DT

- name: delete certificate
  netapp.ontap.na_ontap_security_certificates:
    # <<: *cert_login
    state: absent
    common_name: "{{ ontap_cert_root_common_name }}"
    type: root_ca
    name: "{{ ontap_cert_name }}"
    svm: "{{ vserver }}"

返回值

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

描述

ontap_info

字典

签名时返回 public_certificate,创建、安装和删除时为空。

返回值:始终

示例: {"ontap_info": {"public_certificate": "-----BEGIN CERTIFICATE----- ........-----END CERTIFICATE----- "}}

作者

  • NetApp Ansible 团队 (@carchi8py)