os_server - Создание/удаление вычислительных инстансов из OpenStack
Новое в версии 2.0.
Описание
- Создание или удаление вычислительных инстансов из OpenStack.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- python >= 2.6
- python >= 2.7
- shade
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_timeout | Сколько времени должна ждать подсистема сокетов перед истечением времени ожидания для API-вызовов. Если этот параметр опущен, библиотека requests ничего не получит. | |
| auth | Словарь, содержащий информацию об авторизации, необходимую стратегии подключаемого модуля аутентификации облака. Для стандартного подключаемого модуля password он будет содержать auth_url, username, password, project_name и любую информацию о доменах, если облако их поддерживает. Для других подключаемых модулей этот параметр должен содержать параметры, необходимые этому подключаемому модулю аутентификации. Этот параметр не нужен, если указано имя облака или присутствуют переменные окружения OpenStack OS_*. | |
| auth_type | Имя подключаемого модуля аутентификации, который необходимо использовать. Если облако использует аутентификацию, отличную от парольной, здесь должно быть указано имя подключаемого модуля, а содержимое параметра auth должно быть соответствующим образом обновлено. | |
| auto_ip | По умолчанию: да | Обеспечить, чтобы у инстанса был общедоступный IP-адрес, независимо от того, как это делает облако псевдонимы: auto_floating_ip, public_ip |
| availability_zone | Зона доступности, в которой необходимо создать сервер. | |
| boot_from_volume | По умолчанию: нет | Должен ли инстанс загружаться с постоянного тома, созданного на основе предоставленного образа? Взаимоисключающий параметр с boot_volume. |
| boot_volume | По умолчанию: None | Имя или идентификатор тома, который необходимо использовать в качестве загрузочного тома. Подразумевает 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 | По умолчанию: нет | Включать или нет загрузку сервера с включённым config-драйвом |
| delete_fip (добавлено в 2.2) | По умолчанию: нет | Когда state отсутствует, а этот параметр равен true, любой выделенный IP-адрес, связанный с инстансом, будет удалён вместе с инстансом. |
| flavor | По умолчанию: 1 | Имя или идентификатор флейвера, в котором должен быть создан новый инстанс. Взаимоисключающий параметр с flavor_ram |
| flavor_include | Текст для фильтрации имён флейверов, в случае, например, Rackspace, где есть несколько флейверов с одинаковым объёмом оперативной памяти. flavor_include — это фильтр положительного соответствия — он должен присутствовать в имени флейвера. | |
| flavor_ram | По умолчанию: 1 | Минимальный объём оперативной памяти в МБ, который должен иметь флейвер, в котором необходимо создать новый инстанс. Взаимоисключающий параметр с flavor. |
| floating_ip_pools | По умолчанию: None | Имя пула выделенных IP-адресов, из которого нужно выбрать выделенный IP-адрес |
| floating_ips | По умолчанию: None | Список допустимых выделенных IP-адресов, которые уже существуют, для назначения этому узлу |
| image обязательно | Имя или идентификатор базового образа для загрузки. | |
| image_exclude | Текст для фильтрации имён образов, например, для HP, где есть несколько имён образов, соответствующих общим идентификационным частям. image_exclude — это фильтр отрицательного соответствия — это текст, который не должен присутствовать в имени образа. По умолчанию "(deprecated)" | |
| interface (добавлено в 2.3) |
| Тип URL-адреса конечной точки для получения из каталога сервисов. псевдонимы: endpoint_type |
| key | Путь к ключу клиента, который необходимо использовать в рамках SSL-транзакции. | |
| key_name | По умолчанию: None | Имя пары ключей, которое следует использовать при создании инстанса. |
| meta | По умолчанию: None | Список пар ключ-значение, которые должны быть предоставлены в качестве метаданных новому инстансу, или строка, содержащая список пар ключ-значение. Пример: meta: "key1=value1,key2=value2" |
| name обязательно | Имя, которое необходимо присвоить инстансу. | |
| network | По умолчанию: None | Имя или идентификатор сети, к которой необходимо подключить этот инстанс. Более простой вариант параметра nics, следует использовать только один из параметров network или nics. |
| nics | По умолчанию: None | Список сетей, к которым должен быть подключён интерфейс инстанса. Сети могут быть указаны по идентификатору/имени сети или идентификатору/имени порта. Также можно указать строку, содержащую список (сеть/порт)-(идентификатор/имя). Пример: nics: "net-id=uuid-1,port-name=myport" Следует использовать только один из параметров network или nics. |
| region_name | Имя региона. | |
| reuse_ips (добавлено в 2.2) | По умолчанию: да | Когда auto_ip имеет значение true, а этот параметр — true, код auto_ip попытается повторно использовать свободные выделенные IP-адреса в проекте перед созданием нового. Важно отметить, что одновременное выполнение этого действия невозможно, поэтому если ваш сценарий предполагает одновременное создание серверов, настоятельно рекомендуется установить этот параметр в значение false и удалить выделенный IP-адрес, связанный с сервером, при удалении сервера с помощью delete_fip. |
| scheduler_hints (добавлено в 2.1) | По умолчанию: None | Произвольные пары ключ/значение для планировщика для пользовательских целей |
| security_groups | По умолчанию: None | Имена групп безопасности, к которым должен быть добавлен инстанс. Это может быть список YAML или строка, разделённая запятыми. |
| state |
| Должен ли ресурс присутствовать или отсутствовать. |
| terminate_volume | По умолчанию: нет | Если true, тотом будет удалён при удалении инстанса (если инстанс загружается с тома) |
| timeout | По умолчанию: 180 | Время, в течение которого модуль будет ожидать, пока инстанс не перейдёт в активное состояние. |
| userdata | По умолчанию: None | Необработанные данные, которые предоставляются инстансу. |
| verify |
| Необходимо ли проверять SSL API-запросы. До версии 2.3 по умолчанию было True. псевдонимы: validate_certs |
| volume_size | Размер тома в ГБ, который необходимо создать, если загрузка происходит с тома на основе образа. | |
| volumes | По умолчанию: [] | Список именованных или идентифицированных томов, которые должны быть подключены к инстансу. |
| wait |
| Следует ли модулю ожидать создания инстанса. |
Примечания
Примечание
- Стандартные переменные окружения 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 %}
Статус
Этот модуль помечен как превью, что означает, что его интерфейс не гарантируется обратной совместимостью.
Автор
- 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.5/modules/os_server_module.html