Table of Contents
If you're freelancer or work for a large company you could find yourself with a large and sometimes out of control /etc/hosts
file. I can have about 50 sites on there at a time, some are active and other are not. I try to split up the sites on a per project basis with a commented title such as:
###############################
# Project 1
###############################
xxx.xx.xx.xxx site-1.com
xxx.xx.xx.xxx site-2.com
xxx.xx.xx.xxx site-3.com
###############################
# Project 2
###############################
xxx.xx.xx.xxx site-1-1.com
xxx.xx.xx.xxx site-1-2.com
xxx.xx.xx.xxx site-1-3.com
This works ok but can slowly get out of control and I wanted a better way of managing these site. The end solution of what I want is to split up the projects into different host files and then include all of these files inside the /etc/hosts file.
@include project-1.conf
@include project-2.conf
After doing some research I couldn't find a nice way of including the hosts from within the hosts file, but then thought I can write a script to build the etc/hosts
file from the different project config files. ### Create A Hosts Directory
First create a folder in the /etc/
folder for the hosts.
> sudo mkdir /etc/hosts.d
Create Project Host Files
Now create a conf file inside this folder for each of your host projects.
> sudo nano /etc/hosts.d/project-1.conf
> sudo nano /etc/hosts.d/project-2.conf
Create Script To Build Host File
First create the file inside the hosts.d folder.
> sudo nano build-hosts.sh
Inside this file we want to concatenate all the hosts conf files into the hosts file.
cat /etc/hosts.d/*.conf > /etc/hosts
Now run the build host script.
> sh /etc/hosts.d/build-hosts.sh
This will create the /etc/hosts
file with all the configs in the hosts folder. Therefore whenever you want to update your host file you can run this script to re-build it from the configs for you.