Copal Ring
Copal Ring is a server cluster management tool which allows for rapid deployment of web applications and services. It is intended to provide an ideal runtime environment for applications written on the Copal Application Framework.
OVERVIEW
Copal Ring will install and configure a typical LAMP stack on each node, plus Galera Cluster for database synchronization and Git for filesystem synchronization. Nodes are added to the cluster simply by running the installer on a new server and providing the IP address of an exisitng node as well as it's rsa key data. Nodes can be removed from the cluster via the commandline of the target server. Commands can be run on all servers automatically via the commandline of any single server in the cluster. Applications and certain configuration changes can be deployed by pushing to automatically prepared git repositories on any single server in the cluster.
USE
Copal Ring must be installed on a fresh image of Ubuntu 18.04 as the root user.
#to build the debian packages from scratch: #starting in /root: apt update apt install devscripts apt install dh-make git clone https://github.com/madisonbrown/copalring cd copalring bash main.sh # #to install the debian package: cd deb dpkg -i copalring_1.0-1_all.deb # #to initialize a node copal init # #to view encoded rsa key data (for adding a node to an existing cluster) copal serial # #to view the ip address of all peers or of a random peer copal peer -a && copal peer -r #to perform a task synchronously on all nodes or all nodes excluding the origin: copal cycle "echo hostname" && copal cycle -e "echo hostname" # #to remove a node copal sync remove 10.20.30.40 #to return a node copal sync add 10.20.30.40 # #to edit the apache configuration files: #from the development system: git clone ssh://10.20.30.40/etc/copal/config/.git git checkout stage #make changes git add . git commit -m "initial" git push # #to deploy an application: #from the development system: git clone ssh://10.20.30.40/var/www/.git git checkout stage #make changes git add . git commit -m "initial" git push