How do I get puppet master to listen on IPv6?

Machoke asked:

So I have a RHEL 7 server on an internal network with IPv6, and I am able to SSH into it via IPv6 and it is also serving DNS to other hosts over IPv6.

I have noticed that puppet master bind to IPv4 only:

$ netstat -n -l | grep 8140
tcp        0      0  *               LISTEN

A quick Google reveals that it is most likely that ruby on RHEL 7 are compiled without IPv6 support.

So I just get it up and running with IPv4 for now.

Having everything else running on IPv6 though, I wonder what’s the best way to get puppet master to listen on IPv6? Can I install ruby from the upstream rpms with IPv6 turned on? Or install a separate IPv6 enabled ruby environment via rvm, but then how would I get puppet to use the one provided by rvm?

My answer:

In Puppet Enterprise the puppetmaster should be listening on a dual stack IPv6/IPv4 socket by default. Though PE has some other IPv6-related brokenness (my site) you’ll have to work around.

In open source Puppet, such as you may have obtained via EPEL, you need to set the bindaddress explicitly in the [main] section of /etc/puppet/puppet.conf:

bindaddress = ::

which by default will bind to a dual stack socket and accept IPv6 and IPv4 connections from anywhere.

View the full question and any other answers on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.