Configuration of Apache Webserver on Docker Using Ansible Play-Book

Configuration of Apache Webserver on Docker Using Ansible Play-Book

In this blog, we'll use Ansible to set up Docker and a webserver in a Docker container.

There will be the following steps:

  1. Install Ansible on the controller node.

  2. Create inventory files & configure Ansible configuration files.

  3. Create an Ansible playbook to install Docker in all the managed nodes.

  4. Run Ansible Playbook.

Pre-requisite:

  • Yum should be configured in the Managed Node.

**Step 1: ** Install Ansible in Controller Node

To install ansible using python3

pip3 install ansible

To install ansible in Linux:

yum install ansible

To check the version of ansible:

ansible --version

12.png

Step2: Create Inventory file & configure Ansible configuration file

We can add the Ip address of all the managed nodes. We can create an inventory file anywhere with a .txt extension but I am using the system by-default configuration file which is vim /etc/ansible/hosts

and adding the Ip address, Username, Password

image.png

  • Now we can check the connectivity with Managed Node using the command ansible all -m ping

image.png

If it shows a message in green color that means there is connectivity and you will see the message ping pong.

Step 3: Create an Ansible Playbook to install Docker on all Managed Nodes.

**Ansible playbooks: ** Ansible playbooks is a YAML file that contains all the plays(tasks) ansible will perform. They are like a to-do list for Ansible that contains a list of tasks.

For doing our task we have to write Ansible Playbook that contains tasks.

The code in the playbook is as below:

- hosts: all
  tasks:
    - name: Docker repo
      yum_repository:
        name: docker
        description: repo for docker
        baseurl: "https://download.docker.com/linux/centos/7/x86_64/stable/"
        gpgcheck: no


    - name: installing docker
      command: "yum install docker-ce --nobest -y"

    - name: install python 3.6 
      package: 
          name: python36
          state: present

    - name: starting and enabling docker services
      service:
          name: docker
          state: started
          enabled: yes

    - name: configure pip for docker
      pip:
          name: docker-py

    - name: pull httpds docker iso
      docker_image:
        name: httpd
        source: pull

    - name: docker container
      docker_container:
          name: mywebserver
          image: httpd
          exposed_ports:
            - 80
          ports: 
            -  4444:80
          volumes:
          - /var/www/html/:/usr/local/apache2/htdocs

After successful running of the playbook, you can check the container whether it is launched successfully or not. Run the docker ps command to check the running container.

Step4: Run Ansible Playbook in Controller Node

To run Ansible Playbook we have ansible-playbook playbook_name command

image.png

image.png

The output of the Website: URL = Managed_node_ip:portno

image.png

*** Thanks for reading! I hope you understood these concepts and learnt something. ***

If you have any queries feel free to reach out to me on Linkedin.

Did you find this article valuable?

Support Ritik Gupta Blog's by becoming a sponsor. Any amount is appreciated!