Install pi hole, add static ip, when it reboots the ip changes back to dhcp

The old way needed the "auto" directive to indicate you want the interface to be up at boot:

$ man interfaces

INTERFACES(5)                        File formats                       INTERFACES(5)

NAME
       /etc/network/interfaces - network interface configuration for ifup and ifdown

DESCRIPTION
       /etc/network/interfaces  contains  network interface configuration information
       for the ifup(8) and ifdown(8) commands.  This is where you configure how  your
       system is connected to the network.
[...]
INTERFACE SELECTION
       Lines beginning with the word "auto" are used to identify the physical  inter‐
       faces  to  be brought up when ifup is run with the -a option.  (This option is
       also used by the system boot scripts, so interfaces marked "auto" are  brought
       up  at  boot time.)  Physical interface names should follow the word "auto" on
       the same line.  There can be multiple "auto" stanzas.  ifup brings  the  named
       interfaces up in the order listed.

      Lines  beginning  with "allow-" are used to identify interfaces that should be
      brought up automatically by various subsytems. This may be done using  a  com‐
      mand  such  as "ifup --allow=hotplug eth0 eth1", which will only bring up eth0
      or eth1 if it is listed in an "allow-hotplug" line. Note that "allow-auto" and
      "auto"  are  synonyms.  (Interfaces marked "allow-hotplug" are brought up when
      udev detects them.  This can either be during boot if the interface is already
      present,  or at a later time, for example when plugging in a USB network card.
      Please note that this does not have anything to do with  detecting  a  network
      cable being plugged in.)

[...]

Now dhcpcd5 brings up the interface:

$ man dhcpcd5

DHCPCD(8)                    BSD System Manager's Manual                    DHCPCD(8)

NAME
     dhcpcd — a DHCP client

SYNOPSIS
     dhcpcd [-146ABbDdEGgHJKLMNPpqTV] [-C, --nohook hook] [-c, --script script]
            [-e, --env value] [-F, --fqdn FQDN] [-f, --config file]
            [-h, --hostname hostname] [-I, --clientid clientid]
            [-i, --vendorclassid vendorclassid] [-j, --logfile logfile]
            [-l, --leasetime seconds] [-m, --metric metric] [-O, --nooption option]
            [-o, --option option] [-Q, --require option] [-r, --request address]
            [-S, --static value] [-s, --inform address[/cidr]] [--inform6]
            [-t, --timeout seconds] [-u, --userclass class]
            [-v, --vendor code, value] [-W, --whitelist address[/cidr]] [-w]
            [--waitip [4 | 6]] [-y, --reboot seconds]
            [-X, --blacklist address[/cidr]] [-Z, --denyinterfaces pattern]
            [-z, --allowinterfaces pattern] [--inactive] [interface] [...]
     dhcpcd -n, --rebind [interface]
     dhcpcd -k, --release [interface]
     dhcpcd -U, --dumplease interface
     dhcpcd --version
     dhcpcd -x, --exit [interface]

DESCRIPTION
     dhcpcd is an implementation of the DHCP client specified in RFC 2131.  dhcpcd
     gets the host information (IP address, routes, etc) from a DHCP server and con‐
     figures the network interface of the machine on which it is running.  dhcpcd
     then runs the configuration script which writes DNS information to
     resolvconf(8), if available, otherwise directly to /etc/resolv.conf.  If the
     hostname is currently blank, (null) or localhost, or force_hostname is YES or
     TRUE or 1 then dhcpcd sets the hostname to the one supplied by the DHCP server.
     dhcpcd then daemonises and waits for the lease renewal time to lapse.  It will
     then attempt to renew its lease and reconfigure if the new lease changes when
     the lease beings to expire or the DHCP server sends message to renew early.
[...]
   Fine tuning
     You can fine-tune the behaviour of dhcpcd with the following options:

     -S, --static value
             Configures a static DHCP value.  If you set ip_address then dhcpcd will
             not attempt to obtain a lease and just use the value for the address
             with an infinite lease time.

             Here is an example which configures a static address, routes and dns.
                   dhcpcd -S ip_address=192.168.0.10/24 \
                   -S routers=192.168.0.1 \
                   -S domain_name_servers=192.168.0.1 \
                   eth0
[...]
FILES
     /etc/dhcpcd.conf
     Configuration file for dhcpcd.  If you always use the same options, put them
     here.
[...]