Merge pull request #9 from gejames/master
Add vtyacl demo for network workshop
This commit is contained in:
77
docs/network/configlet_vtyacl.md
Normal file
77
docs/network/configlet_vtyacl.md
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# Demo: Deploy Application
|
||||||
|
|
||||||
|
[Click here to return to master demo list](../../README.md#demo-repository)
|
||||||
|
|
||||||
|
## 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 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**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
4. Click the rocket next to **Cisco IOS VTY ACL config audit/remediation** to launch the Job
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
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), 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
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
60
playbooks/network/configlet_vtyacl.yml
Normal file
60
playbooks/network/configlet_vtyacl.yml
Normal 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'
|
||||||
|
|
||||||
21
roles/install_demo/vars/main/network/configlet_vtyacl.yml
Normal file
21
roles/install_demo/vars/main/network/configlet_vtyacl.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
configlet_vtyacl:
|
||||||
|
author: "George James"
|
||||||
|
category: network
|
||||||
|
name: "Cisco IOS VTY ACL config audit/remediation"
|
||||||
|
description: "Cisco IOS VTY ACL config audit/remediation"
|
||||||
|
job_type: "run"
|
||||||
|
inventory: "Workshop Inventory"
|
||||||
|
playbook: "playbooks/network/configlet_vtyacl.yml"
|
||||||
|
credential: "Workshop Credential"
|
||||||
|
survey_enabled: false
|
||||||
|
fact_caching_enabled: 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:
|
||||||
|
- network
|
||||||
|
- demo
|
||||||
Reference in New Issue
Block a user