workshops

Training Course for Ansible Automation Platform

This project is maintained by ericzji

Exercise 2.3 - Projects & job templates

Read this in other languages: uk English, japan 日本語.

A Tower Project is a logical collection of Ansible Playbooks. You can manage your playbooks by placing them into a source code management (SCM) system supported by Tower, including Git, Subversion, and Mercurial.

You should definitely keep your Playbooks under version control. In this lab we’ll use Playbooks kept in a Git repository.

Setup Git Repository

For this demonstration we will use playbooks stored in a Git repository:

https://github.com/ansible/workshop-examples

A Playbook to install the Apache webserver has already been commited to the directory rhel/apache, apache_install.yml:

---
- name: Apache server installed
  hosts: all

  tasks:
  - name: latest Apache version installed
    yum:
      name: httpd
      state: latest

  - name: latest firewalld version installed
    yum:
      name: firewalld
      state: latest

  - name: firewalld enabled and running
    service:
      name: firewalld
      enabled: true
      state: started

  - name: firewalld permits http service
    firewalld:
      service: http
      permanent: true
      state: enabled
      immediate: yes

  - name: Apache enabled and running
    service:
      name: httpd
      enabled: true
      state: started

Tip

Note the difference to other Playbooks you might have written! Most importantly there is no become and hosts is set to all.

To configure and use this repository as a Source Control Management (SCM) system in Tower you have to create a Project that uses the repository

Create the Project

Now you need the URL to access the repo. Go to the Github repository mentioned above, choose the green Clone or download button on the right, click on Use https and copy the HTTPS URL.

Note

If there is no Use https to click on, but a Use SSH, you are fine: just copy the URL. The important thing is that you copy the URL starting with https.

Enter the URL into the Project configuration:

The new Project will be synced automatically after creation. But you can also do this automatically: Sync the Project again with the Git repository by going to the Projects view and clicking the circular arrow Get latest SCM revision icon to the right of the Project.

After starting the sync job, go to the Jobs view: there is a new job for the update of the Git repository.

Create a Job Template and Run a Job

A job template is a definition and set of parameters for running an Ansible job. Job templates are useful to execute the same job many times. So before running an Ansible Job from Tower you must create a Job Template that pulls together:

Okay, let’s just do that: Go to the Templates view, click the plus button and choose Job Template.

Tip

Remember that you can often click on magnfying glasses to get an overview of options to pick to fill in fields.

You can start the job by directly clicking the blue LAUNCH button, or by clicking on the rocket in the Job Templates overview. After launching the Job Template, you are automatically brought to the job overview where you can follow the playbook execution in real time:

job exection

Since this might take some time, have a closer look at all the details provided:

After the Job has finished go to the main Jobs view: All jobs are listed here, you should see directly before the Playbook run an SCM update was started. This is the Git update we configured for the Project on launch!

Challenge Lab: Check the Result

Time for a little challenge:

You have already been through all the steps needed, so try this for yourself.

Tip

What about systemctl status httpd?

Warning

Solution Below

What About Some Practice?

Here is a list of tasks:

Warning

Please make sure to finish these steps as the next chapter depends on it!

Tip

The Job didn’t change anything because Apache was already installed in the latest version.


Click here to return to the Ansible for Red Hat Enterprise Linux Workshop