[英]How to deploy an openstack instance with ansible in a specific project
我一直在尝试将 openstack 中的实例部署到另一个项目,然后是我的用户默认项目。 执行此操作的唯一方法似乎是在auth:
设置中传递 project_name。 这工作正常,但与使用 cloud.yaml 配置并不真正兼容clouds:
设置甚至使用 openstack 提供的 admin-openrc.sh 文件。 ( admin-openrc.sh 似乎优先于auth:
中的任何设置。)
我正在使用当前的 openstack.cloud 集合 1.3.0 ( https://docs.ansible.com/ansible/latest/collections/openstack/cloud/index.ZFC35FDC70D5FC69D269883A822 ).C 一些模块可以选择指定一个project:
如网络模块,但一个服务器模块没有。
所以这部署在一个命名项目中:
- name: Create instances
server:
state: present
auth:
auth_url: "{{ auth_url}}"
username: "{{ username }}"
password: "{{ password }}"
project_name: "{{ project }}"
project_domain_name: "{{ domain_name }}"
user_domain_name: "{{ domain_name }}"
name: "test-instance-1"
image: "{{ image_name }}"
key_name: "{{ key_name }}"
timeout: 200
flavor: "{{ flavor }}"
network: "{{ network }}"
获取 admin-openrc.sh 后,它仅部署到您的默认项目 (OS_PROJECT_NAME=<project_name>
- name: Create instances
server:
state: present
name: "test-instance-1"
image: "{{ image_name }}"
key_name: "{{ key_name }}"
timeout: 200
flavor: "{{ flavor }}"
network: "{{ network }}
image: "{{ image_name }}"
key_name: "{{ key_name }}"
timeout: 200
flavor: "{{ flavor }}"
network: "{{ network }}"
当我取消设置 OS_PROJECT_NAME,但从 admin-openrc.sh 设置所有其他值时,我可以这样做,但这需要使用非默认设置(取消设置一个环境变量:
- name: Create instances
server:
state: present
auth:
project_name: "{{ project }}"
name: "test-instance-1"
image: "{{ image_name }}"
key_name: "{{ key_name }}"
timeout: 200
flavor: "{{ flavor }}"
network: "{{ network }}"
我正在寻找最有用的方法来为我的所有 openstack 模块使用特定授权 model(无论是 cloud.yaml 还是环境变量),同时仍然能够部署到特定项目。
(你应该升级到最后一个集合(1.5.3),或者它可能与1.3.0兼容)
您可以使用“服务器”任务 (openstack.cloud.server) 中的cloud
属性。 以下是您可以进行的操作:
clouds.yml
(这里是它的一部分内容)clouds:
tarantula:
auth:
auth_url: https://auth.cloud.myprovider.net/v3/
project_name: tarantula
project_id: the-id-of-my-project
user_domain_name: Default
project_domain_name: Default
username: my-username
password: my-password
regions :
- US
- EU1
- name: Create instances
server:
state: present
cloud: tarantula
region_name: EU1
name: "test-instance-1"
我们现在避免使用任何环境变量,并确保在 group_vars 的配置中设置项目 ID。 这是有效的,因为它不依赖于本地的 cloud.yml 文件。 我们基本上在 Ansible 中构建和验证 object 可以在整个部署过程中使用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.