Exercise 1.0: Exploring the lab environment

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

Before you get started, please join us on slack! Click here to join the ansiblenetwork slack. This will allow you to chat with other network automation engineers and get help after the workshops concludes.

Table of Contents

Objective

Explore and understand the lab environment.

These first few lab exercises will be exploring the command-line utilities of the Ansible Automation Platform. This includes

If you need more information on new Ansible Automation Platform components bookmark this landing page https://red.ht/AAP-20

Before you get started, please join us on slack! Click here to join the ansiblenetwork slack. This will allow you to chat with other network automation engineers and get help after the workshops concludes. If the link goes stale please email Ansible Technical Marketing

Guide

Step 1 - Connecting via VS Code

It is highly encouraged to use Visual Studio Code to complete the workshop exercises. Visual Studio Code provides:
  • A file browser
  • A text editor with syntax highlighting
  • A in-browser terminal
Direct SSH access is available as a backup, or if Visual Studio Code is not sufficient to the student. There is a short YouTube video provided if you need additional clarity: Ansible Workshops - Accessing your workbench environment.

Step 2 - Using the Terminal

Navigate to the f5-workshop directory on the Ansible control node terminal.

[student1@ansible-1 ~]$ cd ~/f5-workshop/
[student1@ansible-1 f5-workshop]$ pwd
/home/student1/f5-workshop
[student1@ansible-1 f5-workshop]$

Step 3 - Examining Execution Environments

Run the ansible-navigator command with the images argument to look at execution environments configured on the control node:

$ ansible-navigator images

ansible-navigator images

Note: The output you see might differ from the above output

This command gives you information about all currently installed Execution Environments or EEs for short. Investigate an EE by pressing the corresponding number. For example pressing 2 with the above example will open the ee-supported-rhel8 execution environment:

ee main menu

Selecting 2 for Ansible version and collections will show us all Ansible Collections installed on that particular EE, and the version of ansible-core:

ee info

Step 4 - Examining the ansible-navigator configuration

Either use Visual Studio Code to open or use the cat command to view the contents of the ansible-navigator.yml file. The file is located in the home directory:

$ cat ~/.ansible-navigator.yml
---
ansible-navigator:
  ansible:
    inventories:
    - /home/student1/lab_inventory/hosts
  execution-environment:
    image: quay.io/acme_corp/f5_ee:latest
    enabled: true
    container-engine: podman
    pull-policy: missing
    volume-mounts:
    - src: "/etc/ansible/"
      dest: "/etc/ansible/"

Note the following parameters within the ansible-navigator.yml file:

For a full listing of every configurable knob checkout the documentation

Step 5 - Examining inventory

The scope of a play within a playbook is limited to the groups of hosts declared within an Ansible inventory. Ansible supports multiple inventory types. An inventory could be a simple flat file with a collection of hosts defined within it or it could be a dynamic script (potentially querying a CMDB backend) that generates a list of devices to run the playbook against.

In this lab you will work with a file based inventory written in the ini format. Either use Visual Studio Code to open or use the cat command to view the contents of the ~/lab_inventory/hosts file.

$ cat ~/lab_inventory/hosts
[all:vars]
ansible_user=student2
ansible_password=ansible
ansible_port=22

[lb]
f5 ansible_host=34.199.128.69 ansible_user=admin private_ip=172.16.26.136 ansible_password=admin

[control]
ansible ansible_host=107.23.192.217 ansible_user=ec2-user private_ip=172.16.207.49

[web]
node1 ansible_host=107.22.141.4 ansible_user=ec2-user private_ip=172.16.170.190
node2 ansible_host=54.146.162.192 ansible_user=ec2-user private_ip=172.16.160.13

Step 6 - Understanding inventory

In the above output every [ ] defines a group. For example [web] is a group that contains the hosts node1 and node2.

Note: A group called all always exists and contains all groups and hosts defined within an inventory.

We can associate variables to groups and hosts. Host variables are declared/defined on the same line as the host themselves. For example for the host f5:

f5 ansible_host=34.199.128.69 ansible_user=admin private_ip=172.16.26.136 ansible_password=admin

Does the password have to be in plain text? No, Red Hat Ansible Tower can take care of credential management in an easy to use web GUI or a user may use ansible-vault

Step 7 - Using ansible-navigator to explore inventory

We can also use the ansible-navigator TUI to explore inventory.

Run the ansible-navigator inventory command to bring up inventory in the TUI:

ansible-navigator tui

Pressing 0 or 1 on your keyboard will open groups or hosts respectively.

ansible-navigator groups

Press the Esc key to go up a level, or you can zoom in to an individual host:

ansible-navigator host

```

Complete

You have completed lab exercise 1!

You now understand:


Click here to return to the lab guide