6.11. 将云凭证与云清单搭配使用
在同步云清单时,可以使用云凭证。它们也可以与作业模板关联,并包含在运行时环境中,供 playbook 使用。支持以下云凭证:
6.11.1. OpenStack
以下示例 playbook 调用 nova_compute
Ansible OpenStack 云模块并需要凭证:
-
auth_url
-
username
-
password
-
项目名称
这些字段通过环境变量 OS_CLIENT_CONFIG_FILE
提供给 playbook,它指向控制器基于云凭证内容的 YAML 文件。以下示例 playbook 将 YAML 文件加载到 Ansible 变量空间中:
- OS_CLIENT_CONFIG_FILE 示例:
clouds: devstack: auth: auth_url: http://devstack.yoursite.com:5000/v2.0/ username: admin password: your_password_here project_name: demo
- Playbook 示例:
- hosts: all gather_facts: false vars: config_file: "{{ lookup('env', 'OS_CLIENT_CONFIG_FILE') }}" nova_tenant_name: demo nova_image_name: "cirros-0.3.2-x86_64-uec" nova_instance_name: autobot nova_instance_state: 'present' nova_flavor_name: m1.nano nova_group: group_name: antarctica instance_name: deceptacon instance_count: 3 tasks: - debug: msg="{{ config_file }}" - stat: path="{{ config_file }}" register: st - include_vars: "{{ config_file }}" when: st.stat.exists and st.stat.isreg - name: "Print out clouds variable" debug: msg="{{ clouds|default('No clouds found') }}" - name: "Setting nova instance state to: {{ nova_instance_state }}" local_action: module: nova_compute login_username: "{{ clouds.devstack.auth.username }}" login_password: "{{ clouds.devstack.auth.password }}"
6.11.2. Amazon Web Services
Amazon Web Services (AWS)云凭证在 playbook 执行过程中作为以下环境变量公开(在作业模板中,选择您的设置所需的云凭证):
-
AWS_ACCESS_KEY_ID
-
AWS-SECRET_ACCESS_KEY
每个 AWS 模块在通过控制器运行时都会隐式使用这些凭证,而无需设置 aws_access_key_id
或 aws_secret_access_key
模块选项。
6.11.3. Google
Google 云凭证在 playbook 执行过程中作为以下环境变量公开(在作业模板中,选择您的设置所需的云凭证):
-
GCE_EMAIL
-
GCE_PROJECT
-
GCE_CREDENTIALS_FILE_PATH
每个 Google 模块在通过控制器运行时都会隐式使用这些凭证,而无需设置 service_account_email
、project_id
或 pem_file
模块选项。
6.11.4. Azure
Azure 云凭证在 playbook 执行过程中作为以下环境变量公开(在作业模板中,选择您的设置所需的云凭证):
-
AZURE_SUBSCRIPTION_ID
-
AZURE_CERT_PATH
每个 Azure 模块在通过控制器运行时都会隐式使用这些凭证,而无需设置 subscription_id
或 management_cert_path
模块选项。
6.11.5. VMware
VMware 云凭证在 playbook 执行过程中作为以下环境变量公开(在作业模板中,选择您的设置所需的云凭证):
-
VMWARE_USER
-
VMWARE_PASSWORD
-
VMWARE_HOST
以下示例 playbook 演示了这些凭证的使用情况:
- vsphere_guest: vcenter_hostname: "{{ lookup('env', 'VMWARE_HOST') }}" username: "{{ lookup('env', 'VMWARE_USER') }}" password: "{{ lookup('env', 'VMWARE_PASSWORD') }}" guest: newvm001 from_template: yes template_src: linuxTemplate cluster: MainCluster resource_pool: "/Resources" vm_extra_config: folder: MyFolder