packet_device – Управление сервером без операционной системы в Packet Host.
Новое в версии 2.3.
Обзор
- Управление сервером без операционной системы в Packet Host (в терминах API — «устройство»).
- При создании машины можно (по желанию) ожидать присвоения публичного IP-адреса или активного состояния.
- Этот модуль зависит от packet >= 1.0.
- Документация API находится по адресу https://www.packet.net/developers/api/devices.
Требования
Ниже перечислены требования, которые должны быть выполнены на хосте, на котором выполняется этот модуль.
- packet-python >= 1.35
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| always_pxe - добавлено в 2.4 | Значение по умолчанию: "нет" | Поддерживать PXE в качестве первого варианта загрузки. Обычно процесс PXE происходит только при первой загрузке. Установите этот параметр, чтобы ваше устройство постоянно загружалось с iPXE. |
| auth_token - | Токен API Packet. Вы также можете указать его в переменной среды PACKET_API_TOKEN. | |
| count - | Значение по умолчанию: 1 | Количество создаваемых устройств. Число можно включить в имя хоста с помощью форматирования строк %d. |
| count_offset - | Значение по умолчанию: 1 | Номер, с которого начать отсчет. |
| device_ids - | Список идентификаторов устройств, над которыми нужно выполнить операцию. | |
| facility - | Идентификатор объекта для создания устройства. См. API Packet для текущего списка - https://www.packet.net/developers/api/facilities/. | |
| features - | Словарь с параметрами «features» для создания устройства. Подробности см. в документации API Packet. | |
| hostnames - | Имя хоста устройства или список имен хостов. Если задана строка или список из одного элемента, можно использовать форматирование строк Python "%d" для расширения чисел из параметра count.Если указано только одно имя хоста, оно может быть преобразовано в список, если count>1. псевдонимы: name | |
| ipxe_script_url - добавлено в 2.4 | URL пользовательского сценария iPXE для подготовки. Подробнее о пользовательском iPXE для устройств Packet по адресу https://help.packet.net/technical/infrastructure/custom-ipxe. | |
| locked - добавлено в 2.4 | Значение по умолчанию: "нет" | Блокировать созданное устройство или нет. псевдонимы: lock |
| operating_system - | Идентификатор ОС для создания устройства. См. API Packet для текущего списка - https://www.packet.net/developers/api/operatingsystems/. | |
| plan - | Идентификатор плана для создания устройства. См. API Packet для текущего списка - https://www.packet.net/developers/api/plans/. | |
| project_id - / обязательно | Идентификатор проекта устройства. | |
| state - |
| Желаемое состояние устройства. Если установлено значение present (значение по умолчанию), вызов модуля вернет результат сразу после успешного возврата HTTP-запроса на создание устройства.Если установлено значение active, вызов модуля будет заблокирован до тех пор, пока все указанные устройства не перейдут в состояние active в соответствии с API Packet или пока не истечет wait_timeout. |
| user_data - | Данные пользователя, доступные машине | |
| wait_for_public_IPv - добавлено в 2.4 |
| Ожидать присвоение публичного IPv4/IPv6-адреса экземпляру. Если установлено значение 4, будет ожидание присвоения IPv4 экземпляру. Если установлено значение 6, будет ожидание присвоения публичного IPv6 экземпляру. |
| wait_timeout - | Значение по умолчанию: 900 | Сколько времени (в секундах) ожидать либо автоматического присвоения IP-адреса, либо перехода устройства в состояние active state.Если wait_for_public_IPv задано и state задано как active, модуль будет ждать обеих событий последовательно, дважды применяя таймаут. |
Примечания
Примечание
- Не поддерживает режим проверки.
Примеры
# All the examples assume that you have your Packet api token in env var PACKET_API_TOKEN.
# You can also pass it to the auth_token parameter of the module instead.
# Creating devices
- name: create 1 device
hosts: localhost
tasks:
- packet_device:
project_id: 89b497ee-5afc-420a-8fb5-56984898f4df
hostnames: myserver
operating_system: ubuntu_16_04
plan: baremetal_0
facility: sjc1
# Create the same device and wait until it is in state "active", (when it's
# ready for other API operations). Fail if the devices in not "active" in
# 10 minutes.
- name: create device and wait up to 10 minutes for active state
hosts: localhost
tasks:
- packet_device:
project_id: 89b497ee-5afc-420a-8fb5-56984898f4df
hostnames: myserver
operating_system: ubuntu_16_04
plan: baremetal_0
facility: sjc1
state: active
wait_timeout: 600
- name: create 3 ubuntu devices called server-01, server-02 and server-03
hosts: localhost
tasks:
- packet_device:
project_id: 89b497ee-5afc-420a-8fb5-56984898f4df
hostnames: server-%02d
count: 3
operating_system: ubuntu_16_04
plan: baremetal_0
facility: sjc1
- name: Create 3 coreos devices with userdata, wait until they get IPs and then wait for SSH
hosts: localhost
tasks:
- name: create 3 devices and register their facts
packet_device:
hostnames: [coreos-one, coreos-two, coreos-three]
operating_system: coreos_stable
plan: baremetal_0
facility: ewr1
locked: true
project_id: 89b497ee-5afc-420a-8fb5-56984898f4df
wait_for_public_IPv: 4
user_data: |
#cloud-config
ssh_authorized_keys:
- {{ lookup('file', 'my_packet_sshkey') }}
coreos:
etcd:
discovery: https://discovery.etcd.io/6a28e078895c5ec737174db2419bb2f3
addr: $private_ipv4:4001
peer-addr: $private_ipv4:7001
fleet:
public-ip: $private_ipv4
units:
- name: etcd.service
command: start
- name: fleet.service
command: start
register: newhosts
- name: wait for ssh
wait_for:
delay: 1
host: "{{ item.public_ipv4 }}"
port: 22
state: started
timeout: 500
with_items: "{{ newhosts.devices }}"
# Other states of devices
- name: remove 3 devices by uuid
hosts: localhost
tasks:
- packet_device:
project_id: 89b497ee-5afc-420a-8fb5-56984898f4df
state: absent
device_ids:
- 1fb4faf8-a638-4ac7-8f47-86fe514c30d8
- 2eb4faf8-a638-4ac7-8f47-86fe514c3043
- 6bb4faf8-a638-4ac7-8f47-86fe514c301f
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| changed boolean | успех | True, если устройство было изменено каким-либо образом (создано, изменено или удалено) Пример: True |
| devices список | успех | Информация о каждом обработанном устройстве Пример: [{"hostname": "мой-сервер.com", "id": "2a5122b9-c323-4d5c-b53c-9ad3f54273e7", "public_ipv4": "147.229.15.12", "private-ipv4": "10.0.15.12", "tags": [], "locked": false, "state": "provisioning", "public_ipv6": ""2604:1380:2:5200::3"}] |
Статус
- Не гарантируется обратная совместимость интерфейса этого модуля. [preview]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Tomas Karasek (@t0mk) <tom.to.the.k@gmail.com>
- Matt Baldwin <baldwin@stackpointcloud.com>
- Thibaud Morel l’Horset <teebes@gmail.com>
Подсказка
Если вы заметили какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/modules/packet_device_module.html