community.general.packet_ip_subnet – Assign IP subnet to a bare metal server.

Note

This plugin is part of the community.general collection (version 4.2.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install community.general.

To use it in a playbook, specify: community.general.packet_ip_subnet.

New in version 0.2.0: of community.general

Synopsis

  • Assign or unassign IPv4 or IPv6 subnets to or from a device in the Packet host.

  • IPv4 subnets must come from already reserved block.

  • IPv6 subnets must come from publicly routable /56 block from your project.

  • See https://support.packet.com/kb/articles/elastic-ips for more info on IP block reservation.

Requirements

The below requirements are needed on the host that executes this module.

  • packet-python >= 1.35

  • python >= 2.6

Parameters

Parameter Choices/Defaults Comments
auth_token
string
Packet API token. You can also supply it in env var PACKET_API_TOKEN.
cidr
string / required
IPv4 or IPv6 subnet which you want to manage. It must come from a reserved block for your project in the Packet Host.

aliases: name
device_count
integer
Default:
100
The number of devices to retrieve from the project. The max allowed value is 1000.
device_id
string
UUID of a device to/from which to assign/remove a subnet.
hostname
string
A hostname of a device to/from which to assign/remove a subnet.
project_id
string
UUID of a project of the device to/from which to assign/remove a subnet.
state
string
    Choices:
  • present ←
  • absent
Desired state of the IP subnet on the specified device.
With state == present, you must specify either hostname or device_id. Subnet with given CIDR will then be assigned to the specified device.
With state == absent, you can specify either hostname or device_id. The subnet will be removed from specified devices.
If you leave both hostname and device_id empty, the subnet will be removed from any device it's assigned to.

Examples

# 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.

- name: Create 1 device and assign an arbitrary public IPv4 subnet to it
  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

# Pick an IPv4 address from a block allocated to your project.

  - community.general.packet_ip_subnet:
      project_id: 89b497ee-5afc-420a-8fb5-56984898f4df
      hostname: myserver
      cidr: "147.75.201.78/32"

# Release IP address 147.75.201.78

- name: Unassign IP address from any device in your project
  hosts: localhost
  tasks:
  - community.general.packet_ip_subnet:
      project_id: 89b497ee-5afc-420a-8fb5-56984898f4df
      cidr: "147.75.201.78/32"
      state: absent

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key Returned Description
changed
boolean
success
True if an IP address assignments were altered in any way (created or removed).

Sample:
True
device_id
string
success
UUID of the device associated with the specified IP address.

subnet
dictionary
success
Dict with data about the handled IP subnet.

Sample:
{'address': '147.75.90.241', 'address_family': 4, 'assigned_to': {'href': '/devices/61f9aa5e-0530-47f5-97c2-113828e61ed0'}, 'cidr': 31, 'created_at': '2017-08-07T15:15:30Z', 'enabled': True, 'gateway': '147.75.90.240', 'href': '/ips/31eda960-0a16-4c0f-b196-f3dc4928529f', 'id': '1eda960-0a16-4c0f-b196-f3dc4928529f', 'manageable': True, 'management': True, 'netmask': '255.255.255.254', 'network': '147.75.90.240', 'public': True}


Authors