Server Configurations

Server configuration refers to a set of commands that converts a fresh installation (Linux Distribution or Windows Server) to a fully functional production ready server. This server can be used later on to:

  • - Use the application directly
  • - Cluster it among other servers under a load balancer
  • - Use it as template to create golden images
  • - Use it as a host to deploy Docker Containers (When docker is used as configuration management tool)
  • - Use it as a host for advanced container clustering such as Kubernetes, Mesos / Marathon, Docker Swarm, etc

When you are automating the configuration of a single server, you can do it directly using bash or you can use configuration management tools such as Puppet, Chef, Ansible, Salt Stack, Docker (as configuration management), etc

Manageacloud allows you to bootstrap the server configuration from a bash script. It usually requires two steps:

  • 1 - Install the configuration management system
  • 2 - Trigger the server configuration

Server Configuration Examples

Bash

# update packages.
apt-get update -yq

# install the web server that will be delivering the application
apt-get install nginx -yq

# configure nginx
# TODO

# download and install the application code from git
cd /var/www/ && git clone http://github.com/my-repository

Docker

The following example uses docker as configuration management system (Joomla).

# 1 - install configuration management system
curl -sSL https://get.docker.com/ | sh

# 2 - execute configuration management system
docker run --name db -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
docker run --name my-joomla --link db:mysql -d -p 80:80 joomla

Puppet

Let's proceed to install Puppet Debian based systems and run Puppet syntax.

# 1 - install the configuration management system (Puppet Client Open Source)
apt-get update -y
apt-get install puppet -y

# 2 - run puppet
# Masterless > git repository (requires cloning from git)
# puppet apply example.pp
#
# Masterless > puppet code
# puppet apply  -e 'package { "nginx": ensure => present, }'
#
# Master > Puppet Enterprise
# curl -k https://my_puppet_master.domain.com:8140/packages/current/install.bash | bash

SaaS and Community versions


The Community versions allows you to bootstrap bash code.

The SaaS version has an web interface that allows you to easily store, catalog, test and maintain server configurations. It also contains the logic that pre-installs some configuration management systems, such as puppet and chef, in many Linux distributions.