wiki:how-to/servers/add_ip_allocation

Version 7 (modified by https://id.mayfirst.org/dkg, 2 weeks ago) (diff)

--

How to allocate an ip address

We currently use very different mechanisms to allocate IPv6 addresses compared to IPv4 addresses.

NOTE: The historical ip-temp process on hay.mayfirst.org is no longer in use!

Steps for allocating an IPv4 address

Now, we allocate an IP and create the iterface in the same step.

Find an available IP

Run:

freepuppet-helper ai | sort

To get a list of currently allocated IPs

Then, pick the next one in the range you want and edit the .pp file for the server in question and add the following

Sample for physical host

  class { "mayfirst::m_interface": }
  mayfirst::m_interface::set { "209.234.253.26/27":
    dev => "br0",
    gateway => "209.234.253.1",
    hwaddress => "00:26:b9:35:c1:eb",
    bridge_ports => "eth0"
  }

Sample for canonical IP address on guest

  class { "mayfirst::m_interface": }
  mayfirst::m_interface::set { "209.51.172.13/28": gateway => "209.51.172.1" }

Sample for additional IP on guest

  mayfirst::m_interface::set { "209.51.180.27/28": label => "smtp" }

Steps for allocating an IPv6 address

The IPv6 process is much more manual, and not directly managed by puppet.

find a free IPv6 address

first, list all claimed IPv6 addresses by searching in :

0 mfpl-puppet$ git grep 'gateway.*->.*:'
manifests/nodes/production/che.pp:# mayfirst::m_interface::set { "2001:470:1:116::7/64": gateway => "2001:470:1:116::1" }
0 mfpl-puppet$ 

Note that the lines are commented out (with a #). this is as intended, they're still allocations, because puppet isn't dealing with IPv6 at all yet.

Then choose a free one.

assign it to the host manually

place the appropriate stanza in a new file in /etc/network/interfaces.d/ on hosts that use ifupdown, or in a /etc/systemd/network/*.network file on hosts that use systemd-networkd

claim it in puppet

remember to add a commented line in the appropriate puppet production file corresponding to the host!