Deploy Docker swarm cluster

First published: Monday, August 25, 2025 | Last updated: Monday, August 25, 2025

Deploy Docker swarm cluster using the SloopStash Chef starter-kit.


Previous: Configure

Next: Deploy Kubernetes cluster

Deploy and manage Docker swarm cluster using Chef

# Switch to SloopStash Chef starter-kit directory.
$ cd /opt/kickstart-chef

# Create Chef role.
$ knife role create docker
{
  "name":"docker",
  "description":"",
  "json_class":"Chef::Role",
  "default_attributes":{},
  "override_attributes":{},
  "chef_type":"role",
  "run_list":[
	  "recipe[system::setup]",
	  "recipe[system::configure]",
	  "recipe[system::stop]",
	  "recipe[system::start]",
    "recipe[docker::setup]",
    "recipe[docker::configure]",
    "recipe[docker::stop]",
    "recipe[docker::start]"
  ],
  "env_run_lists":{}
}

On-premise (VirtualBox)

# Switch to SloopStash Chef starter-kit directory.
$ cd /opt/kickstart-chef

# Bootstrap Chef nodes for Docker manager nodes.
$ knife bootstrap vagrant@192.168.101.51 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-mgr-1 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.101.52 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-mgr-2 -E sloopstash-${ENVIRONMENT}

# Bootstrap Chef nodes for Docker worker nodes.
$ knife bootstrap vagrant@192.168.101.54 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-wkr-1 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.101.55 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-wkr-2 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.101.56 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-wkr-3 -E sloopstash-${ENVIRONMENT}

# Execute Chef role against Chef node.
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-mgr-1 'role[docker]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-mgr-2 'role[docker]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-wkr-1 'role[docker]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-wkr-2 'role[docker]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-wkr-3 'role[docker]'

On-premise (VMware)

# Switch to SloopStash Chef starter-kit directory.
$ cd /opt/kickstart-chef

# Bootstrap Chef nodes for Docker manager nodes.
$ knife bootstrap vagrant@192.168.201.51 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-mgr-1 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.201.52 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-mgr-2 -E sloopstash-${ENVIRONMENT}

# Bootstrap Chef nodes for Docker worker nodes.
$ knife bootstrap vagrant@192.168.201.54 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-wkr-1 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.201.55 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-wkr-2 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.201.56 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-dkr-wkr-3 -E sloopstash-${ENVIRONMENT}

# Execute Chef role against Chef node.
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-mgr-1 'role[docker]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-mgr-2 'role[docker]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-wkr-1 'role[docker]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-wkr-2 'role[docker]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-dkr-wkr-3 'role[docker]'

Previous: Configure

Next: Deploy Kubernetes cluster