As part of our never-ending quest at EDB to innovate and integrate with other products, we continue our series about integrating EDB “edb-ansible” scripts with Ansible Tower with this second blog post. In our previous post, Ansible Tower and Postgres Reference Architectures, we looked at how Ansible differs from Ansible Tower, provided a brief overview of how Ansible Tower can be utilized in conjunction with “edb-ansible” scripts, and described the components of Ansible Tower.
In this blog post, we will be covering the greyed out areas in the diagram below:
Based on Red Hat Ansible User guide
What is an Ansible Tower Project?
An Ansible Tower Project is a logical collection of Ansible Playbooks. Playbooks can be managed within an Ansible Tower Project:
- Manually within a directory in the Tower Server - /var/lib/awx/projects. We will perform this process in a project prior to creating the Ansible Tower Template.
- Importing from a Source Control Management System such as: Git, Subversion or Mercurial. Which is what we will be accomplishing in this blog.
With an understanding of what an Ansible Tower Project is, we will need to create two projects:
- Project to download the hosts inventory file
- Project to download the edb_devops.edb_postgres Ansible Galaxy Collection
Requirements for the project to download the hosts inventory file
Create a Project that connects to the github repository that contains your host file in a format such as:
all:
children:
pemserver:
hosts:
pemserver1:
ansible_host: xxx.xxx.xxx.xxx
private_ip: xxx.xxx.xxx.xxx
primary:
hosts:
primary1:
ansible_host: xxx.xxx.xxx.xxx
private_ip: xxx.xxx.xxx.xxx
pem_agent: true
pem_server_private_ip: xxx.xxx.xxx.xxx
standby:
hosts:
standby1:
ansible_host: xxx.xxx.xxx.xxx
private_ip: xxx.xxx.xxx.xxx
upstream_node_private_ip: xxx.xxx.xxx.xxx
replication_type: synchronous
pem_agent: true
pem_server_private_ip: xxx.xxx.xxx.xxx
standby2:
ansible_host: xxx.xxx.xxx.xxx
private_ip: xxx.xxx.xxx.xxx
upstream_node_private_ip: xxx.xxx.xxx.xxx
replication_type: asynchronous
pem_agent: true
pem_server_private_ip: xxx.xxx.xxx.xxx
The repository should also contain:
- A folder named: collections
- A file named: requirements.yml with the content:
collections:
- name: edb_devops.edb_postgres
Create the hosts inventory file project
- Click Projects on the left hand navigation
- Click the Green Plus Sign on the right hand side of the browser
- Enter the name of the project, for example: EDB-CLOUD-Inventory
- Select Git from the SCM TYPE Dropdown
- Type in the SCM URL TextBox: http://<your_repository>
- Check Clean CheckBox from the SCM UPDATE OPTIONS
- Click the Green SAVE Button
The project should like similar to the screenshot below:
Create the project to download the edb_devops.edb_postgres Ansible Galaxy Collection
- Click Projects on the left hand navigation
- Click the Green Plus Sign on the right hand side of the browser
- Enter the name of the project, for example: EDB-ANSIBLE-GALAXY
- Select Git from the SCM TYPE Dropdown
- Type in the SCM URL TextBox: https://github.com/EnterpriseDB/edb-ansible-tower
- Check Clean CheckBox from the SCM UPDATE OPTIONS
- Click the Green SAVE Button
The project should look similar to the results below:
Summary
Creating projects in Ansible Tower is not difficult, but you do have to plan and take into account their purpose at the moment of their creation, and how these projects will interact with the other components: Inventories, Credentials and Templates. The following blog topics I'll cover will build towards the final step, which will be creating a manual local Project and a Template for its execution.
Stay tuned for the upcoming blog post, Configuring Credentials for “edb-ansible” Scripts on Ansible Tower!