Quick question for my clarification. Does a server have to have a static IP address? My thought is no it does not. I know it would be considered bad practice not to have one but cant the DCHP assign IP. Please clarify for me.
No a server is not required to have a static IP.
Yes it is best practice to use static IPs for servers.
You could setup a DHCP reservation for the servers or just let DHCP issue IPs on its own in certain circumstances. When you use DHCP, you are relying on the DHCP service being present in your network...if it doesn't exist and your server looks for DHCP for IP addresses, it will get an APIPA address if it cannot find the DHCP server (windows servers do this).
Relying on DHCP creates some concern because of how easy problems can surface with poor DHCP configurations and other security issues...so basically you want your server to boot up and use a reserved IP with limited possibility of failure (this is why it is best practice to use static IPs).
If you are setting up a DNS server, that machine should ALWAYS use a static IP.
Answer: Depends on the services the server provides.
DNS servers generally will always need static IP's (*in most cases* things like dyna-dns and no-ip make this possible).
Servers such as File Servers, SQL Servers, Application Servers, etc do not technically need a static IP since they are most times referenced by DNS and/or other name resolution services which DHCP can provide dynamic DNS updates (Windows Server 2003) or can be done by manual entry and/or DHCP reservation worst case. These servers not being configured via static IP is a much more reasonable arguement than not using a static IP on a DNS Server.
Yes it is still "best practice" to configure static IPs on servers, but this actual rule can be bent as long as the server doesn't handle name resolution and/or routing for the most part.
This is why so many early programmers that didn't have a thourough understanding of infrastructures and networks ran into issues because their code would address a server by IP (some programmers at my old company actually did this). What happens when the network grows and IPs need to be reallocated? Code doesn't work. This is why we rely so heavily on name resolution so much today.