os_server - Создание/удаление вычислительных экземпляров из OpenStack
Новая версия 2.0.
Описание
- Создание или удаление вычислительных экземпляров из OpenStack.
Требования (к хосту, на котором выполняется модуль)
- python >= 2.6
- python >= 2.7
- python-novaclient
- shade
Параметры
| параметр | обязательно | значение по умолчанию | выбор | комментарии |
|---|---|---|---|---|
| api_timeout | нет | None | Сколько времени должна ожидать сокет-слой перед истечением времени ожидания для вызовов API. Если это опущено, ничего не будет передано в библиотеку запросов. | |
| auth | нет | Словарь, содержащий информацию об авторизации, необходимую для стратегии подключаемого модуля авторизации облака. Для стандартного подключаемого модуля password он будет содержать auth_url, username, password, project_name и любую информацию о доменах, если облако их поддерживает. Для других подключаемых модулей этот параметр должен содержать необходимые параметры подключаемого модуля авторизации. Этот параметр не нужен, если указано имя облака или присутствуют переменные окружения OpenStack OS_*. | ||
| auth_type | нет | password | Имя подключаемого модуля авторизации для использования. Если облако использует что-то другое, кроме аутентификации по паролю, имя подключаемого модуля должно быть указано здесь, а содержимое параметра 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 | нет | None | Путь к пакету сертификатов CA, который может использоваться для проверки запросов API SSL. | |
| cert | нет | None | Путь к клиенту сертификат для использования в рамках транзакции SSL. | |
| cloud | нет | Именованное облако, к которому выполнять операции. Обеспечивает значения по умолчанию для auth и auth_type. Этот параметр не нужен, если указан auth или присутствуют переменные окружения OpenStack OS_*. | ||
| config_drive | нет | нет | Включить загрузку сервера с включенным config-диском | |
| delete_fip (добавлено в 2.2)
| нет | Если state отсутствует и этот параметр имеет значение true, любой плавающий IP-адрес, связанный с экземпляром, будет удален вместе с экземпляром. | ||
| endpoint_type | нет | public |
| Тип URL конечной точки для извлечения из каталога служб. |
| 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 - это фильтр отрицательного соответствия - это текст, который не должен присутствовать в имени образа. По умолчанию "(устарело)" | ||
| key | нет | None | Путь к ключу клиента для использования в рамках транзакции SSL. | |
| key_name | нет | None | Имя пары ключей, используемой при создании экземпляра | |
| meta | нет | None | Список пар ключ-значение, которые должны быть предоставлены в качестве метаданных новому экземпляру или строка, содержащая список пар ключ-значение. Пример: meta: "key1=value1,key2=value2" | |
| name | да | Имя, которое должно быть задано экземпляру | ||
| network | нет | None | Имя или идентификатор сети, к которой необходимо подключить этот экземпляр. Более простой вариант параметра nics, следует указать только один из network или nics. | |
| nics | нет | None | Список сетей, к которым должен быть подключен интерфейс экземпляра. Сети могут быть указаны по 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 (добавлено в 2.2)
| нет | True | Когда auto_ip имеет значение true и этот параметр имеет значение true, код auto_ip будет пытаться повторно использовать неназначенные плавающие IP-адреса в проекте перед созданием нового. Важно отметить, что сделать это одновременно невозможно, поэтому, если ваш сценарий предполагает одновременное создание серверов, настоятельно рекомендуется установить это значение в false и удалить плавающий IP-адрес, связанный с сервером, при удалении сервера с помощью delete_fip. | |
| scheduler_hints (добавлено в 2.1)
| нет | None | Произвольные пары ключ/значение для планировщика для пользовательского использования | |
| security_groups | нет | None | Имена групп безопасности, к которым следует добавить экземпляр. Это может быть список YAML или строка, разделенная запятыми. | |
| state | нет | present |
| Ресурс должен быть present или absent. |
| terminate_volume | нет | Если true, удалить том при удалении экземпляра (если загружается с тома) | ||
| timeout | нет | 180 | Количество времени, которое модуль должен ожидать, пока экземпляр не перейдет в активное состояние. | |
| userdata | нет | None | Непрозрачный блок данных, доступный экземпляру | |
| validate_certs | нет | Нужно ли проверять запросы API SSL. До версии 2.3 по умолчанию было True. псевдонимы: verify | ||
| volume_size | нет | Размер тома для создания в ГБ, если загрузка с тома, основанного на изображении. | ||
| volumes | нет | Список существующих томов имен или идентификаторов для подключения к экземпляру | ||
| wait | нет | да | Если модуль должен ожидать создания экземпляра. |
Примеры
- name: Create a new instance and attaches to a network and passes metadata to the instance
os_server:
state: present
auth:
auth_url: https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0/
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://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0/
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://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0/
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://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0/
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://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0/
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 %}
Примечания
Примечание
- Можно использовать стандартные переменные окружения 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
Статус
Этот модуль помечен как предварительный, что означает, что он не гарантирует обратную совместимость интерфейса.
Для получения помощи в разработке модулей, если вас это заинтересует, пожалуйста, прочитайте Справочная информация и вклад сообщества, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/os_server_module.html