os_server - Создание/удаление вычислительных экземпляров из OpenStack
Новое в версии 2.0.
Описание
- Создание или удаление вычислительных экземпляров из OpenStack.
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- openstacksdk
- python >= 2.7
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_timeout | Сколько времени должна ждать сокетная часть прежде чем истечь время ожидания для вызовов API. Если это опущено, то ничего не будет передано библиотеке requests. | |
| auth | Словарь, содержащий информацию об авторизации, необходимую стратегии плагина авторизации облака. Для плагина по умолчанию password, он будет содержать auth_url, username, password, project_name и любую информацию о доменах, если облако их поддерживает. Для других плагинов этот параметр должен содержать любые необходимые параметры плагина авторизации. Этот параметр не нужен, если указано имя облака или присутствуют переменные среды OpenStack OS_*. | |
| auth_type | Имя плагина авторизации для использования. Если облако использует что-то, кроме аутентификации по паролю, то здесь должно быть указано имя плагина, а содержимое параметра auth должно быть соответствующим образом обновлено. | |
| auto_ip bool |
| Убедиться, что экземпляр имеет общедоступный IP-адрес, так как хочет облако. Псевдонимы: auto_floating_ip, public_ip |
| availability_zone | Зона доступности для создания сервера. | |
| boot_from_volume bool |
| Экземпляр должен загружаться с постоянного тома, созданного на основе предоставленного образа. Взаимоисключающий с boot_volume. |
| boot_volume | Имя или идентификатор тома, который необходимо использовать в качестве тома для загрузки. Подразумевает boot_from_volume. Взаимоисключающий с image и boot_from_volume. Псевдонимы: root_volume | |
| cacert | Путь к пакету сертификатов CA, который может быть использован для проверки запросов SSL API. | |
| cert | Путь к клиенту сертификата для использования в ходе транзакции SSL. | |
| cloud | Наименованное облако или конфигурация облака для работы. Если cloud — строка, то она ссылается на конфигурацию облака, определенную в файле OpenStack clouds.yaml. Обеспечивает значения по умолчанию для auth и auth_type. Этот параметр не нужен, если указан auth или присутствуют переменные среды OpenStack OS_*. Если cloud — словарь, то он содержит полную конфигурацию облака, как в разделе clouds.yaml. | |
| config_drive bool |
| Включить загрузку сервера с включённым конфигурационным диском |
| delete_fip bool (добавлено в 2.2) |
| Когда state отсутствует и этот параметр имеет значение true, любой плавающий IP-адрес, связанный с экземпляром, будет удален вместе с экземпляром. |
| flavor | По умолчанию: 1 | Имя или идентификатор флейвера, в котором должен быть создан новый экземпляр. Взаимоисключающий с flavor_ram |
| flavor_include | Текст для фильтрации имён флейверов, в случае, таких как Rackspace, где есть несколько флейверов с одинаковым объёмом оперативной памяти. flavor_include - это фильтр по точному совпадению - он должен присутствовать в имени флейвера. | |
| flavor_ram | По умолчанию: 1 | Минимальный объем оперативной памяти в МБ, которым должен обладать флейвер, в котором необходимо создать новый экземпляр. Взаимоисключающий с flavor. |
| floating_ip_pools | Имя пула плавающих IP-адресов, из которого нужно выбрать плавающий IP-адрес. | |
| floating_ips | Список допустимых существующих плавающих IP-адресов для назначения этому узлу. | |
| image обязательно | Имя или идентификатор базового образа для загрузки. | |
| image_exclude | Текст для фильтрации имён образов, например, в случае HP, где есть несколько имен образов, совпадающих с общими идентифицирующими частями. image_exclude — фильтр по отрицательному совпадению — это текст, которого не должно быть в имени образа. По умолчанию "(устарело)" | |
| interface (добавлено в 2.3) |
| Тип URL конечной точки для извлечения из каталога служб. Псевдонимы: endpoint_type |
| key | Путь к ключу клиента для использования в ходе транзакции SSL. | |
| key_name | Имя пары ключей, которое должно быть использовано при создании экземпляра. | |
| meta | Список пар ключ-значение, которые должны быть предоставлены в качестве метаданных новому экземпляру или строка, содержащая список пар ключ-значение. Пример: meta: "key1=value1,key2=value2" | |
| name обязательно | Имя, которое должно быть присвоено экземпляру | |
| network | Имя или идентификатор сети, к которой необходимо подключить этот экземпляр. Более простой вариант параметра 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 должен быть указан. | |
| region_name | Имя региона. | |
| reuse_ips bool (добавлено в 2.2) |
| Когда auto_ip имеет значение true и этот параметр имеет значение true, код auto_ip попытается повторно использовать неназначенные плавающие IP-адреса в проекте перед созданием нового. Важно отметить, что сделать это безопасно одновременно невозможно, поэтому если ваш сценарий предполагает одновременное создание серверов, рекомендуется установить это значение в false и удалить плавающий IP-адрес, связанный с сервером, когда сервер удаляется с помощью delete_fip. |
| scheduler_hints (добавлено в 2.1) | Произвольные пары ключ/значение для планировщика для пользовательского использования | |
| security_groups | Имена групп безопасности, к которым должен быть добавлен экземпляр. Может быть списком YAML или строкой, разделённой запятыми. | |
| state |
| Должен ли ресурс присутствовать или отсутствовать. |
| terminate_volume bool |
| Если yes, удалить том при удалении экземпляра (если загружается с тома) |
| timeout | По умолчанию: 180 | Время, которое модуль должен ждать, пока экземпляр не перейдет в активное состояние. |
| userdata | Непрозрачный блок данных, который становится доступным для экземпляра | |
| verify bool |
| Нужно ли проверять запросы API SSL. До версии 2.3 по умолчанию True. Псевдонимы: validate_certs |
| volume_size | Размер создаваемого тома в ГБ, если загрузка происходит с тома на основе образа. | |
| volumes | По умолчанию: [] | Список предварительно существующих томов, имена или идентификаторы которых необходимо подключить к экземпляру |
| wait bool |
| Если модуль должен ждать создания экземпляра. |
Примечания
Примечание
- Можно использовать стандартные переменные окружения OpenStack, такие как
OS_USERNAME, вместо явных значений. - Информация об авторизации управляется os-client-config, что означает, что значения могут быть взяты из файла конфигурации yaml в /etc/ansible/openstack.yaml, /etc/openstack/clouds.yaml или ~/.config/openstack/clouds.yaml, затем из стандартных переменных окружения, и, наконец, из явных параметров в задачах. Дополнительную информацию можно найти по адресу http://docs.openstack.org/developer/os-client-config
Примеры
- name: Create a new instance and attaches to a network and passes metadata to the instance
os_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
os_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
os_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
os_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
os_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
os_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
os_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
os_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
os_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
os_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
os_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
os_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 %}
Статус
Этот модуль помечен как превью, что означает, что он не гарантирует обратной совместимости интерфейса.
Техническое обслуживание
Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. Подробнее см. Техническое обслуживание и поддержка модулей.
Список других модулей, поддерживаемых сообществом Ansible, см. здесь.
Автор
- Monty Taylor (@emonty)
Подсказка
Если вы обнаружите какие-либо проблемы в этом руководстве, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/os_server_module.html