Spec-Zone.ru › Ansible 2.10

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
    Варианты:
  • no ←
  • да
Поддерживать 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
    Варианты:
  • no ←
  • да
Блокировать созданное устройство или нет.

псевдонимы: 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 ←
  • absent
  • active
  • inactive
  • rebooted
Желаемое состояние устройства.
Если установлено значение present (значение по умолчанию), вызов модуля вернётся сразу после успешного возврата HTTP запроса для создания устройства.
Если установлено значение active, вызов модуля будет блокироваться до тех пор, пока все указанные устройства не перейдут в состояние активного по Packet API или не истечёт время ожидания wait_timeout.
tags
список / элементы=строка
добавлен в 0.2.0 из community.general
Список тегов устройства.
В настоящее время реализован только для создания устройства.
user_data
строка
Блок данных пользователя, доступный машине.
wait_for_public_IPv
строка
    Варианты:
  • 4
  • 6
Дожидаться присвоения публичного 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API