openstack.cloud.resource модуль — Управление ресурсом OpenStack облака
Примечание
Этот модуль является частью коллекции openstack.cloud (версия 2.2.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install openstack.cloud. Для использования этого модуля требуются дополнительные зависимости. Подробнее см. Требования.
Чтобы использовать его в книге задач, укажите: openstack.cloud.resource.
Описание
- Создание, обновление и удаление ресурса OpenStack облака.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- python >= 3.6
- openstacksdk >= 1.0.0
Параметры
Параметр | Комментарии |
|---|---|
api_timeout целое число | Сколько времени должна ждать транспортная сокет-прослойка, прежде чем истечёт время ожидания для вызовов API. Если это опущено, ничего не будет передано в библиотеку requests. |
attributes словарь / обязательно | Атрибуты ресурса, определённые в классах ресурсов openstacksdk. attributes — это набор пар «ключ-значение», где каждый ключ — имя атрибута, например Определите ключи атрибутов Полный список атрибутов можно найти в любом классе ресурсов внутри openstacksdk, например, файл |
auth словарь | Словарь, содержащий информацию об авторизации, необходимую стратегии плагина авторизации облака. Для стандартного плагина password он будет содержать auth_url, username, password, project_name и любую информацию о доменах (например, user_domain_name или project_domain_name), если облако их поддерживает. Для других плагинов этот параметр должен содержать необходимые параметры плагина авторизации. Этот параметр не нужен, если указано имя облака или присутствуют переменные окружения OpenStack OS_*. |
auth_type строка | Имя плагина авторизации, который нужно использовать. Если облако использует что-то кроме парольной аутентификации, здесь должно быть указано имя плагина, а содержимое параметра auth должно быть соответствующим образом обновлено. |
ca_cert псевдонимы: cacert строка | Путь к пакету сертификатов CA, который можно использовать для проверки запросов API SSL. |
client_cert псевдонимы: cert строка | Путь к клиенту сертификату, который нужно использовать в рамках SSL-транзакции. |
client_key псевдонимы: key строка | Путь к ключу клиента, который нужно использовать в рамках SSL-транзакции. |
cloud любой | Именованное облако или конфигурация облака для работы. Если cloud — строка, она ссылается на конфигурацию именованного облака, определённую в файле OpenStack clouds.yaml. Предоставляет значения по умолчанию для auth и auth_type. Этот параметр не нужен, если задан auth или присутствуют переменные окружения OpenStack OS_*. Если cloud — словарь, он содержит полную конфигурацию облака, как в секции clouds.yaml. |
interface псевдонимы: endpoint_type строка | Тип URL конечной точки для извлечения из каталога служб. Варианты:
|
non_updateable_attributes список / элементы=строка | Список имён атрибутов, которые нельзя обновлять. Если non_updateable_attributes не указан, все атрибуты в attributes будут сравниваться с существующим ресурсом во время обновлений. Если заданы и updateable_attributes, и non_updateable_attributes, то только атрибуты, которые указаны в updateable_attributes, но не в non_updateable_attributes, будут учитываться во время обновлений. |
region_name строка | Имя региона. |
sdk_log_level строка | Уровень ведения журнала OpenStackSDK Варианты:
|
sdk_log_path строка | Путь к файлу журнала OpenStackSDK. Если пусто, журнал не записывается. |
service строка / обязательно | Служба OpenStack, к которой относится этот ресурс. Примеры: service должно быть именем службы |
state строка | Необходимо ли создать ресурс Варианты:
|
timeout целое число | Сколько времени Ansible должно ждать запрашиваемого ресурса. По умолчанию: |
тип строка / обязательно | Имя типа ресурса. Примеры: тип должен быть именем класса ресурса openstacksdk. Классы ресурсов определены в папках служб openstacksdk. Например, перейдите на https://opendev.org/openstack/openstacksdk, перейдите в папку |
обновляемые_атрибуты список / элементы=строка | Список имен атрибутов, которые можно обновить. Если обновляемые_атрибуты не указаны, все атрибуты в атрибутах будут сравниваться с существующим ресурсом во время обновлений. Если указаны как обновляемые_атрибуты, так и не_обновляемые_атрибуты, то при обновлении будут рассматриваться только атрибуты, перечисленные в обновляемые_атрибуты, но не в не_обновляемые_атрибуты. |
проверка_сертификатов псевдонимы: проверка логическое | Нужно ли проверять запросы API SSL. До Ansible 2.3 это значение по умолчанию было Выбоы:
|
ожидание логическое | Нужно ли Ansible ждать, пока ресурс достигнет целевого состояния. Только подмножество ресурсов OpenStack сообщает о статусе. Ресурсы, которые не поддерживают обработку статуса, будут блокироваться бесконечно, если ожидание установлено в Выбоы:
|
Примечания
Примечание
- Этот модуль не поддерживает все ресурсы OpenStack. Обработка ресурсов должна следовать структуре CRUD openstacksdk, используя и предоставляя функции
<service>.<type>s,<service>.find_<type>,<service>.create_<type>,<service>.update_<type>и<service>.delete_<type>. Модуль завершится ошибкой перед применением каких-либо изменений, если эти функции не найдены. - Можно использовать стандартные переменные окружения OpenStack, такие как
OS_USERNAME, вместо явного указания значений. - Информация об авторизации управляется openstacksdk, что означает, что значения могут быть взяты из файла конфигурации yaml в /etc/ansible/openstack.yaml, /etc/openstack/clouds.yaml или ~/.config/openstack/clouds.yaml, затем из стандартных переменных окружения и, наконец, из явных параметров в задачах. Дополнительную информацию можно найти по адресу https://docs.openstack.org/openstacksdk/
Примеры
- name: Create external network
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: network
attributes:
name: ansible_network_external
is_router_external: true
wait: true
register: network_external
- name: Create external subnet
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: subnet
attributes:
cidr: 10.6.6.0/24
ip_version: 4
name: ansible_external_subnet
network_id: "{{ network_external.resource.id }}"
register: subnet_external
- name: Create external port
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: port
attributes:
name: ansible_port_external
network_id: "{{ network_external.resource.id }}"
fixed_ips:
- ip_address: 10.6.6.50
non_updateable_attributes:
- fixed_ips
- name: Create internal network
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: network
attributes:
name: ansible_network_internal
is_router_external: false
wait: true
register: network_internal
- name: Create internal subnet
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: subnet
attributes:
cidr: 10.7.7.0/24
ip_version: 4
name: ansible_internal_subnet
network_id: "{{ network_internal.resource.id }}"
register: subnet_internal
- name: Create internal port
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: port
attributes:
name: ansible_port_internal
network_id: "{{ network_internal.resource.id }}"
fixed_ips:
- ip_address: 10.7.7.100
subnet_id: "{{ subnet_internal.resource.id }}"
register: port_internal
- name: Create router
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: router
attributes:
name: ansible_router
external_gateway_info:
enable_snat: true
external_fixed_ips:
- ip_address: 10.6.6.10
subnet_id: "{{ subnet_external.resource.id }}"
network_id: "{{ network_external.resource.id }}"
wait: true
- name: Attach router to internal subnet
openstack.cloud.router:
cloud: devstack-admin
name: ansible_router
network: "{{ network_external.resource.id }}"
external_fixed_ips:
- ip: 10.6.6.10
subnet: "{{ subnet_external.resource.id }}"
interfaces:
- net: "{{ network_internal.resource.id }}"
subnet: "{{ subnet_internal.resource.id }}"
portip: 10.7.7.1
- name: Create floating ip address
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: ip
attributes:
name: 10.6.6.150
floating_ip_address: 10.6.6.150
floating_network_id: "{{ network_external.resource.id }}"
port_id: "{{ port_internal.resource.id }}"
register: ip
- name: List images
openstack.cloud.resources:
cloud: devstack-admin
service: image
type: image
register: images
- name: Identify CirrOS image id
set_fact:
image_id: "{{
images.resources|community.general.json_query(query)|first }}"
vars:
query: "[?starts_with(name, 'cirros')].id"
- name: List compute flavors
openstack.cloud.resources:
cloud: devstack-admin
service: compute
type: flavor
register: flavors
- name: Identify m1.tiny flavor id
set_fact:
flavor_id: "{{
flavors.resources|community.general.json_query(query)|first }}"
vars:
query: "[?name == 'm1.tiny'].id"
- name: Create server
openstack.cloud.resource:
cloud: devstack-admin
service: compute
type: server
attributes:
name: ansible_server
image_id: "{{ image_id }}"
flavor_id: "{{ flavor_id }}"
networks:
- uuid: "{{ network_internal.resource.id }}"
port: "{{ port_internal.resource.id }}"
non_updateable_attributes:
- name
- image_id
- flavor_id
- networks
wait: true
- name: Detach floating ip address
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.150
port_id: !!null
- name: Delete server
openstack.cloud.resource:
cloud: devstack-admin
service: compute
type: server
attributes:
name: ansible_server
state: absent
wait: true
- name: Delete floating ip address
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.150
state: absent
- name: Detach router from internal subnet
openstack.cloud.router:
cloud: devstack-admin
name: ansible_router
network: "{{ network_external.resource.id }}"
external_fixed_ips:
- ip: 10.6.6.10
subnet: "{{ subnet_external.resource.id }}"
interfaces: []
- name: Delete router
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: router
attributes:
name: ansible_router
state: absent
wait: true
- name: Delete internal port
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: port
attributes:
name: ansible_port_internal
state: absent
- name: Delete internal subnet
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: subnet
attributes:
name: ansible_internal_subnet
state: absent
- name: Delete internal network
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: network
attributes:
name: ansible_network_internal
state: absent
wait: true
- name: Delete external port
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: port
attributes:
name: ansible_port_external
state: absent
- name: Delete external subnet
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: subnet
attributes:
name: ansible_external_subnet
state: absent
- name: Delete external network
openstack.cloud.resource:
cloud: devstack-admin
service: network
type: network
attributes:
name: ansible_network_external
state: absent
wait: true
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
Ключ | Описание |
|---|---|
ресурс словарь | Словарь, описывающий идентифицированный (и, возможно, изменённый) ресурс OpenStack. Возвращается: При успехе, когда состояние равно |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/openstack/cloud/resource_module.html