3DN
NodeJS based DNS+DHCP+Docker Management
This is developped for a dev envirment service discovery purposes.
This currently support http restful api to update DNS record (a docker api client can send new vm info to it to register new vms) or Pull RouterOS dhcp Lease record.
#Installation
Server is wirtten in NODEJS.
git clone git@github.com:riadev/3DN.git
- run
npm install
#Configuration
Configuration is done through setting up envirment variables . simply run program with below bash statement as an example
EXPORT IP=192.168.1.2
EXPORT PORT=80
check RUN section to see how you can run with
IP
: This is the IP address the restful api http server and DNS server should be binded to. normally it should be 0.0.0.0 . but if you do want it to only listen to one interface, you would specify the IP addressPORT
: HTTP Restful API TCP Port to listen on, defaut is 8080DNS_PORT
: DNS UDP port to listen on, default is 53ROS_HOST
: RouterOS's IP Addresss or hostname. default localhostROS_USER
: RouterOS's API Username, default adminROS_PASSWD
:RouterOS's API Password, default passwordSERVER_NAME
:Display purpose Server name, default value isNODE_EVN
: Which mode you are running in, values can be production or test . if you do not specify this, it will be running in dev mode. Notice, if you do specify this to production, you need to have redis server avaiable and configure itREDIS_HOST
: Only needed when NODE_EVN is production, host of redis server, default localhostREDIS_PORT
: Only needed when NODE_EVN is production, default 6379REDIS_OPS
: Only needed when NODE_EVN is production,default nullREDIS_PASSWD
:Only needed when NODE_EVN is production, default nullSCHEDULE_TASK
: true or false to indicate wether to enable internal schduler to pull docker and dhcp server
#RUN
2. To simiply play with it npm start
or node_modules/.bin/actionhero
3. If you want to run it in background, install forever tool (sudo npm install -g forever
)
1. run forever start node_modules/.bin/actionhero
2. to check logs forever logs 0
(assuming you are running this app only)
3. forever list
and forever stop {index}
to stop other from running
4. In order to run DNS server on UDP port 53, you will need to run with root permission. and your enviriment variables will need to be passed in following example sudo IP=0.0.0.0 PORT=80 DNS_PORT=53 ROS_HOST=0.0.0.0 ROS_USER=admin ROS_PASSWD=mypassword forever start node_modules/.bin/actionhero
Note that I am not listing all variables, you will have to list all your variables
#Resful API
Documented at the index.html page. run the server and detailed documentation on API are shown there.
#TODO
Finish docker file