openstack.cloud.server – Создание/удаление вычислительных экземпляров из OpenStack
Примечание
Этот плагин входит в коллекцию openstack.cloud (версия 1.2.1).
Для его установки используйте: ansible-galaxy collection install openstack.cloud.
Для использования в книге задач укажите: openstack.cloud.server.
Описание
- Создание или удаление вычислительных экземпляров из OpenStack.
Требования
Ниже приведены требования, необходимые на хосте, на котором выполняется этот модуль.
- openstacksdk
- openstacksdk >= 0.12.0
- python >= 3.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| api_timeout целое число | Сколько времени должна ждать сокет-слой перед истечением времени ожидания для API-запросов. Если этот параметр опущен, ничего не будет передано библиотеке requests. | ||
| auth словарь | Словарь, содержащий информацию об авторизации, необходимую стратегии плагина авторизации облака. Для плагина по умолчанию password он будет содержать auth_url, username, password, project_name и любую информацию о доменах (например, user_domain_name или project_domain_name), если облако их поддерживает. Для других плагинов этот параметр должен содержать параметры, требуемые этим плагином авторизации. Этот параметр не нужен, если указано имя облака или присутствуют переменные среды OpenStack OS_*. | ||
| auth_type строка | Имя плагина авторизации для использования. Если облако использует что-то кроме парольной аутентификации, имя плагина должно быть указано здесь, а содержимое параметра auth должно быть обновлено соответственно. | ||
| auto_ip логическое значение |
| Обеспечить наличие публичного IP-адреса экземпляра, как хочет облако псевдонимы: auto_floating_ip, public_ip | |
| availability_zone строка | Зона доступности для создания сервера. | ||
| boot_from_volume логическое значение |
| Экземпляр должен загружаться с постоянного тома, созданного на основе предоставленного образа. Взаимоисключительно с boot_volume. | |
| boot_volume строка | Имя или ID тома для использования в качестве тома загрузки. Подразумевает boot_from_volume. Взаимоисключительно с image и boot_from_volume. псевдонимы: root_volume | ||
| ca_cert строка | Путь к пакету сертификатов CA, который можно использовать для проверки SSL API-запросов. псевдонимы: cacert | ||
| client_cert строка | Путь к клиенту сертификату для использования в рамках SSL-транзакции. псевдонимы: cert | ||
| client_key строка | Путь к клиенту ключу для использования в рамках SSL-транзакции. псевдонимы: key | ||
| cloud сырые данные | Именованное облако или конфигурация облака для работы. Если cloud — строка, она ссылается на именованную конфигурацию облака, определенную в файле OpenStack clouds.yaml. Предоставляет значения по умолчанию для auth и auth_type. Этот параметр не нужен, если указан auth или присутствуют переменные среды OpenStack OS_* . Если cloud — словарь, он содержит полную конфигурацию облака, как в разделе clouds.yaml. | ||
| config_drive логическое значение |
| Включить ли загрузку сервера с включенным диском конфигурации | |
| delete_fip логическое значение |
| Когда state отсутствует и этот параметр имеет значение true, любой плавающий IP-адрес, связанный с экземпляром, будет удален вместе с экземпляром. | |
| flavor строка | Имя или идентификатор флейвара, в котором должен быть создан новый экземпляр. Точно один из flavor и flavor_ram должен быть определен, когда state=present. | ||
| flavor_include строка | Текст для фильтрации имён флейваров, например в случае Rackspace, где есть несколько флейваров с одинаковым объёмом оперативной памяти. flavor_include — это фильтр положительного соответствия — он должен присутствовать в имени флейвара. | ||
| flavor_ram целое число | Минимальный объём оперативной памяти в МБ, который должен иметь флейвар, в котором должен быть создан новый экземпляр. Точно один из flavor и flavor_ram должен быть определен, когда state=present. | ||
| floating_ip_pools список / элементы=строка | Имя пула плавающих IP-адресов, из которого выбрать плавающий IP-адрес | ||
| floating_ips список / элементы=строка | Список допустимых предварительно существующих плавающих IP-адресов, которые нужно назначить этому узлу | ||
| image строка | Имя или идентификатор базового образа для загрузки. Требуется при boot_from_volume=true
| ||
| image_exclude строка | По умолчанию: "(устаревшее)" | Текст для фильтрации имён образов, например в случае HP, где есть несколько имён образов, соответствующих общим идентификационным частям. image_exclude — фильтр отрицательного соответствия — это текст, который не должен присутствовать в имени образа. | |
| interface строка |
| Тип URL конечной точки для извлечения из каталога сервисов. псевдонимы: endpoint_type | |
| key_name строка | Имя пары ключей, которое нужно использовать при создании экземпляра | ||
| meta сырые данные | Список пар ключ-значение, которые должны быть предоставлены в качестве метаданных новому экземпляру, или строка, содержащая список пар ключ-значение. Пример: meta: "key1=value1,key2=value2" | ||
| name строка / обязательный | Имя, которое должно быть задано экземпляру. Также возможно указать ID экземпляра вместо его имени, если state равен absent. | ||
| network строка | Имя или ID сети, к которой должен быть подключён этот экземпляр. Более простая версия параметра nics, должен быть предоставлен только один из параметров network или nics. | ||
| nics список / элементы=сырые данные | Список сетей, к которым должен быть подключен интерфейс экземпляра. Сети могут быть указаны с помощью net-id/net-name/port-id или port-name. Также можно указать строку, содержащую список (net/port)-(id/name). Пример: nics: "net-id=uuid-1,port-name=myport" Должен быть предоставлен только один из параметров network или nics. | ||
| tag строка | «Тэг» для конкретного порта, передаваемый через метаданные. Пример: tag: test_tag | ||
| region_name строка | Имя региона. | ||
| reuse_ips логическое значение |
| Если auto_ip имеет значение true и этот параметр имеет значение true, код auto_ip попытается повторно использовать неназначенные плавающие IP-адреса в проекте, прежде чем создавать новый. Важно отметить, что сделать это безопасно одновременно невозможно, поэтому, если ваш сценарий предполагает одновременное создание серверов, рекомендуется установить это значение в false и удалить плавающий IP-адрес, связанный с сервером, при удалении сервера с помощью delete_fip. | |
| scheduler_hints словарь | Произвольные пары ключ/значение для планировщика для использования по своему усмотрению | ||
| security_groups список / элементы=строка | По умолчанию: ["default"] | Имена групп безопасности, к которым должен быть добавлен экземпляр. Это может быть список YAML или строка, разделённая запятыми. | |
| state строка |
| Ресурс должен быть присутствующим или отсутствующим. | |
| terminate_volume логическое значение |
| Если yes, удалить том при удалении экземпляра (если загружен с тома) | |
| timeout целое число | По умолчанию: 180 | Время, которое модуль должен ждать, пока экземпляр не перейдет в активное состояние. | |
| userdata строка | Непонятный блок данных, который предоставляется экземпляру псевдонимы: user_data | ||
| validate_certs логическое значение |
| Нужно ли проверять SSL API-запросы. До Ansible 2.3 по умолчанию yes.псевдонимы: verify | |
| volume_size целое число | Размер создаваемого тома в ГБ, если загрузка с тома на основе образа. | ||
| volumes список / элементы=строка | По умолчанию: [] | Список предварительно существующих имён или идентификаторов томов для подключения к экземпляру | |
| wait логическое значение |
| Должен ли модуль ждать создания экземпляра. | |
Примечания
Примечание
- Можно использовать стандартные переменные среды OpenStack, такие как
OS_USERNAME, вместо явного указания значений. - Информация об авторизации управляется openstacksdk, что означает, что значения могут поступать из файла конфигурации yaml в /etc/ansible/openstack.yaml, /etc/openstack/clouds.yaml или ~/.config/openstack/clouds.yaml, затем из стандартных переменных среды, и, наконец, из явных параметров в пьесах. Дополнительную информацию можно найти по адресу https://docs.openstack.org/openstacksdk/
Примеры
- name: Create a new instance and attaches to a network and passes metadata to the instance
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
timeout: 200
flavor: 4
nics:
- net-id: 34605f38-e52a-25d2-b6ec-754a13ffb723
- net-name: another_network
meta:
hostname: test1
group: uge_master
# Create a new instance in HP Cloud AE1 region availability zone az2 and
# automatically assigns a floating IP
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: username
password: Equality7-2521
project_name: username-project1
name: vm1
region_name: region-b.geo-1
availability_zone: az2
image: 9302692b-b787-4b52-a3a6-daebb79cb498
key_name: test
timeout: 200
flavor: 101
security_groups: default
auto_ip: yes
# Create a new instance in named cloud mordred availability zone az2
# and assigns a pre-known floating IP
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
state: present
cloud: mordred
name: vm1
availability_zone: az2
image: 9302692b-b787-4b52-a3a6-daebb79cb498
key_name: test
timeout: 200
flavor: 101
floating_ips:
- 12.34.56.79
# Create a new instance with 4G of RAM on Ubuntu Trusty, ignoring
# deprecated images
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
cloud: mordred
region_name: region-b.geo-1
image: Ubuntu Server 14.04
image_exclude: deprecated
flavor_ram: 4096
# Create a new instance with 4G of RAM on Ubuntu Trusty on a Performance node
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
cloud: rax-dfw
state: present
image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
flavor_ram: 4096
flavor_include: Performance
# Creates a new instance and attaches to multiple network
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance with a string
openstack.cloud.server:
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
timeout: 200
flavor: 4
nics: "net-id=4cb08b20-62fe-11e5-9d70-feff819cdc9f,net-id=542f0430-62fe-11e5-9d70-feff819cdc9f..."
- name: Creates a new instance and attaches to a network and passes metadata to the instance
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
timeout: 200
flavor: 4
nics:
- net-id: 34605f38-e52a-25d2-b6ec-754a13ffb723
- net-name: another_network
meta: "hostname=test1,group=uge_master"
- name: Creates a new instance and attaches to a specific network
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
timeout: 200
flavor: 4
network: another_network
# Create a new instance with 4G of RAM on a 75G Ubuntu Trusty volume
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
cloud: mordred
region_name: ams01
image: Ubuntu Server 14.04
flavor_ram: 4096
boot_from_volume: True
volume_size: 75
# Creates a new instance with 2 volumes attached
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
cloud: mordred
region_name: ams01
image: Ubuntu Server 14.04
flavor_ram: 4096
volumes:
- photos
- music
# Creates a new instance with provisioning userdata using Cloud-Init
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
image: "Ubuntu Server 14.04"
flavor: "P-1"
network: "Production"
userdata: |
#cloud-config
chpasswd:
list: |
ubuntu:{{ default_password }}
expire: False
packages:
- ansible
package_upgrade: true
# Creates a new instance with provisioning userdata using Bash Scripts
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
image: "Ubuntu Server 14.04"
flavor: "P-1"
network: "Production"
userdata: |
{%- raw -%}#!/bin/bash
echo " up ip route add 10.0.0.0/8 via {% endraw -%}{{ intra_router }}{%- raw -%}" >> /etc/network/interfaces.d/eth0.conf
echo " down ip route del 10.0.0.0/8" >> /etc/network/interfaces.d/eth0.conf
ifdown eth0 && ifup eth0
{% endraw %}
# Create a new instance with server group for (anti-)affinity
# server group ID is returned from openstack.cloud.server_group module.
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
state: present
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
flavor: 4
scheduler_hints:
group: f5c8c61a-9230-400a-8ed2-3b023c190a7f
# Create an instance with "tags" for the nic
- name: Create instance with nics "tags"
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
flavor: 4
nics:
- port-name: net1_port1
tag: test_tag
- net-name: another_network
# Deletes an instance via its ID
- name: remove an instance
hosts: localhost
tasks:
- name: remove an instance
openstack.cloud.server:
name: abcdef01-2345-6789-0abc-def0123456789
state: absent
Авторы
- Рабочая группа OpenStack Ansible SIG
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/openstack/cloud/server_module.html