Ansible Blockinfile Module

Task :

The Nautilus DevOps team wants to install and set up a simple httpd web server on all app servers in Stratos DC. Additionally, they want to deploy a sample web page for now using Ansible only. Therefore, prepare the required playbook to complete this task. Find more details about the task below.

We already have an inventory file under /home/thor/ansible on jump host. Create a playbook.yml under /home/thor/ansible on jump host itself.

Using the playbook, install httpd web server on all app servers. Additionally, make sure its service should up and running.

Using blockinfile Ansible module add some content in /var/www/html/index.html file. Below is the content:

Welcome to XfusionCorp!

This is Nautilus sample file, created using Ansible!

Please do not modify this file manually!

The /var/www/html/index.html file’s user and group owner should be apache on all app servers.

The /var/www/html/index.html file’s permissions should be 0744 on all app servers.

Note:

i. Validation will try to run playbook using command ansible-playbook -i inventory playbook.yml so please make sure playbook works this way, without passing any extra arguments.

ii. Do not use any custom or empty marker for blockinfile module.

Solutions :

$ vi /home/thor/ansible/playbook.yml

- name: Install httpd and setup index.html
  hosts: stapp01, stapp02, stapp03
  become: yes
  tasks:
  - name: Install httpd
    package:
      name: httpd
      state: present
  - name: Start service httpd, if not started
    service:
      name: httpd
      state: started
  - name: Add content block in index.html and set permissions
    blockinfile:
      path: /var/www/html/index.html
      create: yes
      block: |
        Welcome to XfusionCorp!
        This is Nautilus sample file, created using Ansible!
        Please do not modify this file manually!
      owner: apache
      group: apache
      mode: "0744"
$ ansible-playbook -i inventory playbook.yml
$ curl http://stapp01/
$ curl http://stapp02/
$ curl http://stapp03/

Leave a Reply

Your email address will not be published. Required fields are marked *