packet_device - Управление сервером на bare metal в Packet Host.
Новое в версии 2.3.
Обзор
- Управление сервером на bare metal в 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 | Facility slug для создания устройства. См. API Packet для текущего списка — https://www.packet.net/developers/api/facilities/. | |
| features | Словарь с «функциями» для создания устройства. См. документацию API Packet для получения подробной информации. | |
| hostnames | Имя хоста устройства или список имён хостов. Если задана строка или список с одним элементом, можно использовать формат строк Python "%d" для расширения чисел из count.Если задано только одно имя хоста, оно может быть расширено в список, если count > 1. псевдонимы: имя | |
| ipxe_script_url (добавлен в 2.4) | URL пользовательского скрипта iPXE для конфигурирования. Дополнительная информация о пользовательском iPXE для устройств Packet по адресу https://help.packet.net/technical/infrastructure/custom-ipxe. | |
| locked (добавлен в 2.4) | Значение по умолчанию: "нет" | Указывает, следует ли заблокировать созданное устройство. псевдонимы: заблокировать |
| operating_system | OS slug для создания устройства. См. API Packet для текущего списка — https://www.packet.net/developers/api/operatingsystems/. | |
| plan | Slug плана для создания устройства. См. API Packet для текущего списка — https://www.packet.net/developers/api/plans/. | |
| project_id обязательно | Идентификатор проекта устройства. | |
| state |
| Требуемое состояние устройства. Если установлено значение present (значение по умолчанию), вызов модуля возвратит немедленно после успешного возврата HTTP-запроса создания устройства.Если установлено значение active, вызов модуля заблокируется до тех пор, пока все указанные устройства не перейдут в состояние активность в соответствии с API Packet или до истечения wait_timeout. |
| user_data | Блоб userdata, доступный для машины | |
| 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 bool | успех | Истинно, если устройство было изменено каким-либо способом (создано, изменено или удалено) Пример: Истина |
| devices список | успех | Информация о каждом обработанном устройстве Пример: [{"hostname": "my-server.com", "id": "2a5122b9-c323-4d5c-b53c-9ad3f54273e7", "public_ipv4": "147.229.15.12", "private-ipv4": "10.0.15.12", "tags": [], "locked": ложь, "state": "provisioning", "public_ipv6": ""2604:1380:2:5200::3"}] |
Статус
Этот модуль помечен как предварительный, что означает, что он не гарантирует обратную совместимость интерфейса.
Техническое обслуживание
Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. См. Техническое обслуживание и поддержка модулей для получения дополнительной информации.
Список других модулей, которые также поддерживаются сообществом Ansible, см. здесь.
Автор
- 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.6/modules/packet_device_module.html