In this article, I will show you how you can deploy docker-compose on docker swarm using Ansible. It will automate the deployment process and we don’t need to do anything manually.
Red Hat® Ansible® Automation is automation software powered by Red Hat Ansible Engine—an execution engine with hundreds of modules that can automate all aspects of IT environments and processes—and Red Hat Ansible Tower—a management interface that can integrate with other services.
Prerequisites:
- Swarm Cluster already up and running
- Ansible installed (https://installvirtual.com/install-ansible-centos-7-using-yum/)
- docker-compose file
- Create a host file with the inventory of masters
Read Also: How to install Java 11 on Debian
Deploy docker-compose on docker swarm using Ansible
I have created a playbook to deploy docker-compose on docker swarm cluster on AWS using Ansible. So, here is my deploy.yml.
- name: Deploy on Swarm Cluster
hosts: masters
gather_facts: False
remote_user: ec2-user
tasks:
- name: Create a directory
file:
path: /home/ec2-user/deploy
state: directory
- name: Copy docker-compose-test.yml to master
copy:
src: docker-compose-test.yml
dest: /home/ec2-user/deploy
- name: Deploy on Swarm
shell: cd infra-problem && docker stack deploy -c docker-compose-test.yml testapp
register: stack_deploy
- debug: var={{item}}
with_items: stack_deploy.stdout_lines
- name: Check list of services
command: docker service ls
register: service_list
- debug: var={{item}}
with_items: service_list.stdout_lines
- name: Check list of stack
command: docker stack ps infra
register: stack_ps
- debug: var={{item}}
with_items: stack_ps.stdout_lines
So the playbook will first create a deploy directory in /home/ec2-user/. After creating a deploy directory it will copy the docker-compose file into this directory. I have a file called docker-compose-test.yml and I will use this file to deploy micro-services on the swarm. Then the next step is to deploy the docker-compose file using docker stack command.
In the next step, it will list all the docker services and also it will list the stack. So we can see the list of the stack that is deployed.
Deploy docker-compose
Now let’s deploy it on docker swarm.
ansible-playbook -i hosts deploy.yml
After executing in few seconds it will deploy and update stack on docker swarm.
If you have an issue using this tutorial please feel free to comment below.