How to update static IP when restoring droplet

So I have a PiHole Droplet that I snapshot and restore as and when I need it. Annoyingly the PiHole requires a static IP set in /etc/dhcpcd.conf, however, each time I restore the droplet it gets a new IP, this completely breaks the networking. I have to reset the root password and then access it through the access console, edit ``/etc/dhcpcd.conf``` to get it all working. A real bore! Is there a more elegant solution to this?


Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Yes! Droplets have access to a service that provides metadata about the droplet. You can create a short user-data script to supply when creating a droplet from this snapshot that would grab the new IP address from the meta data service, update /etc/dhcpd.conf and restart any services that require it.

You can learn more about using droplet meta-data here.

Your user data script can be provided in YAML or in an interpreted language that the droplet will support at boot time. This allows you to paste a bash script into the user-data field (or provide it via the API) and have it executed immediately on boot.

When testing your script you can view it’s output in /var/log/cloud-init-output.log