community.general.packet_ip_subnet – Assign IP subnet to a bare metal server.
Note
This plugin is part of the community.general collection (version 3.8.3).
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 |
Comments |
---|---|
Packet API token. You can also supply it in env var |
|
IPv4 or IPv6 subnet which you want to manage. It must come from a reserved block for your project in the Packet Host. |
|
The number of devices to retrieve from the project. The max allowed value is 1000. See https://www.packet.com/developers/api/#retrieve-all-devices-of-a-project for more info. Default: 100 |
|
UUID of a device to/from which to assign/remove a subnet. |
|
A hostname of a device to/from which to assign/remove a subnet. |
|
UUID of a project of the device to/from which to assign/remove a subnet. |
|
Desired state of the IP subnet on the specified device. With state == With state == If you leave both hostname and device_id empty, the subnet will be removed from any device it’s assigned to. Choices:
|
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 |
Description |
---|---|
True if an IP address assignments were altered in any way (created or removed). Returned: success Sample: true |
|
UUID of the device associated with the specified IP address. Returned: success |
|
Dict with data about the handled IP subnet. Returned: success 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
Tomas Karasek (@t0mk) <tom.to.the.k@gmail.com>
Nurfet Becirevic (@nurfet-becirevic) <nurfet.becirevic@gmail.com>