Spec-Zone.ru › Ansible

Модуль openstack.cloud.resource — управление ресурсом облака OpenStack

Примечание

Этот модуль входит в коллекцию openstack.cloud (версия 2.5.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

integer

Как долго сокетный уровень должен ждать ответа перед истечением времени ожидания вызовов API. Если этот параметр не указан, библиотеке requests ничего не передаётся.

attributes

dictionary / обязательный

Атрибуты ресурса, определённые в классах ресурсов openstacksdk.

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

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

Полный список атрибутов можно найти в любом классе ресурсов openstacksdk, например в файле openstack/compute/v2/server.py в репозитории https://opendev.org/openstack/openstacksdk/, где описаны атрибуты сервера.

auth

dictionary

Словарь с данными аутентификации, необходимыми выбранному плагину аутентификации облака. Для используемого по умолчанию плагина password здесь указываются auth_url, username, password, project_name и сведения о доменах (например, user_domain_name или project_domain_name), если облако их поддерживает. Для других плагинов этот параметр должен содержать необходимые им значения. Этот параметр не требуется, если указано именованное облако или заданы переменные окружения OpenStack OS_*.

auth_type

string

Имя используемого плагина аутентификации. Если облако использует не парольную аутентификацию, укажите здесь имя плагина и соответствующим образом обновите содержимое параметра auth.

ca_cert

псевдонимы: cacert

string

Путь к пакету сертификатов CA, который можно использовать для проверки запросов API SSL.

client_cert

псевдонимы: cert

string

Путь к сертификату клиента, который будет использоваться при SSL-соединении.

client_key

псевдонимы: key

string

Путь к ключу клиента, который будет использоваться при SSL-соединении.

cloud

any

Именованное облако или конфигурация облака, с которым нужно работать. Если cloud — строка, она указывает на конфигурацию именованного облака, заданную в файле clouds.yaml. Параметр задаёт значения по умолчанию для auth и auth_type. Он не требуется, если указан auth или заданы переменные окружения OpenStack OS_*. Если cloud — словарь, он содержит полную конфигурацию облака, аналогичную разделу файла clouds.yaml.

interface

псевдонимы: endpoint_type

string

Тип URL конечной точки, получаемой из каталога служб.

Варианты:

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

non_updateable_attributes

list / elements=string

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

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

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

region_name

string

Имя региона.

sdk_log_level

string

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

Варианты:

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

sdk_log_path

string

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

service

string / обязательный

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

Например, block_storage, compute или network.

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

state

string

Должен ли ресурс быть present или absent.

Варианты:

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

timeout

integer

Как долго Ansible должен ждать запрошенный ресурс.

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

type

string / обязательный

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

Например, ip, network, router или server.

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

updateable_attributes

list / elements=string

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

Если updateable_attributes не указан, при обновлении все атрибуты из attributes сравниваются с существующим ресурсом.

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

validate_certs

псевдонимы: verify

boolean

Следует ли проверять запросы API SSL.

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

Варианты:

  • false
  • true

wait

boolean

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

Статус возвращает только часть ресурсов OpenStack. Если для ресурса, не поддерживающего обработку статуса, установить wait в 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

Возвращаемые значения

Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

resource

dictionary

Словарь с описанием найденного (и, возможно, изменённого) ресурса облака OpenStack.

Возвращается: При успешном выполнении, если state равно present.

Авторы

  • Специальная группа Ansible по OpenStack

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

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

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/openstack/cloud/resource_module.html

Spec-Zone.ru

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