A2-001 is the second certification in the multi-level professional certification program of the DevOps Artisan Automation Learning Path.
An IT professional who has become Automation Engineer Professional artisan demonstrates the skills, knowledge, and abilities needed to use Ansible and Terraform to automate the management and deployment of systems in different environments.
Prerequisite
The candidate must have an active A1-001 certification in order to take the A2-001 exam.
Objective 1.1. Explain what Ansible is and which are the benefits of using it
Details
• Explain Ansible concepts
• Explain Ansible architecture
• Explain the key benefits of using Ansible
• Describe some systems that can easily be managed with Ansible
Objective 1.2. Explain Ansible roles installation and role dependencies
Details
• Describe Ansible roles structure
• Explain installation steps for roles
• Explain installation steps for role dependencies
Objective 1.3. Explain Ansible main features and advantages
Details
• Describe the agentless Ansible architecture
• Describe the performance of Ansible
• Describe the security of Ansible
• Explain how to disable host key checking
Objective 1.4. Explain how Ansible works
Details
• Describe Ansible modules usage
• Describe the inventory (graph/list, static/dynamic, nested groups, vars)
• Describe the configuration file
• Describe Dynamic Inventory types (plugins and scripts)
• Describe Ansible prompts and functions (user input)
• Describe Ansible most common plugins
Objective 1.5. Describe how to use Ansible with ad-hoc commands
Details
• Describe ad-hoc commands structure (ansible command)
• Describe how to pass different arguments to modules
• Describe authentication methods available
Objective 1.6. Describe how to use Ansible with playbooks
Details
• Describe YAML language basics
• Describe general playbook structure
• Describe difference between tasks, plays and playbooks
• Describe task results types
• Best practices to write idempotent tasks
• Describe difference between tasks and handlers
• Describe the usage of tags
• Describe data types available in Ansible
• Describe how to run tasks asynchronous and how to wait on a condition before continuing execution of a playbook
• Describe different modules used to copy (large amount of) data
• Explain how to abort playbook execution
• Explain how to force handlers to be executed
• Describe the Ansible running modes
Objective 1.7. Describe Ansible facts and variables
Details
• Explain what are facts and when is fact gathering performed
• Describe how to disable default behaviour regarding fact gathering
• Explain how to create and use custom facts
• Explain what are variables and how to use them in playbooks
• Explain the difference between facts and variables
• Describe variables precedence (e.g. extra vars)
Objective 1.8. Explain Loops and Conditionals
Details
• Explain how are loops implemented in Ansible
• Describe how to use (multiple) Conditionals
• Explain how to combine Loops and Conditionals
• Explain how to keep track of loop index
• Explain how to use nested loops
Objective 1.9. Describe Ansible Templates
Details
• Explain the main usage of Ansible templates
• Describe the Jinja 2 template language
• Describe what are the most common tests in Jinja2
• Describe the template module parameters
• Describe Jinja 2 filters usage
• Describe most useful filters
Objective 1.10. Describe usage of Ansible Vault
Details
• Explain the advantages of Ansible Vault
• Describe Ansible Vault commands
• Describe using of multiple vaults in the same playbook
• Explain how to speed up Ansible Vault operations
Objective 1.11. Describe Ansible Roles
Details
• Explain the role usage and directory structure
• Describe role variables precedence
• Describe methods of how to refer roles in playbooks
• Describe how to refer a role multiple times in a playbook
Objective 1.12. Describe Ansible lookups
Details
• Describe the most common types of lookup plugins
• Explain the lookups evaluation process
• Describe differences between plugin lookups
• Describe return types returned by plugin lookups
Objective 1.13. Describe Ansible Pull
Details
• Explain how Ansible Pull works
• Describe how to use Ansible Pull
Objective 1.14. Describe Ansible Galaxy
Details
• Describe the usage of Ansible Galaxy
• Explain the ansible-galaxy command (with subcommands)
• Describe the creating of collection tarball
Objective 1.15. Describe best practices of Ansible
Details
• Describe the Ansible execution strategies
• Explain how to use Ansible debugger (including commands)
• Explain pipelining in Ansible
• Explain how to show time spent of tasks
• Describe delegation and how it works (also delegation restrictions)
• Explain how to abort play execution depending of failure
• Describe the difference between forks and throttle
• Describe the difference between include and import statements
• Explain how to show time spent on tasks execution
• Explain how to reset “UNREACHABLE” hosts during playbook execution
• Explain what is Ansible molecule
Part 2: Terraform
Objective 2.1. Understand Terraform basics
Details
• Explain the implication of Terraform using a declarative language
• Describe provider configurations
• Explain how provider version constraints are implemented
• Explain the usage scenarios for multiple provider definitions
• Explain the configuration of aliased providers
• Describe the syntax of an output block
• Explain how Terraform identifies the necessary providers when deploying configurations
• Explain resource addressing within Terraform configuration files
Objective 2.2. Using the Terraform CLI
Details
• Describe the functions behind the basic Terraform command line arguments
• Explain the purpose of the “terraform init” command
• Explain the purpose of the “terraform validate” command
• Explain the behaviour of the resource import functionality in Terraform
Objective 2.3. Understand the Terraform workflow
Details
• Describe the output of the “terraform plan” command
• Explain how the output of the “terraform plan” operation can be saved
• Describe infrastructure changes performed by the “terraform apply” command
• Describe infrastructure changes performed by the “terraform destroy” command
• Explain error messages generated during a deployment operation
Objective 2.4. Understand Terraform syntax
Details
• Describe how basic data types work
• Describe the usage of Terraform’s built-in functions
• Explain how variables are defined and used
• Differentiate between multiple methods of initializing variables
• Explain how “.tfvars” files work
• Describe the available configuration options inside a “terraform” code block
Objective 2.5. Read, generate, and modify Terraform configurations
Details
• Describe the generic syntax of a resource configuration
• Describe the generic syntax of a data source configuration
• Explain the configuration of resources using dynamic blocks
• Explain how Terraform detects changes in a deployed infrastructure
• Describe how “local-exec” and “remote-exec” provisioners work
• Explain Terraform’s behaviour when encountering provisioner errors
• Explain how tainting resources influences a deployment
• Explain how explicit resource dependencies can be created
• Describe how modules can be created and imported
• Describe how provider configurations are used in a module-based deployment
Objective 2.6. Implement and manage state
Details
• Explain the idempotency feature of Terraform
• Describe the structure of a state file
• Explain the importance of state locking
• Describe the process of refreshing the state file
• Explain when state refresh is performed automatically by Terraform
• Explain the Terraform commands for modifying the state file
• Describe the capabilities of different types of backends