我想通过适用于vcenter的ansible剧本使用vcenter的证书管理器来自动执行“替换证书”的过程。我拥有所有3个必需的证书(我是从第三方CA生成的),我们需要将其传递给证书管理器,并手动按预期工作。 我写了一个ansible-playbook,它将生成所有这些证书,并通过将这些证书复制到vcenter中并手动将其应用于证书管理器中,可以正常工作。
我想从外部使用ansible模块来自动化上述过程。我拥有vcenter的所有必需数据(IP地址,凭据等),并希望从我的本地linux计算机上运行它,该计算机将运行并执行与证书管理器相同的工作。
为此,我想到了两种方法。 (可能还有其他更好的方法)
我希望有人在这方面帮助我。
希望你有问题。
谢谢。
答案 0 :(得分:0)
最后我使用 VMARE 的 API REST 来完成它,而不是在 VCENTER 中运行命令
- name: Get authentication cookie
uri:
url: "https://{{ vcenter_hostname }}/rest/com/vmware/cis/session"
method: POST
user: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: no
force_basic_auth: yes
status_code: 200,404
timeout: 10
delegate_to: localhost
register: session_cookie
- name: Upload Trusted CA
uri:
url: "https://{{ vcenter_hostname }}/rest/vcenter/certificate-management/vcenter/trusted-root-chains/"
method: POST
validate_certs: no
return_content: yes
status_code: 200
timeout: 10
headers:
vmware-api-session-id: "{{ session_cookie.cookies['vmware-api-session-id'] }}"
Content-Type: application/json
body_format: json
body: {"spec":{"cert_chain":{"cert_chain":["{{ lookup('file', '/usr/local/share/ca-certificates/root-ca.crt')| trim }}"]}}}
delegate_to: localhost
register: upload_trusted_ca_output
ignore_errors: true
- name: Upload VCENTER's KEY and CRT
uri:
url: "https://{{ vcenter_hostname }}/rest/vcenter/certificate-management/vcenter/tls"
method: PUT
validate_certs: no
return_content: yes
status_code: 200
timeout: 10
headers:
vmware-api-session-id: "{{ session_cookie.cookies['vmware-api-session-id'] }}"
Content-Type: application/json
body_format: json
body: {"spec":{"cert":"{{ lookup('file', '/tmp/{{ hostvars[inventory_hostname].vars.vcenter_hostname }}.crt')| trim }}","key":"{{ lookup('file', '/tmp/{{ hostvars[inventory_hostname].vars.vcenter_hostname }}-noRSA.key')| trim }}"}}
delegate_to: localhost
然后您必须等待大约 10 分钟以确保应用了证书,最后重新启动 VCENTER
可以在您的 VCENTER 中检查和测试 API REST 端点
https://VCENTER_IP/ui/#?extensionId=com.vmware.vsphere.client.h5.devcenter.apiexplorer&forceNavigate