Spec-Zone.ru › Ansible

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 — это набор пар «ключ-значение», где каждый ключ — имя атрибута, например id, а значение содержит соответствующее значение атрибута, например ddad2d86-02a6-444d-80ae-1cc2fb023784.

Определите ключи атрибутов id или name или любой набор ключей атрибутов, которые однозначно идентифицируют ресурс. Модуль завершается ошибкой, если несколько ресурсов соответствуют заданному набору атрибутов.

Полный список атрибутов можно найти в любом классе ресурсов внутри openstacksdk, например, файл openstack/compute/v2/server.py в https://opendev.org/openstack/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 конечной точки для извлечения из каталога служб.

Варианты:

  • "admin"
  • "internal"
  • "public" ← (по умолчанию)

non_updateable_attributes

список / элементы=строка

Список имён атрибутов, которые нельзя обновлять.

Если non_updateable_attributes не указан, все атрибуты в attributes будут сравниваться с существующим ресурсом во время обновлений.

Если заданы и updateable_attributes, и non_updateable_attributes, то только атрибуты, которые указаны в updateable_attributes, но не в non_updateable_attributes, будут учитываться во время обновлений.

region_name

строка

Имя региона.

sdk_log_level

строка

Уровень ведения журнала OpenStackSDK

Варианты:

  • "INFO" ← (по умолчанию)
  • "DEBUG"

sdk_log_path

строка

Путь к файлу журнала OpenStackSDK. Если пусто, журнал не записывается.

service

строка / обязательно

Служба OpenStack, к которой относится этот ресурс.

Примеры: block_storage, compute или network.

service должно быть именем службы lowercase OpenStack, используемой в openstacksdk. Список доступных служб доступен по адресу https://opendev.org/openstack/openstacksdk: Большинство подкаталогов в каталоге openstack соответствуют службам OpenStack, за исключением cloud, common и других вспомогательных каталогов.

state

строка

Необходимо ли создать ресурс present или absent.

Варианты:

  • "present" ← (по умолчанию)
  • "absent"

timeout

целое число

Сколько времени Ansible должно ждать запрашиваемого ресурса.

По умолчанию: 180

тип

строка / обязательно

Имя типа ресурса.

Примеры: ip, network, router или server.

тип должен быть именем класса ресурса openstacksdk. Классы ресурсов определены в папках служб openstacksdk. Например, перейдите на https://opendev.org/openstack/openstacksdk, перейдите в папку openstack, затем в любую папку службы, например, compute, выберите папку версии API, например, v2, и найдите все доступные классы ресурсов, например, Server в файлах *.py.

обновляемые_атрибуты

список / элементы=строка

Список имен атрибутов, которые можно обновить.

Если обновляемые_атрибуты не указаны, все атрибуты в атрибутах будут сравниваться с существующим ресурсом во время обновлений.

Если указаны как обновляемые_атрибуты, так и не_обновляемые_атрибуты, то при обновлении будут рассматриваться только атрибуты, перечисленные в обновляемые_атрибуты, но не в не_обновляемые_атрибуты.

проверка_сертификатов

псевдонимы: проверка

логическое

Нужно ли проверять запросы API SSL.

До Ansible 2.3 это значение по умолчанию было true.

Выбоы:

  • false
  • true

ожидание

логическое

Нужно ли Ansible ждать, пока ресурс достигнет целевого состояния.

Только подмножество ресурсов OpenStack сообщает о статусе. Ресурсы, которые не поддерживают обработку статуса, будут блокироваться бесконечно, если ожидание установлено в true.

Выбоы:

  • false ← (по умолчанию)
  • true

Примечания

Примечание

  • Этот модуль не поддерживает все ресурсы 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.

Возвращается: При успехе, когда состояние равно present.

Авторы

  • OpenStack Ansible SIG

Ссылки на коллекцию

  • Система отслеживания ошибок
  • Репозиторий (исходные коды)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API