community.general.packet_device – Управление сервером на bare metal в Packet Host.
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Чтобы использовать его в playbook, укажите: community.general.packet_device.
Обзор
- Управление сервером на bare metal в Packet Host (в терминах API — «устройство»).
- При создании машины можно необязательно подождать присвоения публичного IP-адреса или активного состояния.
- Этот модуль зависит от пакет >= 1.0.
- Документация API находится по адресу https://www.packet.net/developers/api/devices.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- packet-python >= 1.35
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| always_pxe boolean |
| Поддерживать 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 строка | Имя хоста устройства или список имён хостов. Если строка или список из одного элемента, можно использовать строковый формат "%d" Python для расширения чисел из count.Если только одно имя хоста, оно может быть расширено до списка, если count>1. псевдонимы: name | |
| ipxe_script_url строка | URL пользовательского скрипта iPXE для настройки. Подробнее о пользовательском iPXE для устройств Packet по адресу https://help.packet.net/technical/infrastructure/custom-ipxe. | |
| locked boolean |
| Блокировать созданное устройство или нет. псевдонимы: lock |
| 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, вызов модуля будет блокироваться до тех пор, пока все указанные устройства не перейдут в состояние активного по Packet API или не истечёт время ожидания wait_timeout. |
| tags список / элементы=строка добавлен в 0.2.0 из community.general | Список тегов устройства. В настоящее время реализован только для создания устройства. | |
| user_data строка | Блок данных пользователя, доступный машине. | |
| wait_for_public_IPv строка |
| Дожидаться присвоения публичного 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:
- community.general.packet_device:
project_id: 89b497ee-5afc-420a-8fb5-56984898f4df
hostnames: myserver
tags: ci-xyz
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 device is not "active" in
# 10 minutes.
- name: Create device and wait up to 10 minutes for active state
hosts: localhost
tasks:
- community.general.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:
- community.general.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
community.general.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
ansible.builtin.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:
- community.general.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 | успех | Истинно, если устройство было изменено каким-либо образом (создано, изменено или удалено) Пример: Истина |
| 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"}] |
Авторы
- Tomas Karasek (@t0mk) <tom.to.the.k@gmail.com>
- Matt Baldwin (@baldwinSPC) <baldwin@stackpointcloud.com>
- Thibaud Morel l’Horset (@teebes) <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.10/collections/community/general/packet_device_module.html