Course Code: ansdell
Duration: 35 hours
Prerequisites:
  • Prerequisite Knowledge/Skills
    This course assumes that the students are familiar with:
    • A working knowledge of linux is recommended
    This outline can be optimized for a custom presentation. Topics we can
    emphasize are listed (but not limited to) below:
    • Ansible for Storage Strategies
    ○ Ansible and Dell PowerMax
    ○ Ansible and Dell Isilon / PowerScale
    ○ Ansible and Dell PowerStore
    ○ Ansible and Pure Storage
    ○ Ansible for NetApp Storage
    • Ansible and Jenkins for Orchestration
Overview:

Audience

This course is intended for network and server administrators who need to automate network tasks and bring structure to deployments, implementations and changes.

Overview
This course offers a flexible (customizable) overview of using Ansible to automate the suite of Dell storage products including PowerMax, Isilon/PowerScale and PowerStore. Examples highlight Ansible’s latest current release capabilities, building complex playbooks, and developing workflow strategies all while observing best-practice techniques.

Students will be encouraged to share with the class the manual ways they are currently doing work in an effort to create highly applicable Ansible solutions.
Through these demonstrations, students will learn how to use code to extend structure and consistency to their specific job operations. Although this course focuses on Dell Storage solutions, Ansible is a Swiss-Army knife of abstracted automation. Every lesson is highly applicable beyond “just” the Dell storage suite.

Course Outline:

1. Introduction to Environment
• Ansible definition
• Exploring modules
• Building a task
• Collections (content delivery)
• Places to define Ansible vars
• hosts aka "Inventory"
• Creating a “play”

• Looking at the “handler”
• Running a playbook
• Requirements for connecting to remote hosts

2. Installation and Configuration
• Configuration requirements on the control machine
• Understanding pre-requisites for connecting to remote infrastructure
• Ansible configuration with ansible.cfg
• Ansible connection types
• Touring the Ansible Python Plugin system

3. Ansible Static Inventory
• Defining Hosts and Groups
• Host and Group variables
• Understanding variable precedence

4. YAML
• YAML Spec
• YAML Dictionary
• YAML list
• YAML list of dictionaries
• YAML Alternate format
• Relationship to JSON

5. Writing a Simple Playbook for Dell Storage (PowerMax, Isilon/PowerScale and
PowerStore)
• Elements of a playbook
• Dell Storage Collections
• Using include files for tasks
• Available Dell Storage modules
• Creating dynamic playbooks with external variable files
• How a Dell inventory may differ from static inventories

6. Ansible base modules to know
• Understanding modules documentation
• setup / gather_facts
• gathering facts on Dell storage arrays
• apt / yum / pip
• command / shell
• uri module for API lookups
• git
• debug for variable display
• lineinfile for building configuration files
• Writing Ansible Playbooks with Dell Storage Modules and Ansible Base
modules

7. Variables, Conditionals and Looping Tasks
• Variables and Loops
• Building conditionals from Dell Storage module results
• Blocks

• Getting variables from the system
• Setting variables in playbooks
• Getting variables from the command line
• Where is the best source to derive variables values?

8. Ansible and Jinja
• What is Jinja2?
• jinja variables
• jinja filters
• How to use ansible template
• Building Jinja2 templates for Dell Storage

9. Ansible and RESTful API Requests
• Passing parameters within RESTful API requests
• General tips for connecting Ansible to any API
• AWS S3 Bucket Storage Example

10. Dynamic Inventory Management
• What is Dynamic Inventory?
• A review of static Inventory Practices
• Using JSON as an Inventory Source
• Using YAML as an Inventory Source

11. Securing Credentials for Dell Storage
• Best practices for credential management
• Prompting for sensitive input
• YAML shortcuts for passing credentials to Dell Storage
• Securing credentials with Ansible Vault
• Encrypting Playbooks with Ansible Vault

12. Collections, Roles and Ansible Galaxy
• Why we need Ansible Roles
• The problems solved by Ansible Collections
• Creating Roles
• Creating Collections
• Role Directory Structure
• Role default variables
• Converting a Playbook to a Role
• Exploring Ansible Galaxy
• Finding code on GitHub
• Augmenting Ansible with Ansible Galaxy content (Roles and Collections)

13. Ansible Tower / Jenkins
• Running Dell Storage playbooks in Ansible Tower
• Running Dell Storage playbooks in Jekins
• Why you should consider using Jenkins as a replacement for Ansible Tower
• Pushing and pulling playbooks from GitHub