cleaned up linting and added AAP on Code ready

This commit is contained in:
chadmf
2021-12-06 16:01:14 -06:00
parent a12658cbcc
commit 12f51112ab
135 changed files with 724 additions and 403 deletions

View File

@@ -0,0 +1,268 @@
# Official Ansible Product Demos
This repo currently under construction and working on a minimal viable demo for testing purposes
# Table of contents
* [How to use](#how-to-use)
* [1. Provide login information and choose demo](#1-provide-login-information-and-choose-demo)
* [2. Run Ansible Playbook](#2-run-ansible-playbook)
* [Demo Repository](#demo-repository)
* [Infrastructure Demos](#infrastructure-demos)
* [Network Demos](#network-demos)
* [Security Demos](#security-demos)
* [Developer Demos](#developer-demos)
* [Contribute](#contribute)
* [Notes](#notes)
# How to use
## 1. Provide login information and choose demo
- Modify the `choose_demo.yml` file that is included in this repo with the username, password and IP address (or DNS name) of your Ansible Tower
- Choose the demo name you want from the table below (or choose `all`)
## 2. Run Ansible Playbook
```
ansible-playbook playbooks/install_demo.yml -e @choose_demo.yml
```
# Demo Repository
This repository currently holds 21 demos.
## Infrastructure Demos
<table>
<tr>
<th>Demo Name</th>
<th>Author</th>
<th>install_demo.yml value</th>
<th>Description</th>
<th>Video Walkthrough</th>
<th>Workshop Types</th>
</tr>
<tr>
<td><a href="https://github.com/ansible/product-demos/blob/master/docs/infrastructure/azure_provision_vm.md">INFRASTRUCTURE / Azure create a MySQL Server</a></td>
<td>David Rojas</td>
<td><pre>demo: azure_mysql_server</pre></td>
<td>Provision MySQL server on Azure with Ansible Tower Survey and Environmental variables</td>
<td>Not available </td>
<td><ul><li>windows</li><li>demo</li></ul></td>
</tr>
<tr>
<td><a href="https://github.com/ansible/product-demos/blob/master/docs/infrastructure/azure_provision_vm.md">INFRASTRUCTURE / Azure Provision VM</a></td>
<td>David Rojas</td>
<td><pre>demo: azure_provision_vm</pre></td>
<td>Provision RHEL VM on Azure with Ansible Tower Survey and Environmental variables</td>
<td>Not available </td>
<td><ul><li>windows</li><li>demo</li></ul></td>
</tr>
<tr>
<td><a href="https://github.com/ansible/product-demos/blob/master/docs/infrastructure/chocolatey_app_install.md">INFRASTRUCTURE / Chocolatey App Install</a></td>
<td>David Rojas</td>
<td><pre>demo: chocolatey_app_install</pre></td>
<td>Install various application packages using Chocolatey from a survey</td>
<td>Not available </td>
<td><ul><li>windows</li><li>demo</li></ul></td>
</tr>
<tr>
<td><a href="https://github.com/ansible/product-demos/blob/master/docs/infrastructure/chocolatey_config.md">INFRASTRUCTURE / Chocolatey Config</a></td>
<td>David Rojas</td>
<td><pre>demo: chocolatey_config</pre></td>
<td>Configure Chocolatey parameters that require not just enabling but adding values</td>
<td>Not available </td>
<td><ul><li>windows</li><li>demo</li></ul></td>
</tr>
<tr>
<td><a href="https://github.com/ansible/product-demos/blob/master/docs/infrastructure/chocolatey_features.md">INFRASTRUCTURE / Chocolatey Features Config</a></td>
<td>David Rojas</td>
<td><pre>demo: chocolatey_features</pre></td>
<td>Enable or disable various Chocolatey features</td>
<td>Not available </td>
<td><ul><li>windows</li><li>demo</li></ul></td>
</tr>
<tr>
<td><a href="https://github.com/ansible/product-demos/blob/master/docs/infrastructure/deploy_application.md">INFRASTRUCTURE / Deploy Application</a></td>
<td>Sean Cavanaugh</td>
<td><pre>demo: deploy_application</pre></td>
<td>install yum applications on Linux with a survey</td>
<td><a href="https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED">Video Link</a></td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td>INFRASTRUCTURE / Fact Scan</td>
<td>Will Tome</td>
<td><pre>demo: fact_scan</pre></td>
<td>scan facts for Linux and Windows systems</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>windows</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td>INFRASTRUCTURE / Gather Debug Info</td>
<td>Will Tome</td>
<td><pre>demo: debug_info</pre></td>
<td>provide info for memory and CPU usage for specified systems</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td>INFRASTRUCTURE / Grant Sudo</td>
<td>Will Tome</td>
<td><pre>demo: grant_sudo</pre></td>
<td>grant sudo privledges for specified time via survey</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td>INFRASTRUCTURE / Patching</td>
<td>Will Tome</td>
<td><pre>demo: patching</pre></td>
<td>patching for Linux servers</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td>INFRASTRUCTURE / Red Hat Insights</td>
<td>Sean Cavanaugh</td>
<td><pre>demo: insights</pre></td>
<td>install and configure Red Hat Insights</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td>INFRASTRUCTURE / Security Patching</td>
<td>Will Tome</td>
<td><pre>demo: security_patching</pre></td>
<td>upgrade all yum packages for security related except kernel</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td>INFRASTRUCTURE / Turn off IBM Community Grid</td>
<td>Sean Cavanaugh</td>
<td><pre>demo: turn_off_community_grid</pre></td>
<td>this role turns off IBM Community Grid boinc-client</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td><a href="https://github.com/ansible/product-demos/blob/master/docs/infrastructure/windows_regedit_legal_notice.md">INFRASTRUCTURE / Windows regedit legal notice</a></td>
<td>David Rojas</td>
<td><pre>demo: windows_regedit_legal_notice</pre></td>
<td>using regedit modify the legal notice</td>
<td>Not available </td>
<td><ul><li>windows</li><li>demo</li></ul></td>
</tr>
<tr>
<td>SERVER / Windows IIS Server</td>
<td>Colin McNaughton</td>
<td><pre>demo: windows_iis</pre></td>
<td>install webserver on Windows Server with a survey</td>
<td>Not available </td>
<td><ul><li>windows</li><li>demo</li></ul></td>
</tr>
</table>
## Network Demos
<table>
<tr>
<th>Demo Name</th>
<th>Author</th>
<th>install_demo.yml value</th>
<th>Description</th>
<th>Video Walkthrough</th>
<th>Workshop Types</th>
</tr>
<tr>
<td>Cisco IOS logging config audit/remediation</td>
<td>Colin McCarthy</td>
<td><pre>demo: configlet_logging</pre></td>
<td>Cisco IOS logging config audit/remediation</td>
<td>Not available </td>
<td><ul><li>network</li><li>demo</li></ul></td>
</tr>
<tr>
<td>Cisco IOS ntp config audit/remediation</td>
<td>Colin McCarthy</td>
<td><pre>demo: configlet_ntp</pre></td>
<td>Cisco IOS ntp config audit/remediation</td>
<td>Not available </td>
<td><ul><li>network</li><li>demo</li></ul></td>
</tr>
<tr>
<td>NETWORK / WORKFLOW - F5 BIG-IP</td>
<td>Sean Cavanaugh</td>
<td><pre>demo: f5_bigip_workflow</pre></td>
<td>Workflow for F5 BIG-IP to setup a VIP (Virtual IP) load balancer between two RHEL webservers</td>
<td>Not available </td>
<td><ul><li>f5</li><li>demo</li></ul></td>
</tr>
</table>
## Security Demos
<table>
<tr>
<th>Demo Name</th>
<th>Author</th>
<th>install_demo.yml value</th>
<th>Description</th>
<th>Video Walkthrough</th>
<th>Workshop Types</th>
</tr>
<tr>
<td>SECURITY / Create Openscap Report</td>
<td>Sean Cavanaugh</td>
<td><pre>demo: openscap</pre></td>
<td>Create HTML report using SCAP Security Guide (SSG)</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
<tr>
<td>SECURITY / Hardening</td>
<td>Will Tome</td>
<td><pre>demo: hardening</pre></td>
<td>hardening for Linux servers</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
</table>
## Developer Demos
<table>
<tr>
<th>Demo Name</th>
<th>Author</th>
<th>install_demo.yml value</th>
<th>Description</th>
<th>Video Walkthrough</th>
<th>Workshop Types</th>
</tr>
<tr>
<td>DEVELOPER / Create Developer Report</td>
<td>Sean Cavanaugh</td>
<td><pre>demo: developer_report</pre></td>
<td>'Create HTML report using <a href="https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variables-discovered-from-systems-facts">Ansible facts</a>'
</td>
<td>Not available </td>
<td><ul><li>f5</li><li>rhel</li><li>rhel_90</li><li>demo</li></ul></td>
</tr>
</table>
# Contribute
please refer to the [contribute.md](docs/contribute.md) documentation included in this collection.
# Notes
This README.md was auto-generated by Ansible user **colin** on **2020-12-09** with Ansible version **2.9.13.post0**
To generate a README.md, execute the following command
```
ansible-playbook playbooks/generate_readme.yml
```

View File

@@ -0,0 +1,77 @@
# Contribute
So you want to create a demo? What do you do? These demos are considered "demos as code" so every demo must adhere to our standards and be highly re-usable.
## Requirements
- Must work with Ansible Tower / Ansible Automation Platform. There has to be a UX component to the demo.
- Must be ephemeral and require no service that cannot be reproduced in an automated fashion. This means a demo that requires the user to create a personalized token with an external service (e.g. ServiceNow, Slack) is not appropriate here because it would require manual steps for a user to recreate your demo.
- Must align with Red Hat use-cases. A demo that programs your lawn mower is not something we would actually demonstrate. You can easily create a fork of this repo and make your own fun project.
You need **three** major components to get a demo accepted
## 1. Demo var file
In the principle of "everything as code", these are "demos as code". Each demo has its own individual var file. All var files are installed under:
```shell
/roles/install_demo/vars/main
```
There are four categories of demos:
1. **infrastructure** - automation for IT infrastructure such as Linux and Windows.
2. **network** - automation for network infrastructure such as routers and switches.
3. **security** - automation for SIEMs, firewalls, and IPS such as IBM Qradar, Splunk and Checkpoint.
4. **developer** - automation for developer persona, such as CI/CD pipelines, web hooks, developer environments and automated testing
Look at a very specific example here: `deploy_application.yml`
Location: `roles/install_demo/vars/main/infrastructure/deploy_application.yml`
Link: [https://github.com/ansible/product-demos/blob/master/roles/install_demo/vars/main/infrastructure/deploy_application.yml](https://github.com/ansible/product-demos/blob/master/roles/install_demo/vars/main/infrastructure/deploy_application.yml)
## 2. Ansible Playbook
In the demo var file above you will notice a `playbook` line. For example in the `deploy_application.yml` example:
`playbook: "playbooks/infrastructure/deploy_application.yml"`
There is also a **project** section of the demo var file
```yml
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
```
The Ansible Playbook **does NOT** have to exist in this repo. In fact it is encouraged to fork this repo and test it out by pointing to your own repo. It is also recommended to create Ansible Playbooks that work on the [Ansible Automation Workshop](https://github.com/ansible/workshops) topologies. This makes them extremely re-usable.
## 3. Walkthrough
Each demo should have a walkthrough. In the demo var file there is a line with the key `readme`. For example for the `deploy_application.yml`:
```yml
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/deploy_application.md"
```
Here is an example walkthrough for the `deploy_application.yml` demo: [https://github.com/ansible/product-demos/blob/master/docs/infrastructure/deploy_application.md](https://github.com/ansible/product-demos/blob/master/docs/infrastructure/deploy_application.md)
## Converting Existing Workflows into ephemeral demos
There is no way in the Ansible Tower API to access the workflow schema at this time (March 2020). Please refer to the docs and use the awx-cli/tower-cli command to export existing Workflow schema: [https://github.com/ansible/tower-cli/blob/master/docs/source/cli_ref/usage/WORKFLOWS.rst](documentation).
The Workflow schema can be automated by using the [tower_workflow_template](https://docs.ansible.com/ansible/latest/modules/tower_workflow_template_module.html#parameter-schema) module to load Ansible Tower with an entire Workflow.
## update May 2020
The [awx.awx collection](https://galaxy.ansible.com/awx/awx) has some new enhancements to allow installation of Ansible workflows Please coordinate with Ansible API team if you need help.
## Going Further
The following links will be helpful if you want to contribute code to the Ansible Workshops project, or any Ansible project:
- [Ansible Committer Guidelines](http://docs.ansible.com/ansible/latest/committer_guidelines.html)
- [Learning Git](https://git-scm.com/book/en/v2)

View File

@@ -0,0 +1,6 @@
# Red Hat Ansible Automation Platform Features
| Feature | How? | Long Description | Product Documentation |
| ------- | ---- | ---------------- | --------------------- |
|Push button deployment| Ansible Platform UI| The Ansible Automation Platform provides a intuitive web user-interface. This can be locked down so that only certain individuals or groups can launch Jobs on specific inventory. This allows automation to have guard rails on who can automate what. Users don't have to be an Ansible Playbook writers to launch and use automation. | [Docs Link](https://docs.ansible.com/ansible-tower/latest/html/userguide/overview.html#push-button-automation)|
| Self Service IT| Surveys | Ansible Automation Platform `surveys` allow simple prompts to guide automation. For example a user can choose one application they want to install on their inventory from a pre-defined list. Surveys are fully customizable by administrators for that specific Job.| [Docs Link](https://docs.ansible.com/ansible-tower/latest/html/userguide/job_templates.html#surveys)|

View File

@@ -0,0 +1,107 @@
# Demo: AMS Provision VM
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: AMS Provision VM](#demo-ams-provision-vm)
- [Table of Contents](#table-of-contents)
- [Objective](#objective)
- [What business problem is solved?](#what-business-problem-is-solved)
- [Features show cased](#features-show-cased)
- [Video](#video)
- [Installing Demo](#installing-demo)
- [Guide](#guide)
## Objective
Demostrate how anisble can be used to provision a RHEL VM in AWS
## What business problem is solved?
- **speed to market**:
reducing human time to provision VMs
- **reduce human error**:
standardize and automation a complex set of steps to reduce human errors
- **reduce complexity**:
does not require a System Administrator familiar with any cloud provider or its interface in order to provision any resources
## Features show cased
- Push button cloud provisioning
- Self Service IT - Surveys
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Video
Coming Soon
## Installing Demo
1. You will need to create programmatic access keys by following these [AWS Docs instructions](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) See the section called "Programmatic access"
2. Then set the public_cloud variable to aws. As well as provide the folowing variable values before loading this demo as shown below.
- public_cloud: aws
- my_access_key:
- my_secret_key:
See sample file named choose_demo_example_aws.yml
## Guide
1. Login to Ansible Platform UX
2. Navigate to **Templates**
![job templates](../images/templates.png)
3. Click the rocket next to **INFRASTRUCTURE / AWS Provision VM** to launch the Job
![rocket launch](../images/rocket.png)
4. The survey will prompt you to define the key pair, AWS region, VPC, Instance Type, and name of the new VM.
![survey choice](../images/aws_provision_vm/aws_provision_vm_survey.jpeg)
5. Enter values and press **NEXT**
![survey preview](../images/aws_provision_vm/aws_provision_vm_survey_preview.jpeg)
Explain to audience what is happening here depending on audience persona
**Persona A**: Technical audience that has written Ansible Playbooks before:
Ansible can be used for more than on prem infrustructure it can also be used to provision many resource on the public clouds. Surveys create variables that the Job can use within Ansible Playbooks. This gives you the ability to create one playbook that can be used for various instance sizes of RHEL provisioned in various AWS regions instead of a job template for each region or VM provisioned. Again saving you time and effort to write seperate playbooks for each use case. In the screenshot you will see the variables are named **keypair**, **aws_region**, **vpc_name**, **instance_type** and **instance_name** with the values of testkey1, us-west-1, testvpc1, t2.micro, demo1
**Persona B**: Decision maker audience, IT manager or above:
reiterate business values above. This allows a non AWS Cloud expert the ability to automate routine tasks within a cloud environment. They can't provision servers that are not vetted and put within the job template or to locations that are not preapproved within the Survey. Freeing them from the mundance and repeative task of VM provisioning while maintaining the highest level of security and compliance across your organization. In the event that your IT process does not allow the Red Hat Ansible Automation Platform to be the front end, it has a rich and powerful API that can work with existing workflows such as ServiceNow.
6. Execute the job by pressing the green **LAUNCH** button
7. Explain what is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane** labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who** - who launched the job, in this example is the admin user
- **what** - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when** - time stamps for start, end and duration of the job run.
- **how** - the job status (pass, fail), enviornment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output** to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
![task breakdown](../images/aws_provision_vm/aws_provision_vm_task_output.jpeg)
8. Circle back and summarize
You need to circle back what has been showcased to the [business reasons listed above](#what-business-problem-is-solved). You are welcome to verify on AWS Console that the RHEL server was actually provisioned but unless you have a very technical audience you are going to start losing folks. The real business solution here is automating away the mundane and repetative.
9. Verify RHEL VM is up (Optional)
Login to the AWS Console. Navigate to the EC2 service and locate your EC2 instances. You should see the new VM. You can cick on that new VM to see the details which should match how you defined it. Below is an example of what you will see
![Verify VM](../images/aws_provision_vm/aws_provision_vm_verify_ec2.jpeg)
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,104 @@
# Demo: Azure MySQL Server
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: Azure MySQL Server](#demo-azure-mysql-server)
- [Table of Contents](#table-of-contents)
- [Objective](#objective)
- [What business problem is solved?](#what-business-problem-is-solved)
- [Features show cased](#features-show-cased)
- [Video](#video)
- [Installing Demo](#installing-demo)
- [Guide](#guide)
## Objective
Demostrate how anisble can be used to provision a MySQL server and Database in the Azure Cloud
## What business problem is solved?
- **speed to market**:
reducing human time to provision a database
- **reduce human error**:
standardize and automation a complex set of steps to reduce human errors
- **reduce complexity**:
does not require a System Administrator familiar with any cloud provider or its interface in order to provision any resources
## Features show cased
- Push button cloud provisioning
- Self Service IT - Surveys
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Video
Coming Soon
## Installing Demo
1. You will need to create a Service Principal following these [Azure Docs instructions](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal)
2. Then set the public_cloud variable to azure. As well as provide the folowing variable values before loading this demo as shown below.
- public_cloud: azure
- my_subscription:
- my_tenant:
- my_client:
- my_secret:
See sample file named choose_demo_example_azure.yml
## Guide
1. Login to Ansible Platform UX
2. Navigate to **Templates**
![job templates](../images/templates.png)
3. Click the rocket next to **INFRASTRUCTURE / Azure create a MySQL Server** to launch the Job
![rocket launch](../images/rocket.png)
4. The survey will prompt you to define the resource group, Azure region, name MySQL database, and admin login for database.
![survey choice](../images/azure_mysql_server/azure_mysql_survey.jpeg)
5. Enter values and press **NEXT**
![survey preview](../images/azure_mysql_server/azure_mysql_survey_preview.jpeg)
Explain to audience what is happening here depending on audience persona
**Persona A**: Technical audience that has written Ansible Playbooks before:
Ansible can be used for more than on prem infrustructure it can also be used to provision many resource on the public clouds. Surveys create variables that the Job can use within Ansible Playbooks. This gives you the ability to create one playbook that can be used for reoccuring database provisioning in various Azure regions instead of a job template for each region or mySQL provisioned. Again saving you time and effort to write seperate playbooks for each use case. In the screenshot you will see the variables are named **resource_group**, **location**, **sqlserver_name**, **admin_pw**, **and adminuser** with the values you entered
**Persona B**: Decision maker audience, IT manager or above:
reiterate business values above. This allows a non Azure Cloud expert the ability to automate routine tasks within a cloud environment. They can't provision servers that are not vetted and put within the job template or to locations that are not preapproved within the Survey. Freeing them from the mundance and repeative task of datebase provisioning while maintaining the highest level of security and compliance across your organization. In the event that your IT process does not allow the Red Hat Ansible Automation Platform to be the front end, it has a rich and powerful API that can work with existing workflows such as ServiceNow.
6. Execute the job by pressing the green **LAUNCH** button
7. Explain what is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane** labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who** - who launched the job, in this example is the admin user
- **what** - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when** - time stamps for start, end and duration of the job run.
- **how** - the job status (pass, fail), enviornment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output** to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
![task breakdown](../images/azure_mysql_server/azure_mysql_task_output.jpeg)
8. Circle back and summarize
You need to circle back what has been showcased to the [business reasons listed above](#what-business-problem-is-solved). You are welcome to verify on the Azure Portal that the MySQL server database was actually provisioned but unless you have a very technical audience you are going to start losing folks. The real business solution here is automating away the mundane and repetative.
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,99 @@
# Demo: Azure Provision VM
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: Azure Provision VM](#demo-azure-provision-vm)
- [Table of Contents](#table-of-contents)
- [Objective](#objective)
- [What business problem is solved?](#what-business-problem-is-solved)
- [Features show cased](#features-show-cased)
- [Installing Demo](#installing-demo)
- [Guide](#guide)
## Objective
Demostrate how anisble can be used to provision a RHEL VM in the Azure Cloud
## What business problem is solved?
- **speed to market**:
reducing human time to provision VMs
- **reduce human error**:
standardize and automation a complex set of steps to reduce human errors
- **reduce complexity**:
does not require a System Administrator familiar with any cloud provider or its interface in order to provision any resources
## Features show cased
- Push button cloud provisioning
- Self Service IT - Surveys
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Installing Demo
1. You will need to create a Service Principal following these [Azure Docs instructions](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal)
2. Then set the public_cloud variable to azure. As well as provide the folowing variable values before loading this demo as shown below.
- public_cloud: azure
- my_subscription:
- my_tenant:
- my_client:
- my_secret:
See sample file named choose_demo_example_azure.yml
## Guide
1. Login to Ansible Platform UX
2. Navigate to **Templates**
![job templates](../images/templates.png)
3. Click the rocket next to **INFRASTRUCTURE / Chocolatey App Install*- to launch the Job
![rocket launch](../images/rocket.png)
4. The survey will prompt you to define the resource group, Azure region, name of the new VM.
![survey choice](../images/azure_provision_vm/azure_provision_vm_survey.jpeg)
5. Enter values and press **NEXT**
![survey preview](../images/azure_provision_vm/azure_provision_vm_survey_preview.jpeg)
Explain to audience what is happening here depending on audience persona
**Persona A**: Technical audience that has written Ansible Playbooks before:
Ansible can be used for more than on prem infrustructure it can also be used to provision many resource on the public clouds. Surveys create variables that the Job can use within Ansible Playbooks. This gives you the ability to create one playbook that can be used for reoccuring RHEL provisioning in various Azure regions instead of a job template for each region or VM provisioned. Again saving you time and effort to write seperate playbooks for each use case. In the screenshot you will see the variables are named **resource_group**, **location**, and **vm_name*- with the values of testdemorg7, eastus, and test-server07.
**Persona B**: Decision maker audience, IT manager or above:
reiterate business values above. This allows a non Azure Cloud expert the ability to automate routine tasks within a cloud environment. They can't provision servers that are not vetted and put within the job template or to locations that are not preapproved within the Survey. Freeing them from the mundance and repeative task of VM provisioning while maintaining the highest level of security and compliance across your organization. In the event that your IT process does not allow the Red Hat Ansible Automation Platform to be the front end, it has a rich and powerful API that can work with existing workflows such as ServiceNow.
6. Execute the job by pressing the green **LAUNCH*- button
7. Explain what is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane*- labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who*- - who launched the job, in this example is the admin user
- **what*- - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when*- - time stamps for start, end and duration of the job run.
- **how*- - the job status (pass, fail), enviornment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output*- to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
![task breakdown](../images/azure_provision_vm/azure_provision_vm_task_output.jpeg)
8. Circle back and summarize
You need to circle back what has been showcased to the [business reasons listed above](#what-business-problem-is-solved). You are welcome to verify on the Azure Portal that the RHEL server was actually provisioned but unless you have a very technical audience you are going to start losing folks. The real business solution here is automating away the mundane and repetative.
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,74 @@
# Demo: Chocolatey App Install
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: Chocolatey App Install](#demo-chocolatey-app-install)
- [Table of Contents](#table-of-contents)
- [Features show cased](#features-show-cased)
- [Video](#video)
- [Guide](#guide)
## Features show cased
- Push button deployment
- Self Service IT - Surveys
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Video
[Chocolatey Install App Packages Video Demo](https://www.youtube.com/watch?v=6OIgqaMBnfU&list=PLdu06OJoEf2bnEaWYY0DXF90KkyqjVqOF)
## Guide
1. Login to Ansible Platform UX
2. Navigate to **Templates**
![job templates](../images/templates.png)
3. Click the rocket next to **INFRASTRUCTURE / Chocolatey App Install** to launch the Job
![rocket launch](../images/rocket.png)
4. The survey will prompt you to install or remove a package.
![survey choice](../images/choco_app_install/choco_survey.jpeg)
5. Choose a package or packages and press **NEXT**
![survey preview](../images/choco_app_install/choco_survey_preview.jpeg)
Explain to audience what is happening here depending on audience persona
**Persona A**: Technical audience that has written Ansible Playbooks before:
Surveys create variables that the Job can use within Ansible Playbooks. This gives you the ability to create one playbook that can be used for multiple installs instead of a job template for each app. In this case due to the multiple Select option you are not limited to 1 app but can select and install 2 or more apps at once. The survey also gives you the ability to select if the app will be installed, removed, or simply updated to the latest version. Again saving you time and effort to write seperate playbooks for each use case. In the screenshot you will see the variables are named **choco_package** and **app_state** with values of **git** and **present**
**Persona B**: Decision maker audience, IT manager or above:
reiterate business values above. This allows a non subject matter expert the ability to automate routine tasks within a Windows environment. They can't install applications that are not vetted and put within the survey. Freeing them from the mundance and repeative task for application installation while maintaining the highest level of security and compliance across your organization. In the event that your IT process does not allow the Red Hat Ansible Automation Platform to be the front end, it has a rich and powerful API that can work with existing workflows such as ServiceNow.
6. Execute the job by pressing the green **LAUNCH** button
7. Explain what is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane** labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who** - who launched the job, in this example is the admin user
- **what** - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when** - time stamps for start, end and duration of the job run.
- **how** - the job status (pass, fail), enviornment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output** to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
![task breakdown](../images/choco_app_install/choco_task_output.jpeg)
8. Circle back and summarize
You need to circle back what has been showcased to the [business reasons listed above](#what-business-problem-is-solved). You are welcome to verify on the Windows hosts that the package(s) was actually installed but unless you have a very technical audience you are going to start losing folks. The real business solution here is automating away the mundane and repetative.
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,89 @@
# Demo: Chocolatey Config
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: Chocolatey Config](#demo-chocolatey-config)
- [Table of Contents](#table-of-contents)
- [Objective](#objective)
- [What business problem is solved?](#what-business-problem-is-solved)
- [Features show cased](#features-show-cased)
- [Guide](#guide)
## Objective
Demostrate how Anisble can be used not only to enable or disable Chocolatey configuration parameters but to set specifc values for those parameters
## What business problem is solved?
- **Operational Efficiency**:
Ansible provides the ability to save dozen to hundreds of hours of reconfiguration work by systems admins through the configuration automation
- **Increase Compliance**:
Ansible provides the means to get and stay in compliance throughout all your systems
## Features show cased
- Configuration as code
- Self Service IT - Surveys
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Guide
1. Login to Ansible Platform UX
2. Navigate to **Templates**
![job templates](../images/templates.png)
3. Click the rocket next to **INFRASTRUCTURE / Chocolatey Features Config** to launch the Job
![rocket launch](../images/rocket.png)
4. The survey will prompt you with 3 questions. What Parameter you want to change, whether you want to make it present or absent in the config, and the value for that paramater.
![survey choice](../images/choco_config/choco_config_survey.jpeg)
5. Choose a parameter. Select if you want to make it present or absent in the config. Finally, add the value for that parameter and press **NEXT**
Note: These are just a few of the parameters they can add to the list. For these 3 see below for correct format for response.
- **proxyUser** single text line such as drojas or student25
- **commandExecutionTimeoutSeconds** integer value. 0 is infinite, 2700 is default, recomendation is 14400
- **cacheLocation** text of a path to location on windows node such as c:\chocolatey_temp2
For more info on possible parameter see [Chocolatey Documentation](https://chocolatey.org/docs/chocolatey-configuration)
![survey preview](../images/choco_config/choco_config_survey_preview.jpeg)
Explain to audience what is happening here depending on audience persona
**Persona A**: Technical audience that has written Ansible Playbooks before:
Surveys create variables that the Job can use within Ansible Playbooks. This gives you the ability to create one playbook that can be used to enable or disable and set configuration values instead of having to create or maintain many job templates. Again saving you time and effort to write seperate playbooks for each use case. In the screenshot you will see the variables are named **config-item**, **state**, and **value** with values of **cacheLocation**, **present**, and **c:\chocolatey_temp2**. These will be treated as extra vars and as such overirde any variables from any other source such as the playbook itself
**Persona B**: Decision maker audience, IT manager or above:
reiterate business values above. This allows a systems admin to automate the reconfiguration of Chocolatey in a low risk repeatable manner. This will free up IT staff for larger more mission critical projects all while reducing risk to your production operations. In the event that your IT process does not allow the Red Hat Ansible Automation Platform to be the front end, it has a rich and powerful API that can work with existing workflows such as ServiceNow.
6. Execute the job by pressing the green **LAUNCH** button
7. Explain what is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane** labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who** - who launched the job, in this example is the admin user
- **what** - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when** - time stamps for start, end and duration of the job run.
- **how** - the job status (pass, fail), enviornment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output** to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
![task breakdown](../images/choco_config/choco_config_task_output.jpeg)
8. Circle back and summarize
You need to circle back what has been showcased to the [business reasons listed above](#what-business-problem-is-solved). You are welcome to verify on the Windows hosts that the configuration was actually changed but unless you have a very technical audience you are going to start losing folks. The real business solution here is automating away the mundane and repetative.
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,82 @@
# Demo: Chocolatey Features Config
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: Chocolatey Features Config](#demo-chocolatey-features-config)
- [Table of Contents](#table-of-contents)
- [Objective](#objective)
- [What business problem is solved?](#what-business-problem-is-solved)
- [Features show cased](#features-show-cased)
- [Guide](#guide)
## Objective
Demostrate how Anisble can be used to enable or disable features in Chocolatey
## What business problem is solved?
- **Operational Efficiency**:
Ansible provides the ability to save dozen to hundreds of hours of reconfiguration work by systems admins through the configuration automation
- **Increase Compliance**:
Ansible provides the means to get and stay in compliance throughout all your systems
## Features show cased
- Configuration as code
- Self Service IT - Surveys
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Guide
1. Login to Ansible Platform UX
2. Navigate to **Templates**
![job templates](../images/templates.png)
3. Click the rocket next to **INFRASTRUCTURE / Chocolatey Features Config** to launch the Job
![rocket launch](../images/rocket.png)
4. The survey will prompt you for what feature to enable or disable.
![survey choice](../images/choco_features/choco_features_survey.jpeg)
5. Choose a feature and press **NEXT**
![survey preview](../images/choco_features/choco_features_survey_preview.jpeg)
Explain to audience what is happening here depending on audience persona
**Persona A**: Technical audience that has written Ansible Playbooks before:
Surveys create variables that the Job can use within Ansible Playbooks. This gives you the ability to create one playbook that can be used to enable or disable any feature instead of having to create or maintain many job templates. The survey also gives you the ability to select if the feature will be enabled or disabled. Again saving you time and effort to write seperate playbooks for each use case. In the screenshot you will see the variables are named **feature** and **state** with values of **virusCheck** and **enabled**
**Persona B**: Decision maker audience, IT manager or above:
reiterate business values above. This allows a systems admin to automate the reconfiguration of Chocolatey in a low risk repeatable manner. This will free up IT staff for larger more mission critical projects all while reducing risk to your production operations. In the event that your IT process does not allow the Red Hat Ansible Automation Platform to be the front end, it has a rich and powerful API that can work with existing workflows such as ServiceNow.
6. Execute the job by pressing the green **LAUNCH** button
7. Explain what is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane** labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who** - who launched the job, in this example is the admin user
- **what** - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when** - time stamps for start, end and duration of the job run.
- **how** - the job status (pass, fail), enviornment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output** to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
![task breakdown](../images/choco_features/choco_features_task_output.jpeg)
8. Circle back and summarize
You need to circle back what has been showcased to the [business reasons listed above](#what-business-problem-is-solved). You are welcome to verify on the Windows hosts that the feature was actually enabled or disabled but unless you have a very technical audience you are going to start losing folks. The real business solution here is automating away the mundane and repetative.
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,91 @@
# Demo: Deploy Application
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: Deploy Application](#demo-deploy-application)
- [Table of Contents](#table-of-contents)
- [Objective](#objective)
- [What business problem is solved?](#what-business-problem-is-solved)
- [Features show cased](#features-show-cased)
- [Video](#video)
- [Guide](#guide)
## Objective
Demonstrate application deployment for Linux systems. This demonstration will install applications on multiple RHEL servers.
## What business problem is solved?
- **speed to market**:
reducing human time to install applications
- **reduce human error**:
automation of routine manual processes
- **reduce complexity**:
does not require a System Administrator familiar with the specific operating system to install the Application. Automate and test once and allow all users access to deploy Ansible Jobs.
- **enforce policy**:
Ansible creates guard rails on which applications can be deployed and how they are installed on IT infrastructure.
# Features show cased
- Push button deployment
- Self Service IT - Surveys
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Video
[Watch here](https://youtu.be/pU8ZgSBuEJw)
## Guide
1. Login to Ansible Platform UX
2. Navigate to **Templates**
![job templates](../images/templates.png)
3. Click the rocket next to **INFRASTRUCTURE / Deploy Application** to launch the Job
![rocket launch](../images/rocket.png)
4. The survey will prompt you to install an application.
![survey choice](../images/deploy_application_survey.png)
5. Choose an application and press **NEXT**
![survey preview](../images/survey_preview.png)
Explain to audience what is happening here depending on audience persona
**Persona A**: Technical audience that has written Ansible Playbooks before:
Surveys create variables that the Job can use within Ansible Playbooks. In this example a pre-defined list of applications that are tested and allowed on IT infrastructure. The variable is named **application** and the value is **httpd** in this screenshot.
**Persona B**: Decision maker audience, IT manager or above:
reiterate business values above. This allows a non subject matter expert the ability to automate routine tasks. They can't install applications that are not vetted and put within the survey. In the event that your IT process does not allow the Red Hat Ansible Automation Platform to be the front end, it has a rich and powerful API that can work with existing workflows such as ServiceNow.
6. Execute the job by pressing the green **LAUNCH** button
7. Explain what is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane** labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who** - who launched the job, in this example is the admin user
- **what** - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when** - time stamps for start, end and duration of the job run.
- **how** - the job status (pass, fail), enviornment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output** to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
![task breakdown](../images/platform_task_breakdown.png)
8. Circle back and summarize
You need to circle back what has been showcased to the [business reasons listed above](#what-business-problem-is-solved). You are welcome to verify on the RHEL web nodes that the application was actually installed but unless you have a very technical audience you are going to start losing folks. The real business solution here is automating away the boring and routine.
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,97 @@
# Demo: Windows Use Regedit to update legal notice
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: Windows Use Regedit to update legal notice](#demo-windows-use-regedit-to-update-legal-notice)
- [Table of Contents](#table-of-contents)
- [Objective](#objective)
- [What business problem is solved?](#what-business-problem-is-solved)
- [Features show cased](#features-show-cased)
- [Video](#video)
- [Guide](#guide)
## Objective
Demostrate how anisble can be used to automate the updating of Windows registry items such as the legal notice enterprise wide witth one simple playbook.
## What business problem is solved?
- **speed to production**:
reducing human time to make large scale changes across an enterprise
- **reduce human error**:
automation of routine manual processes
- **reduce complexity**:
does not require a System Administrator to be familar with Ansible or even regedit. Provides a self services option to make technical changes to 1000's of devices
## Features show cased
- Push button deployment
- Self Service IT - Surveys
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Video
[Windows Regedit Legal Notice Video Demo](https://www.youtube.com/watch?v=L_S74rdLat8&list=PLdu06OJoEf2bnEaWYY0DXF90KkyqjVqOF&index=2)
## Guide
1. Login to Ansible Platform UX
2. Navigate to **Templates**
![job templates](../images/templates.png)
3. Click the rocket next to **INFRASTRUCTURE / Windows regedit legal notice** to launch the Job
![rocket launch](../images/rocket.png)
4. The survey will prompt you for the title and text of the legal notice.
![survey choice](../images/windows_regedit_legal_notice/windows_regedit_legal_survey.jpeg)
5. Type in the Tile and Text and press **NEXT**
![survey preview](../images/windows_regedit_legal_notice/windows_regedit_legal_survey_preview.jpeg)
Explain to audience what is happening here depending on audience persona
**Persona A**: Technical audience that has written Ansible Playbooks before:
Surveys create variables that the Job can use within Ansible Playbooks. This gives you the ability to create one playbook that can be used for any future updates. In this case you can update the title and test of the legal notice. Again saving you time and effort to modify the playbook directly each time you need to make an update. In the screenshot you will see the variables are named **text_legal_notice** and **title_legal_notice** with some default values but the admin can modify them as they need.
**Persona B**: Decision maker audience, IT manager or above:
reiterate business values above. This allows a non subject matter expert the ability to automate routine tasks within a Windows environment. They can make these changes on all windows devices with one run. Freeing them from the mundance and repeative task for application installation while maintaining the highest level of security and compliance across your organization. They can do all this with little to no risk as no chance of a fat-finger mistake which in regedit can be disasterous. In the event that your IT process does not allow the Red Hat Ansible Automation Platform to be the front end, it has a rich and powerful API that can work with existing workflows such as ServiceNow.
6. Execute the job by pressing the green **LAUNCH** button
7. Explain what is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane** labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who** - who launched the job, in this example is the admin user
- **what** - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when** - time stamps for start, end and duration of the job run.
- **how** - the job status (pass, fail), enviornment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output** to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
![task breakdown](../images/windows_regedit_legal_notice/windows_regedit_legal_task_output.jpeg)
8. Circle back and summarize
You need to circle back what has been showcased to the [business reasons listed above](#what-business-problem-is-solved). You are welcome to verify on the Windows hosts that legal notice was actually changed but unless you have a very technical audience you are going to start losing folks. The real business solution here is automating away the mundane and repetative.
9. Show new legal notice (optional)
Using some version of RDP you will need to connect to the windows host. The info needed to connect can be found within "inventories" You will need to navigate to Inventories first. Then click on "workshop inventory". Then click on "hosts". You should see your list of hosts. Click on your windows host which will give you the host IP, the username and the password required to connect via RDP.
![Inventory Hosts](../images/windows_regedit_legal_notice/windows_regedit_legal_host_info.jpg)
Once you connect you will see both the title and text first thing. It should match what you updated it to.
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,70 @@
# Demo: Deploy Application
[Click here to return to master demo list](../../README.md#demo-repository)
## Table of Contents
- [Demo: Deploy Application](#demo-deploy-application)
- [Table of Contents](#table-of-contents)
- [Objective](#objective)
- [What business problem is solved?](#what-business-problem-is-solved)
- [Features show cased](#features-show-cased)
- [Guide](#guide)
## Objective
Demonstrate managing the VTY ACL on a Cisco router.
## What business problem is solved?
- **speed to market**:
Reduce the time needed to make changes to Cisco configs.
- **reduce human error**:
Automation of routine manual processes
- **reduce complexity**:
Allows one Network Engineer to update multiple devices at once. Automate and test once and allow all users access to deploy Ansible Jobs.
- **enforce policy**:
Ansible ensures every device has the same config.
## Features show cased
- Push button deployment
For description of these and other features of the Red Hat Ansible Automation Platform please refer to the [features README](../features.md)
## Guide
1. Verify rtr1 config
ssh to rtr1 from the workshop bastion and perform a ***show run*** on the router. Verify that there is no VTY ACL on the router.
2. Login to Ansible Platform UX
3. Navigate to **Templates**
![job templates](../../images/templates.png)
4. Click the rocket next to **Cisco IOS VTY ACL config audit/remediation** to launch the Job
![rocket launch](../../images/rocket.png)
5. The job will launch and update the VTY ACL on rtr1.
6. What is happening:
- Job has started executed in the background. The user can navigate off this page and the job will continue to execute.
- On the left is the **Job Details Pane** labeled simply with **DETAILS**. This information is logged and tells you who, what, when and how.
- **who** - who launched the job, in this example is the admin user
- **what** - the project and Ansible Playbook used, and which credential to login to the infrastructure
- **when** - time stamps for start, end and duration of the job run.
- **how** - the job status (pass, fail), environment and execution node
- The larger window on the right is the **Standard Out Pane**. This provides the same console output the user would be used to on the command-line for troubleshooting purposes. Some important takeaways to showcase are:
- aggregate info is at the top including the amount of Plays, tasks, hosts and time duration.
- this pane can be expanded to take up entire browser window
- Ansible Playbook can be downloaded for troubleshooting purposes
- **click on task output** to show them task-by-task JSON output that can be used for troubleshooting or just getting additional information
7. ssh to rtr1 and verify the VTY ACL has been changed.
---
You have finished this demo. [Click here to return to master demo list](../../README.md#demo-repository)

View File

@@ -0,0 +1,48 @@
---
namespace: ansible
name: product_demos
version: 1.2.9
readme: README.md
authors:
- Sean Cavanaugh <seanc@redhat.com> @IPvSean
- David Rojas <drojas@redhat.com>
- Colin McNaughton <cmcnaugh@redhat.com>
description: repository of demos to showcase Ansible features.
license:
- GPL-3.0-or-later
tags:
- apache
- centos
- rhel
- el
- amazon
- linux
- fedora
- network
- f5
- developer
- infrastructure
- security
- windows
- opencap
- insights
- patching
- tower
- awx
build_ignore:
- images
- '*.tar.gz'
dependencies:
"awx.awx": "*"
repository: http://github.com/ansible/product-demos
documentation: http://github.com/ansible/product-demos
homepage: http://github.com/ansible/product-demos
issues: https://github.com/ansible/product-demos/issues

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -0,0 +1 @@
requires_ansible: ">=2.11"

View File

@@ -0,0 +1,16 @@
---
- name: grab linux facts
hosts: web
gather_facts: true
- name: build developer report
hosts: node1
gather_facts: false
vars:
file_path: /var/www/html/report/index.html
tasks:
- name: use developer report
include_role:
name: "../../roles/developer_report"

View File

@@ -0,0 +1,9 @@
---
- name: setup deploy application demo
hosts: localhost
connection: local
tasks:
- name: install demo
include_role:
name: "../roles/generate_readme"

View File

@@ -0,0 +1,58 @@
- name: Create AWS resources
hosts: localhost
connection: local
gather_facts: False
collections:
- amazon.aws
tasks:
- name: Setting the correct AMI per us-east-1
set_fact:
ami_id: ami-096fda3c22c1c990a
when: aws_region == "us-east-1"
- name: Setting the correct AMI per us-east-1
set_fact:
ami_id: ami-09d9c5cdcfb8fc655
when: aws_region == "us-west-1"
- name: create a new ec2 key pair
ec2_key:
name: "{{ keypair }}"
region: "{{ aws_region }}"
- name: Create VPC
ec2_vpc_net:
name: "{{ vpc_name }}"
cidr_block: 10.10.0.0/16
region: "{{ aws_region }}"
register: my_vpc
- name: Create a security group
ec2_group:
name: ansible
description: "Ansible Security Group"
region: "{{ aws_region }}"
vpc_id: "{{ my_vpc.vpc.id }}"
rules:
- proto: all
cidr_ip: 10.10.0.0/16
- proto: all
group_name: ansible
rules_egress:
- proto: all
cidr_ip: 0.0.0.0/0
register: firewall
- name: Create an EC2 instance
ec2_instance:
key_name: "{{ keypair }}"
region: "{{ aws_region }}"
security_group: "{{ firewall.group_id }}"
instance_type: "{{ instance_type }}"
image_id: "{{ ami_id }}"
wait: yes
name: "{{ instance_name }}"
register: ec2

View File

@@ -0,0 +1,44 @@
---
- hosts: localhost
tasks:
- name: Prepare random postfix
set_fact:
rpfx: "{{ 1000 | random }}"
run_once: yes
- hosts: localhost
vars:
resource_group: "{{ resource_group_name }}"
location: "{{ azure_region }}"
mysqlserver_name: mysql{{ rpfx }}
mysqldb_name: "{{ sqlserver_name }}"
admin_username: "{{ admin_user }}"
admin_password: "{{ admin_pw }}"
collections:
- azure.azcollection
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create MySQL Server
azure_rm_mysqlserver:
resource_group: "{{ resource_group }}"
name: "{{ mysqlserver_name }}"
location: "{{ location }}"
version: 5.6
enforce_ssl: True
admin_username: "{{ admin_username }}"
admin_password: "{{ admin_password }}"
storage_mb: 51200
- name: Create instance of MySQL Database
azure_rm_mysqldatabase:
resource_group: "{{ resource_group }}"
server_name: "{{ mysqlserver_name }}"
name: "{{ mysqldb_name }}"

View File

@@ -0,0 +1,68 @@
# Description
# ===========
# This playbook create an Azure VM with public IP, and open 22 port for SSH
---
- name: Create Azure VM
hosts: localhost
connection: local
vars:
resource_group: vmdemo
vm_name: testvm
location: eastus
collections:
- azure.azcollection
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: "{{ resource_group }}"
name: "{{ vm_name }}"
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: "{{ resource_group }}"
name: "{{ vm_name }}"
address_prefix: "10.0.1.0/24"
virtual_network: "{{ vm_name }}"
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: "{{ resource_group }}"
allocation_method: Static
name: "{{ vm_name }}"
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: "{{ resource_group }}"
name: "{{ vm_name }}"
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
- name: Create virtual network inteface card
azure_rm_networkinterface:
resource_group: "{{ resource_group }}"
name: "{{ vm_name }}"
virtual_network: "{{ vm_name }}"
subnet: "{{ vm_name }}"
public_ip_name: "{{ vm_name }}"
security_group: "{{ vm_name }}"
- name: Create VM
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "{{ vm_name }}"
vm_size: Standard_DS1_v2
admin_username: azureuser
admin_password: Password@123
network_interfaces: "{{ vm_name }}"
image:
offer: RHEL
publisher: RedHat
sku: 7-LVM
version: latest

View File

@@ -0,0 +1,17 @@
---
- name: install chocolatey package on Windows host
hosts: windows
vars:
choco_packages: git
app_state: present
collections:
- chocolatey.chocolatey
tasks:
- name: Install multiple packages
win_chocolatey:
name: "{{ choco_packages }}"
state: "{{ app_state }}"

View File

@@ -0,0 +1,18 @@
---
- name: configuring Chocolatey
hosts: windows
vars:
config_item: cacheLocation
state: present
value: C:\chocolatey_temp2
collections:
- chocolatey.chocolatey
tasks:
- name: set configuration parameter
win_chocolatey_config:
name: "{{ config_item }}"
state: "{{ state }}"
value: "{{ value }}"

View File

@@ -0,0 +1,17 @@
---
- name: enabling or disabling chocolatey features
hosts: windows
vars:
feature: stopOnFirstPackageFailure
state: enabled
collections:
- chocolatey.chocolatey
tasks:
- name: enable or disable Chocolatey features
win_chocolatey_feature:
name: "{{ feature }}"
state: "{{ state }}"

View File

@@ -0,0 +1,30 @@
---
- name: gather debug info
hosts: "{{ HOSTS | default('web') }}"
become: true
gather_facts: false
tasks:
- name: Gather recent vmstat info
command: /bin/vmstat 1 5
register: vmstat
- name: Gather top CPU hogs
command: ps -eo user,pid,size,pcpu,cmd --sort=-pcpu
register: pscpu
- name: Gather top memory hogs
command: ps -eo user,pid,size,pcpu,cmd --sort=-size
register: pssize
- name: Swap + wait states
debug:
var: vmstat.stdout_lines
- name: Top 3 CPU hogs
debug:
var: pscpu.stdout_lines[:4]
- name: Top 3 memory hogs
debug:
var: pssize.stdout_lines[:4]

View File

@@ -0,0 +1,30 @@
---
- name: application deployment
hosts: web
gather_facts: false
become: true
tasks:
- name: make sure application is not empty
assert:
that:
- "application != ''"
- name: printing to terminal application information
debug:
msg: "This Ansible Playbook will install {{application}}"
- name: install application
dnf:
name: "{{application}}"
allow_downgrade: true
register: result
- name: printing to terminal application information
debug:
msg: "The application: {{application}} has been installed"
when: result.changed|bool
- name: printing to terminal application information
debug:
msg: "The application: {{application}} was already installed"
when: not result.changed|bool

View File

@@ -0,0 +1,38 @@
---
- name: grant sudo
hosts: "{{ HOSTS | default('web') }}"
become: true
gather_facts: false
vars:
sudo_cleanup: true
tasks:
- name: Check if sudo user exists on system
getent:
database: passwd
key: "{{ sudo_user }}"
- name: create sudo rule
copy:
dest: "/etc/sudoers.d/{{ sudo_user }}"
owner: root
group: root
mode: 0640
content: "{{ sudo_user }} ALL=(ALL) NOPASSWD:ALL"
- name: install package
yum:
name: at
state: latest
- name: start service
service:
name: atd
state: started
- name: time based cleanup
at:
command: "rm /etc/sudoers.d/{{ sudo_user }}"
count: "{{ sudo_count | default('10') }}"
units: "{{ sudo_units | default('minutes') }}"
when: sudo_cleanup|bool

View File

@@ -0,0 +1,15 @@
---
- name: install and configure insights agent on all specified nodes
hosts: "{{ HOSTS | default('web') }}"
tasks:
- include_role:
name: RedHatInsights.insights-client
vars:
redhat_portal_username: "{{ insights_user }}"
redhat_portal_password: "{{ insights_password }}"
insights_display_name: "{{ inventory_hostname }}"
when: ansible_os_family == 'RedHat'
- name: print info to terminal window
debug:
msg: "Red Hat Insights is installed and configured for {{ inventory_hostname }}"

View File

@@ -0,0 +1,21 @@
---
- name: apply non-kernel updates
hosts: "{{ HOSTS | default('web') }}"
become: true
gather_facts: false
tasks:
- name: upgrade all packages except kernel
yum:
name: '*'
state: latest
exclude: kernel*
tags: all
- name: upgrade all packages security related except kernel
yum:
name: '*'
state: latest
security: true
exclude: kernel*
tags: security

View File

@@ -0,0 +1,11 @@
---
- name: turn off community-grid
hosts: "{{ HOSTS | default('web') }}"
gather_facts: false
become: yes
tasks:
- name: enable and start boinc-client
systemd:
name: boinc-client
state: stopped
enabled: false

View File

@@ -0,0 +1,23 @@
---
- name: install the iis web service
hosts: windows
tasks:
- name: install iis
win_feature:
name: Web-Server
state: present
- name: start iis service
win_service:
name: W3Svc
state: started
- name: Create website index.html
win_copy:
content: "{{ iis_test_message }}"
dest: C:\Inetpub\wwwroot\index.html
- name: Show website address
debug:
msg: http://{{ ansible_host }}

View File

@@ -0,0 +1,17 @@
---
- name: Edit legal notice on start up message
hosts: windows
gather_facts: False
tasks:
- name: Updating Legal Notice Title
win_regedit:
path: HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System
name: legalnoticecaption
data: "{{ title_legal_notice }}"
- name: Updating Legal Notice Text
win_regedit:
path: HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System
name: legalnoticetext
data: "{{ text_legal_notice }}"

View File

@@ -0,0 +1,11 @@
---
- name: setup deploy application demo
hosts: localhost
gather_facts: false
connection: local
tasks:
- name: install demo
include_role:
name: "../roles/install_demo"

View File

@@ -0,0 +1,33 @@
---
- hosts: ios
gather_facts: no
vars:
log_servers:
- logging 10.10.10.10
- logging 10.10.10.11
tasks:
- name: "GET CONFIG"
ios_command:
commands:
- show running-config full | include logging [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
register: log
- name: RUN 'Set Logging'
ios_config:
commands: "{{ item }}"
loop: "{{ log_servers }}"
register: set_logging
- debug: var=log.stdout_lines
- name: RUN 'Remove Logging'
ios_config:
commands: "no {{ item }}"
when: "(log.stdout_lines[0][0] != '') and (item not in log_servers)"
loop: "{{ log.stdout_lines[0] }}"
register: remove_logging

View File

@@ -0,0 +1,37 @@
---
- hosts: ios
gather_facts: no
vars:
ntp_servers:
- ntp server 10.10.10.13
- ntp server 10.10.10.14
tasks:
- name: "GET CONFIG"
ios_command:
commands:
- "show running-config full | include ntp server"
register: get_config
- debug: var=get_config.stdout_lines
- name: RUN 'Set NTP'
with_items: "{{ ntp_servers }}"
ios_config:
lines:
- "{{ item }}"
register: set_ntp
- name: RUN 'Remove NTP'
when: "(get_config.stdout_lines[0][0] != '') and (item not in ntp_servers)"
with_items: "{{ get_config.stdout_lines[0] }}"
register: remove_ntp
ios_config:
lines:
- "no {{ item }}"

View File

@@ -0,0 +1,60 @@
---
- name: CORRECT VTY-ACL ON CISCO DEVICES
hosts: cisco
connection: network_cli
gather_facts: no
tasks:
- name: SAVE RUNNING-CONFIG TO NVRAM FOR RECOVERY IF NEEDED
ios_config:
save_when: always
- name: Set the task_status var
set_fact:
task_status: "OK"
- block:
- name: UPDATE VTY-ACL ACCESS LIST
ios_config:
parents: ip access-list extended VTY-ACL
lines:
- permit tcp host {{ hostvars['ansible-1'].ansible_host }} any eq 22
- permit tcp 172.16.0.0 0.15.255.255 any eq 22
- permit tcp 192.168.0.0 0.0.255.255 any eq 22
- permit tcp 10.0.0.0 0.255.255.255 any eq 22 log-input
- deny ip any any log-input
match: exact
replace: block
before:
- line vty 0 15
- NO access-class VTY-ACL in
- NO ip access-list extended VTY-ACL
after:
- line vty 0 15
- access-class VTY-ACL in
- name: CHECK IF SSH IS STILL ACCESSIABLE FROM NETWORK
wait_for:
host: "{{ inventory_hostname }}"
port: 22
state: started
delay: 2
timeout: 6
ignore_errors: no
- name: SSH TEST SUCCESSFUL. SAVING RUNNING-CONFIG
ios_config:
save_when: always
rescue:
- name: UPDATE FAILED. ROLLING BACK CONFIG
ios_command:
commands:
- configure replace nvram:startup-config force
- set_fact:
task_status: "ERROR"
when: task_status == 'OK'

View File

@@ -0,0 +1,31 @@
---
- name: harden linux systems
hosts: "{{ HOSTS | default('web') }}"
become: true
vars:
- harden_firewall: false
- harden_time: false
- harden_ssh: false
- harden_pci: false
tasks:
- name: Configure Firewall
when: harden_firewall | bool
include_role:
name: linux-system-roles.firewall
- name: Configure Timesync
when: harden_time | bool
include_role:
name: redhat.rhel_system_roles.timesync
- name: SSH Hardening
when: harden_ssh | bool
include_role:
name: dev-sec.ssh-hardening
# run with --skip-tags accounts_passwords_pam_faillock_deny
- name: Apply PCI Baseline
when: harden_pci | bool
include_role:
name: redhatofficial.rhel8_pci_dss

View File

@@ -0,0 +1,45 @@
---
- name: build openscap report for rhel7
hosts: web
gather_facts: false
vars:
file_path: "/var/www/html/openscap/"
ssg_schema: "/usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml"
tasks:
- name: make sure openscap-scanner and scap-security guide are installed
yum:
name:
- openscap-scanner
- scap-security-guide
state: present
- name: Check if SCAP Security Guide (SSG) profile is available
stat:
path: "{{ssg_schema}}"
- name: create HTML report
command: "oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results report.xml --report index.html {{ssg_schema}}"
register: command_result
failed_when: "'Error' in command_result.stderr"
- name: Create directory if it does falset exist
become: true
file:
path: "{{file_path}}"
state: directory
- name: move files into httpd
become: true
copy:
src: ./{{item}}
dest: "{{file_path}}/{{item}}"
remote_src: true
loop:
- report.xml
- index.html
- name: DISPLAY LINK TO INVENTORY REPORT
debug:
msg: "Please go to http://{{ansible_host}}/openscap"

View File

@@ -0,0 +1,3 @@
# Developer Report
This Ansible Role has a README.md coming soon.

View File

@@ -0,0 +1,19 @@
---
galaxy_info:
role_name: developer_report
author: Sean Cavanaugh
description: This role create an HTML report using Ansible Facts
company: Red Hat
platforms:
- name: EL
versions:
- 8
- 7
license: GPL-3.0-or-later
min_ansible_version: 2.9
galaxy_tags: []
dependencies: []

View File

@@ -0,0 +1,10 @@
---
- name: create HTML report
become: true
template:
src: report.j2
dest: "{{ file_path }}"
- name: DISPLAY LINK TO INVENTORY REPORT
debug:
msg: "Please go to http://{{ ansible_host }}/report"

View File

@@ -0,0 +1,37 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="css/main.css">
</head>
<h1>Developer Report</h1>
<body>
<table>
<thead>
<tr>
<th>Hostname</th>
<th>Operating System</th>
<th>PATH</th>
<th>Kernel</th>
<th>Python Version</th>
<th>Package Manager</th>
<th>System Date Time</td>
</tr>
</thead>
<tbody>
{% for linux_node in groups['all'] %}
<tr>
<td>{{ hostvars[linux_node]['ansible_hostname'] }}</td>
<td>{{ hostvars[linux_node]['ansible_distribution'] }} {{hostvars[linux_node]['ansible_distribution_version']}}</td>
<td>{{ hostvars[linux_node]['ansible_env']['PATH'] }}</td>
<td>{{ hostvars[linux_node]['ansible_kernel'] }}</td>
<td>{{ hostvars[linux_node]['ansible_python_version'] }}</td>
<td>{{ hostvars[linux_node]['ansible_pkg_mgr'] }}</td>
<td>{{ hostvars[linux_node]['ansible_date_time']['date'] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>

View File

@@ -0,0 +1,11 @@
# Generate README
This Ansible Role will generate the master README.md for this Ansible Collection.
To generate a README.md, execute the following command from the root of this Ansible Collection.
```
ansible-playbook playbooks/generate_readme.yml
```
Please see the result at the master demo [README.md](../../README.md)

View File

@@ -0,0 +1,19 @@
---
galaxy_info:
role_name: generate_readme
author: Sean Cavanaugh
description: This role generates a readme for the github/ansible/product-demos
company: Red Hat
platforms:
- name: EL
versions:
- 8
- 7
license: GPL-3.0-or-later
min_ansible_version: 2.9
galaxy_tags: []
dependencies: []

View File

@@ -0,0 +1,10 @@
---
- name: load variables from adjacent role
include_role:
name: "../roles/install_demo"
tasks_from: load_vars.yml
- name: create readme
template:
src: readme.j2
dest: "../README.md"

View File

@@ -0,0 +1,136 @@
# Official Ansible Product Demos
This repo currently under construction and working on a minimal viable demo for testing purposes
# Table of contents
* [How to use](#how-to-use)
* [1. Provide login information and choose demo](#1-provide-login-information-and-choose-demo)
* [2. Run Ansible Playbook](#2-run-ansible-playbook)
* [Demo Repository](#demo-repository)
* [Infrastructure Demos](#infrastructure-demos)
* [Network Demos](#network-demos)
* [Security Demos](#security-demos)
* [Developer Demos](#developer-demos)
* [Contribute](#contribute)
* [Notes](#notes)
# How to use
## 1. Provide login information and choose demo
- Modify the `choose_demo.yml` file that is included in this repo with the username, password and IP address (or DNS name) of your Ansible Tower
- Choose the demo name you want from the table below (or choose `all`)
## 2. Run Ansible Playbook
```
ansible-playbook playbooks/install_demo.yml -e @choose_demo.yml
```
# Demo Repository
This repository currently holds {{job_template_definitions.items()|sort(attribute='1.name')|count}} demos.
## Infrastructure Demos
<table>
<tr>
<th>Demo Name</th>
<th>Author</th>
<th>install_demo.yml value</th>
<th>Description</th>
<th>Video Walkthrough</th>
<th>Workshop Types</th>
</tr>
{% for key, value in job_template_definitions.items()|selectattr('1.category', 'match', 'infrastructure$')|sort(attribute='1.name') %}
<tr>
<td>{% if value.readme is defined%}<a href="{{ value.readme}}">{{value.name}}</a>{% else %}{{value.name}}{% endif %}</td>
<td>{{value.author}}</td>
<td><pre>demo: {{key}}</pre></td>
<td>{{value.description}}</td>
<td>{% if value.video is defined%}<a href="{{ value.video}}">Video Link</a>{% else %}Not available {% endif %}</td>
<td><ul>{% for workshop in value.workshop_type %}<li>{{workshop}}</li>{% endfor %}</ul></td>
</tr>
{% endfor %}
</table>
## Network Demos
<table>
<tr>
<th>Demo Name</th>
<th>Author</th>
<th>install_demo.yml value</th>
<th>Description</th>
<th>Video Walkthrough</th>
<th>Workshop Types</th>
</tr>
{% for key, value in job_template_definitions.items()|selectattr('1.category', 'match', 'network$')|sort(attribute='1.name') %} <tr>
<td>{{ value.name }}</td>
<td>{{ value.author }}</td>
<td><pre>demo: {{key }}</pre></td>
<td>{{ value.description }}</td>
<td>{% if value.video is defined %}<a href="{{ value.video }}">Video Link</a>{% else %}Not available {% endif %}</td>
<td><ul>{% for workshop in value.workshop_type %}<li>{{ workshop }}</li>{% endfor %}</ul></td>
</tr>
{% endfor %}
</table>
## Security Demos
<table>
<tr>
<th>Demo Name</th>
<th>Author</th>
<th>install_demo.yml value</th>
<th>Description</th>
<th>Video Walkthrough</th>
<th>Workshop Types</th>
</tr>
{% for key, value in job_template_definitions.items()|selectattr('1.category', 'match', 'security$')|sort(attribute='1.name') %} <tr>
<td>{{ value.name }}</td>
<td>{{ value.author }}</td>
<td><pre>demo: {{ key }}</pre></td>
<td>{{ value.description }}</td>
<td>{% if value.video is defined %}<a href="{{ value.video }}">Video Link</a>{% else %}Not available {% endif %}</td>
<td><ul>{% for workshop in value.workshop_type %}<li>{{ workshop }}</li>{% endfor %}</ul></td>
</tr>
{% endfor %}
</table>
## Developer Demos
<table>
<tr>
<th>Demo Name</th>
<th>Author</th>
<th>install_demo.yml value</th>
<th>Description</th>
<th>Video Walkthrough</th>
<th>Workshop Types</th>
</tr>
{% for key, value in job_template_definitions.items()|selectattr('1.category', 'match', 'developer$')|sort(attribute='1.name') %} <tr>
<td>{{ value.name }}</td>
<td>{{ value.author }}</td>
<td><pre>demo: {{ key }}</pre></td>
<td>{{ value.description }}</td>
<td>{% if value.video is defined %}<a href="{{ value.video }}">Video Link</a>{% else %}Not available {% endif %}</td>
<td><ul>{% for workshop in value.workshop_type %}<li>{{ workshop }}</li>{% endfor %}</ul></td>
</tr>
{% endfor %}
</table>
# Contribute
please refer to the [contribute.md](docs/contribute.md) documentation included in this collection.
# Notes
This README.md was auto-generated by Ansible user **{{ ansible_user_id }}** on **{{ ansible_date_time.date }}** with Ansible version **{{ ansible_version.full }}**
To generate a README.md, execute the following command
```
ansible-playbook playbooks/generate_readme.yml
```

View File

@@ -0,0 +1,23 @@
# install_demo role
This role will install demos into your specified Ansible Tower environment. Here is an example of using this role:
```
---
- name: setup deploy application demo
hosts: localhost
gather_facts: false
connection: local
tasks:
- name: install demo
include_role:
name: "install_demo"
```
Please refer to the master list in the main [README.md]()../../README.md).
# required variables
You must specify all the variables in the [choose_demo.yml](../../choose_demo.yml) example.

View File

@@ -0,0 +1,19 @@
---
galaxy_info:
role_name: install_demo
author: Sean Cavanaugh
description: |
This role will install demos into your specified Ansible Tower environment.
company: Red Hat
platforms:
- name: EL
versions:
- 8
- 7
license: GPL-3.0-or-later
min_ansible_version: 2.9
galaxy_tags: []
dependencies: []

View File

@@ -0,0 +1,14 @@
---
- name: add aws credential
tower_credential:
name: aws_credential
description: AWS Credential
organization: "{{ vars[demo].project.organization }}"
state: present
kind: aws
username: "{{ my_access_key }}"
password: "{{ my_secret_key }}"
tower_username: "{{ my_tower_username }}"
tower_password: "{{ my_tower_password }}"
tower_host: "{{ my_tower_host }}"
validate_certs: false

View File

@@ -0,0 +1,17 @@
---
- name: add azure credential
awx.awx.credential:
name: azure_credential
description: Azure Service Principle
organization: "Default"
state: present
credential_type: Microsoft Azure Resource Manager
inputs:
subscription: "{{ my_subscription }}"
tenant: "{{ my_tenant }}"
client: "{{ my_client }}"
secret: "{{ my_secret }}"
controller_username: "{{ my_controller_username }}"
controller_password: "{{ my_controller_password }}"
controller_host: "{{ my_controller_host }}"
validate_certs: false

View File

@@ -0,0 +1,74 @@
---
- name: add tower project
awx.awx.tower_project:
name: "{{ job_template_definitions[demo].project.name }}"
description: "{{ job_template_definitions[demo].project.description }}"
organization: "{{ job_template_definitions[demo].project.organization }}"
scm_type: "{{ job_template_definitions[demo].project.scm_type }}"
scm_url: "{{ job_template_definitions[demo].project.scm_url }}"
tower_username: "{{ my_tower_username }}"
tower_password: "{{ my_tower_password }}"
tower_host: "{{ my_tower_host }}"
validate_certs: false
- name: show values
debug:
msg:
- "name: {{ job_template_definitions[demo].name }}"
- "description: {{ job_template_definitions[demo].description }}"
- "job_type: {{ job_template_definitions[demo].job_type }}"
- "inventory: {{ job_template_definitions[demo].inventory }}"
- "project: {{ job_template_definitions[demo].project.name }}"
- "playbook: {{ job_template_definitions[demo].playbook }}"
- "execution_environment: {{ job_template_definitions[demo].execution_environment | default('Default execution environment') }}"
- "fact_caching_enabled: {{ job_template_definitions[demo].fact_caching_enabled | default('false') }}"
- "credential: {{ job_template_definitions[demo].credential }}"
- "survey_enabled: {{ job_template_definitions[demo].survey_enabled | default('false') }}"
- name: add single job template without survey
awx.awx.tower_job_template:
name: "{{ job_template_definitions[demo].name }}"
description: "{{ job_template_definitions[demo].description }}"
job_type: "{{ job_template_definitions[demo].job_type }}"
inventory: "{{ job_template_definitions[demo].inventory }}"
project: "{{ job_template_definitions[demo].project.name }}"
playbook: "{{ job_template_definitions[demo].playbook }}"
execution_environment: "{{ job_template_definitions[demo].execution_environment | default('Default execution environment') }}"
fact_caching_enabled: "{{ job_template_definitions[demo].fact_caching_enabled | default('false') }}"
credential: "{{ job_template_definitions[demo].credential }}"
survey_enabled: "{{ job_template_definitions[demo].survey_enabled }}"
tower_username: "{{ my_tower_username }}"
tower_password: "{{ my_tower_password }}"
tower_host: "{{ my_tower_host }}"
validate_certs: false
when:
- workshop_type in job_template_definitions[demo].workshop_type
- not job_template_definitions[demo].survey_enabled
register: add_job_template
until: add_job_template is not failed
retries: 5
- name: add single job template with survey
awx.awx.tower_job_template:
name: "{{ job_template_definitions[demo].name }}"
description: "{{ job_template_definitions[demo].description }}"
job_type: "{{ job_template_definitions[demo].job_type }}"
inventory: "{{ job_template_definitions[demo].inventory }}"
project: "{{ job_template_definitions[demo].project.name }}"
playbook: "{{ job_template_definitions[demo].playbook }}"
execution_environment: "{{ job_template_definitions[demo].execution_environment | default('Default execution environment') }}"
fact_caching_enabled: "{{ job_template_definitions[demo].fact_caching_enabled | default('false') }}"
credential: "{{ job_template_definitions[demo].credential }}"
survey_enabled: "{{ job_template_definitions[demo].survey_enabled }}"
survey_spec: "{{ job_template_definitions[demo].survey_spec }}"
tower_username: "{{ my_tower_username }}"
tower_password: "{{ my_tower_password }}"
tower_host: "{{ my_tower_host }}"
validate_certs: false
when:
- workshop_type in job_template_definitions[demo].workshop_type
- job_template_definitions[demo].survey_enabled
register: add_job_template
until: add_job_template is not failed
retries: 5

View File

@@ -0,0 +1,76 @@
---
- name: installing demo
debug:
msg: "installing demo: {{item}}"
- name: block for job template loop
block:
- name: "add tower project job_template_loop.yml"
awx.awx.tower_project:
name: "{{ item.value.project.name }}"
description: "{{ item.value.project.description }}"
organization: "{{ item.value.project.organization }}"
scm_type: "{{ item.value.project.scm_type }}"
scm_url: "{{ item.value.project.scm_url }}"
tower_username: "{{ my_tower_username }}"
tower_password: "{{ my_tower_password }}"
tower_host: "{{ my_tower_host }}"
validate_certs: false
when:
- workshop_type in item.value.workshop_type
- name: "add job template {{ item.value.name }} without survey job_template_loop.yml"
awx.awx.tower_job_template:
name: "{{ item.value.name }}"
description: "{{ item.value.description }}"
job_type: "{{ item.value.job_type }}"
inventory: "{{ item.value.inventory }}"
project: "{{ item.value.project.name }}"
playbook: "{{ item.value.playbook }}"
execution_environment: "{{ item.value.execution_environment | default('Default execution environment') }}"
fact_caching_enabled: "{{ item.value.fact_caching_enabled | default('false') }}"
credential: "{{ item.value.credential }}"
survey_enabled: "{{ item.value.survey_enabled }}"
tower_username: "{{ my_tower_username }}"
tower_password: "{{ my_tower_password }}"
tower_host: "{{ my_tower_host }}"
validate_certs: false
when:
- workshop_type in item.value.workshop_type
- not item.value.survey_enabled
register: add_project
until: add_project is not failed
retries: 5
- name: "add job template {{ item.value.name }} with survey"
awx.awx.tower_job_template:
name: "{{ item.value.name }}"
description: "{{ item.value.description }}"
job_type: "{{ item.value.job_type }}"
inventory: "{{ item.value.inventory }}"
project: "{{ item.value.project.name }}"
playbook: "{{ item.value.playbook }}"
execution_environment: "{{ item.value.execution_environment | default('Default execution environment') }}"
fact_caching_enabled: "{{ item.value.fact_caching_enabled | default('false') }}"
credential: "{{ item.value.credential }}"
survey_enabled: "{{ item.value.survey_enabled }}"
survey_spec: "{{ item.value.survey_spec }}"
tower_username: "{{ my_tower_username }}"
tower_password: "{{ my_tower_password }}"
tower_host: "{{ my_tower_host }}"
validate_certs: false
when:
- workshop_type in item.value.workshop_type
- item.value.survey_enabled
register: add_project
until: add_project is not failed
retries: 5
when:
- item.value.workflow is not defined or not item.value.workflow
- name: install workflow inside loop (workflow)
include_tasks: workflow_loop.yml
when:
- item.value.workflow is defined
- item.value.workflow
- workshop_type in item.value.workshop_type

View File

@@ -0,0 +1,9 @@
---
- name: include all demo vars from install_demo roll
include_vars:
dir: "vars"
name: job_template_definitions
- name: will load vars
debug:
msg: "variables loaded from install_demo role into job_template_definitions"

View File

@@ -0,0 +1,48 @@
---
- name: explicitly load vars under a subkey for reliable access
include_tasks: load_vars.yml
- name: set facts from role vars
set_fact:
demo_list: "{{ job_template_definitions|dict2items|map(attribute='key')|list }}"
full_demo_info: "{{ job_template_definitions|dict2items }}"
- name: provide info to terminal window
debug:
msg:
- "install {{ demo }} on {{ my_tower_host }}"
- "total demos: {{ demo_list | length }}"
- "available demos are: {{ demo_list }}"
- name: make sure demo is a valid demo
assert:
that:
- demo is defined
- demo in demo_list or demo == "all"
msg:
- "demo must be defined and be one of: {{ demo_list }}"
- "full list can be found on https://github.com/ansible/product-demos"
- name: setup public cloud credentials
include_tasks: "{{item}}"
with_first_found:
- "{{role_path}}/tasks/{{public_cloud}}.yml"
- "{{role_path}}/tasks/unsupported_cloud.yml"
- name: install all job templates
include_tasks: job_template_loop.yml
loop: "{{ full_demo_info }}"
when: demo == "all"
- name: install single job template
include_tasks: job_template.yml
when:
- demo != "all"
- job_template_definitions[demo].workflow is not defined or not job_template_definitions[demo].workflow
- name: install single workflow
include_tasks: workflow.yml
when:
- demo != "all"
- job_template_definitions[demo].workflow is defined
- job_template_definitions[demo].workflow

View File

@@ -0,0 +1,16 @@
- name: public cloud not supported
debug:
msg: "there is no public cloud credentials for this install, installing dummy creds"
- name: add azure credential
awx.awx.tower_credential:
name: azure_credential
description: Azure Service Principle
organization: "Default"
state: present
kind: azure_rm
subscription: "please replace me"
tower_username: "{{ my_tower_username }}"
tower_password: "{{ my_tower_password }}"
tower_host: "{{ my_tower_host }}"
validate_certs: false

View File

@@ -0,0 +1,6 @@
---
# these tasks will install a workflow
- name: "install all job templates in relation to workflow {{ job_template_definitions[demo].name }}"
include_tasks: add_job_template.yml
loop: "{{ job_template_definitions[demo].job_templates|dict2items }}"

View File

@@ -0,0 +1,4 @@
---
- name: "INSIDE LOOP - install all job templates in relation to workflow {{ item.value.name }}"
include_tasks: job_template_loop.yml
loop: "{{ item.value.job_templates|dict2items }}"

View File

@@ -0,0 +1,24 @@
---
developer_report:
author: "Sean Cavanaugh"
category: developer
name: "DEVELOPER / Create Developer Report"
description: >
'Create HTML report using
<a href="https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variables-discovered-from-systems-facts">Ansible facts</a>'
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/developer/developer_report.yml"
credential: "Workshop Credential"
survey_enabled: false
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- f5
- rhel
- rhel_90
- demo

View File

@@ -0,0 +1,66 @@
---
aws_provision_vm:
author: "David Rojas"
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/azure_provision_vm.md"
category: infrastructure
name: "INFRASTRUCTURE / AWS Provision VM"
description: "Provision RHEL VM on AWS with Ansible Tower Survey and Environmental variables"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/aws_provision_vm.yml"
credential: "aws_credential"
survey_enabled: true
survey_spec:
name: AWS Provision VM
description: Provisioning a RHEL VM with Tower?
spec:
- type: text
question_name: Enter name of the key pair to use
question_description: This can be an existing or new key pair
variable: keypair
required: true
#default:
- type: multiplechoice
question_name: What AWS region do you want to host your EC2 instance
question_description: Select one from the drop-down
variable: aws_region
required: true
default: us-east-1
choices:
- us-east-1
- us-west-1
- type: text
question_name: Enter the name of the VPC
question_description: This will be the VPC in which your new EC2 instance will live
variable: vpc_name
required: true
- type: multiplechoice
question_name: What instance type would you like to select
question_description: Select one from the drop-down
variable: instance_type
required: true
default: t2.micro
choices:
- t2.micro
- t2.small
- t2.medium
- type: text
question_name: Enter the name of the EC2 instance
question_description: You can't use any special characters or whitesapces
variable: instance_name
required: true
#default:
#video: "https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED"
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/davidrojas25/product-demos"
workshop_type:
- windows
- demo

View File

@@ -0,0 +1,63 @@
---
azure_mysql_server:
author: "David Rojas"
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/azure_mysql_server.md"
category: infrastructure
name: "INFRASTRUCTURE / Azure create a MySQL Server"
description: "Provision MySQL server on Azure with Ansible Tower Survey and Environmental variables"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/azure_mysql_server.yml"
credential: "azure_credential"
survey_enabled: true
survey_spec:
name: Azure mysql server
description: Provisioning a mySQL server in Azure
spec:
- type: text
question_name: Enter name of your resource group
question_description: This can be an existing or new resource group
variable: resource_group
required: true
#default:
- type: multiplechoice
question_name: What Azure region do you want to host your VM
question_description: Select one from the drop-down
variable: location
required: true
default: eastus
choices:
- eastus
- eastus2
- westus
- centralus
- type: text
question_name: Enter the name of MySQL Server Database
question_description: You can't use any special characters or whitesapces
variable: sqlserver_name
required: true
#default:
- type: text
question_name: Set the name of the Admin user
question_description: This will be used to login to your mySql. Do not use Admin or other reserved names
variable: admin_user
required: true
- type: password
question_name: Set the admin password to use
question_description: This will be used to login to your mySQL. Must be at least 8 characters long, must contain upper adn lower case, numbers, and special character.
variable: admin_pw
required: true
#video: "https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED"
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/davidrojas25/product-demos"
workshop_type:
- windows
- demo

View File

@@ -0,0 +1,51 @@
---
azure_provision_vm:
author: "David Rojas"
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/azure_provision_vm.md"
category: infrastructure
name: "INFRASTRUCTURE / Azure Provision VM"
description: "Provision RHEL VM on Azure with Ansible Tower Survey and Environmental variables"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/azure_provision_vm.yml"
credential: "azure_credential"
survey_enabled: true
survey_spec:
name: Azure Provision VM
description: Provisioning a RHEL VM with Tower?
spec:
- type: text
question_name: Enter name of your resource group
question_description: This can be an existing or new resource group
variable: resource_group
required: true
#default:
- type: multiplechoice
question_name: What Azure region do you want to host your VM
question_description: Select one from the drop-down
variable: location
required: true
default: eastus
choices:
- eastus
- eastus2
- westus
- centralus
- type: text
question_name: Enter the name of the VM
question_description: You can't use any special characters or whitesapces
variable: vm_name
required: true
#default:
#video: "https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED"
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- windows
- demo

View File

@@ -0,0 +1,48 @@
---
chocolatey_app_install:
author: "David Rojas"
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/chocolatey_app_install.md"
category: infrastructure
name: "INFRASTRUCTURE / Chocolatey App Install"
description: "Install various application packages using Chocolatey from a survey"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/chocolatey_app_install.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: Chocolatey Application Install
description: Which application do you want to install?
spec:
- type: multiselect
question_name: Select the application you would like to add update or remove
question_description: You can pick one or more
variable: choco_packages
required: true
default: git
choices:
- git
- wireshark
- googlechrome
- googledrive
- vscode
- type: multiplechoice
question_name: What state do you want these applications in?
question_description: Select Present Absent or Update
variable: app_state
required: true
default: present
choices:
- present
- absent
- update
#video: "https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED"
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- windows
- demo

View File

@@ -0,0 +1,52 @@
---
chocolatey_config:
author: "David Rojas"
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/chocolatey_config.md"
category: infrastructure
name: "INFRASTRUCTURE / Chocolatey Config"
description: "Configure Chocolatey parameters that require not just enabling but adding values"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/chocolatey_config.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: Chocolatey Config
description: Select a chocolatey parameter and config the value for it
spec:
- type: multiplechoice
question_name: Select the parameter you would like to add change or remove
question_description: Select one from drop-down
variable: config_item
required: true
#default:
choices:
- proxyUser
- commandExecutionTimeoutSeconds
- cacheLocation
- type: multiplechoice
question_name: Do you want to enable or disable this parameter?
question_description: Select Present or Absent
variable: state
required: true
default: present
choices:
- present
- absent
- type: text
question_name: Enter the value for the parameter
question_description: This is free form as each parameter has different values. Leave blank when setting as "absent"
variable: value
required: false
#default:
#video: "https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED"
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/davidrojas25/product-demos"
workshop_type:
- windows
- demo

View File

@@ -0,0 +1,46 @@
---
chocolatey_features:
author: "David Rojas"
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/chocolatey_features.md"
category: infrastructure
name: "INFRASTRUCTURE / Chocolatey Features Config"
description: "Enable or disable various Chocolatey features"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/chocolatey_features.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: Chocolatey Features Config
description: Which feature do you want to select?
spec:
- type: multiplechoice
question_name: Select the feature you would like to enable or disable?
question_description: Select one from the drop-down list
variable: feature
required: true
#default:
choices:
- checksumFiles
- stopOnFirstPackageFailure
- autoUninstaller
- virusCheck
- type: multiplechoice
question_name: What state do you want the feature in?
question_description: Select enabled or disabled
variable: state
required: true
default: enabled
choices:
- enabled
- disabled
#video: "https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED"
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- windows
- demo

View File

@@ -0,0 +1,30 @@
---
debug_info:
author: "Will Tome"
category: infrastructure
name: "INFRASTRUCTURE / Gather Debug Info"
description: "provide info for memory and CPU usage for specified systems"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/debug_info.yml"
credential: "Workshop Credential"
survey_enabled: false
survey_spec:
name: ''
description: ''
spec:
- question_name: 'Enter host to configure'
type: text
variable: HOSTS
required: false
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- f5
- rhel
- rhel_90
- demo

View File

@@ -0,0 +1,39 @@
---
deploy_application:
author: "Sean Cavanaugh"
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/deploy_application.md"
category: infrastructure
name: "INFRASTRUCTURE / Deploy Application"
description: "install yum applications on Linux with a survey"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/deploy_application.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: Deploy application survey
description: Which application do you want to install?
spec:
- type: multiplechoice
question_name: Select a command you would like to execute
question_description: select the application
variable: application
required: true
default: httpd
choices:
- httpd
- nginx
- htop
- gdb
video: "https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED"
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- f5
- rhel
- rhel_90
- demo

View File

@@ -0,0 +1,48 @@
---
grant_sudo:
author: "Will Tome"
category: infrastructure
name: "INFRASTRUCTURE / Grant Sudo"
description: "grant sudo privledges for specified time via survey"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/grant_sudo.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: ''
description: ''
spec:
- question_name: 'Enter host to configure'
type: text
variable: HOSTS
required: false
- question_name: Username
type: text
variable: sudo_user
required: true
- question_name: Time
type: integer
variable: sudo_count
required: true
default: 10
- question_name: Units
type: multiplechoice
variable: harden_ssh
required: true
choices:
- 'minutes'
- 'hours'
- 'days'
default: minutes
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- f5
- rhel
- rhel_90
- demo

View File

@@ -0,0 +1,34 @@
---
insights:
author: "Sean Cavanaugh"
category: infrastructure
name: "INFRASTRUCTURE / Red Hat Insights"
description: "install and configure Red Hat Insights"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/insights.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: ''
description: ''
spec:
- question_name: 'Enter your Red Hat customer portal username'
type: text
variable: redhat_portal_username
required: true
- question_name: 'Enter your Red Hat customer portal passowrd'
type: password
variable: redhat_portal_password
required: true
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- f5
- rhel
- rhel_90
- demo

View File

@@ -0,0 +1,30 @@
---
patching:
author: "Will Tome"
category: infrastructure
name: "INFRASTRUCTURE / Patching"
description: "patching for Linux servers"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/patching.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: ''
description: ''
spec:
- question_name: 'Enter host to configure'
type: text
variable: HOSTS
required: false
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- f5
- rhel
- rhel_90
- demo

View File

@@ -0,0 +1,24 @@
---
fact_scan:
author: "Will Tome"
category: infrastructure
name: "INFRASTRUCTURE / Fact Scan"
description: "scan facts for Linux and Windows systems"
job_type: "run"
inventory: "Workshop Inventory"
playbook: scan_facts.yml
credential: "Workshop Credential"
survey_enabled: false
fact_caching_enabled: true
project:
name: "Ansible official awx-facts-playbooks project"
description: "playbooks to support fact scanning in Ansible Tower"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/awx-facts-playbooks.git"
workshop_type:
- f5
- rhel
- windows
- rhel_90
- demo

View File

@@ -0,0 +1,30 @@
---
security_patching:
author: "Will Tome"
category: infrastructure
name: "INFRASTRUCTURE / Security Patching"
description: "upgrade all yum packages for security related except kernel"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/patching.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: ''
description: ''
spec:
- question_name: 'Enter host to configure'
type: text
variable: HOSTS
required: false
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- f5
- rhel
- rhel_90
- demo

View File

@@ -0,0 +1,22 @@
---
turn_off_community_grid:
author: "Sean Cavanaugh"
category: infrastructure
name: "INFRASTRUCTURE / Turn off IBM Community Grid"
description: "this role turns off IBM Community Grid boinc-client"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/turn_off_community_grid.yml"
credential: "Workshop Credential"
survey_enabled: false
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- f5
- rhel
- rhel_90
- demo

View File

@@ -0,0 +1,20 @@
---
windows_iis:
author: "Colin McNaughton"
category: infrastructure
name: "SERVER / Windows IIS Server"
description: "install webserver on Windows Server with a survey"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/windows_iis.yml"
credential: "Workshop Credential"
survey_enabled: false
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- windows
- demo

View File

@@ -0,0 +1,40 @@
---
windows_regedit_legal_notice:
author: "David Rojas"
readme: "https://github.com/ansible/product-demos/blob/master/docs/infrastructure/windows_regedit_legal_notice.md"
category: infrastructure
name: "INFRASTRUCTURE / Windows regedit legal notice"
description: "using regedit modify the legal notice"
job_type: "run"
inventory: "Workshop Inventory"
playbook: "playbooks/infrastructure/windows_regedit_legal_notice.yml"
credential: "Workshop Credential"
survey_enabled: true
survey_spec:
name: Legal Notice Survey
description: Collecting info to use during playbook runs for legal notice
spec:
- type: text
question_name: Enter the text of the legal notice title
question_description: Title should be short but descriptive
variable: title_legal_notice
required: true
default: Red Hat Sample Legal Notice
- type: textarea
question_name: Enter the text of the legal notice body
question_description: Body should contain all legally required info
variable: text_legal_notice
required: true
default: This is a sample body of a legal notice
#video: "https://www.youtube.com/watch?v=pU8ZgSBuEJw&list=PLdu06OJoEf2bp-PNtxPP_2n7Avkax8TED"
project:
name: "Ansible official demo project"
description: "prescriptive demos from Red Hat Management Business Unit"
organization: "Default"
scm_type: git
scm_url: "https://github.com/ansible/product-demos"
workshop_type:
- windows
- demo

Some files were not shown because too many files have changed in this diff Show More