Skip to content
This repository has been archived by the owner on Jul 19, 2024. It is now read-only.

Commit

Permalink
docs + a few edits
Browse files Browse the repository at this point in the history
  • Loading branch information
routelastresort committed Mar 27, 2015
1 parent a7eee86 commit 106d4b4
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 48 deletions.
52 changes: 25 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,27 @@ The course is divided into multiple steps.
**Overview**

1. [Topology Overview](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/topologyoverview.md)
2. [vSRX Topology](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/vsrxconfiguration.md)
3. [Installing Software](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/installingsoftware.md)
4. [Software Overview](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/softwareoverview.md)
5. [Using Python and PyEZ Library](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/usingpyezlibrary.md)
6. [Using Ansible](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/usingansible.md)
1. [vSRX Topology](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/vsrxconfiguration.md)
1. [Installing Software](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/installingsoftware.md)
1. [Software Overview](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/softwareoverview.md)
1. [Using Python and PyEZ Library](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/usingpyezlibrary.md)
1. [Using Ansible](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/usingansible.md)

**Automation Hands On**

1. [Basic API Review](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/basicapireview.md)
2. [NETCONF Magic](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/netconfmagic.md)
3. [Configuring NAT](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/configuringnat.md)
4. [Basic Firewall Policies](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/basicfwpolicies.md)
5. [Registering your host](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/registeringyourhost.md)
6. [VPN connection to headend](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/vpnconnectiontoheadend.md)
7. [Enabling Dynamic Routing](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/enablingdynamicrouting.md)
8. [Creating VPN Firewall Policies](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/creatingfwpolicies.md)
9. [Automating Licenses](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/automatinglicense.md)
10. [Creating Application Policies](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/creatingapppolicies.md)
11. [Creating IPS Policies](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/creatingipspolicies.md)
12. [Disaster Strikes!](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/disasterstrikes.md)
13. [Recovering the lab](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/recoveringthelab.md)
1. [NETCONF Magic](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/netconfmagic.md)
1. [Configuring NAT](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/configuringnat.md)
1. [Basic Firewall Policies](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/basicfwpolicies.md)
1. [Registering your host](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/registeringyourhost.md)
1. [VPN connection to headend](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/vpnconnectiontoheadend.md)
1. [Enabling Dynamic Routing](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/enablingdynamicrouting.md)
1. [Creating VPN Firewall Policies](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/creatingfwpolicies.md)
1. [Automating Licenses](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/automatinglicense.md)
1. [Creating Application Policies](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/creatingapppolicies.md)
1. [Creating IPS Policies](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/creatingipspolicies.md)
1. [Disaster Strikes!](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/disasterstrikes.md)
1. [Recovering the lab](https://github.com/JNPRAutomate/JNPRAutomateDemo-Student/blob/master/docs/recoveringthelab.md)

**VM Access Information**

Expand All @@ -45,16 +45,14 @@ TODO
**Docs**

1. Fw and vpn fw policies @robwc - needs docs
2. app policies @robwc - needs docs
3. ips policies @robwc - needs docs
4. disaster strikes @robwc - via ansible TBD - completed last
5. dynamic routing @kwbales - needs docs
6. recovering the lab @robwc - via ansible TBD - completed last
7. installing software @routelastresort
8. software overview @routelastresort
9. vpn connection to headend @kwbales
10. using pyezlibrary @kwbales - NEED TO FINISH TABLES AND VIEWS
11. registering your host @robwc - needs docs and registry
1. app policies @robwc - needs docs
1. ips policies @robwc - needs docs
1. disaster strikes @robwc - via ansible TBD - completed last
1. dynamic routing @kwbales - needs docs
1. recovering the lab @robwc - via ansible TBD - completed last
1. vpn connection to headend @kwbales
1. using pyezlibrary @kwbales - NEED TO FINISH TABLES AND VIEWS
1. registering your host @robwc - needs docs and registry

**Tools**

Expand Down
42 changes: 33 additions & 9 deletions docs/installingsoftware.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Software Prerequisites

To run the lab you need a few applications loaded on your laptop.

These tools are Vagrant and Virtual Box. This tool set is very commonly used in a development environment. It makes common tasks such as bringing up a VM, provisioning it, and building multi-box topologies a breeze.
These tools are Vagrant and VirtualBox. This tool set is very commonly used in a development environment. It makes common tasks such as bringing up a VM, provisioning it, and building multi-box topologies a breeze.

Vagrant
=======
Expand All @@ -25,12 +25,25 @@ Install this executable on your operating system of choice just as you would any

### Vagrant Plugins

@routelastresort
Newer versions of the vSRX boxes require two plugins, namely:

Virtual Box
- [vagrant-junos](https://github.com/JNPRAutomate/vagrant-junos)
- [vagrant-host-shell](https://github.com/phinze/vagrant-host-shell)

these can be installed with the following commands:

```bash
vagrant plugin install vagrant-junos
vagrant plugin install vagrant-host-shell
```

A simple `vagrant plugin update` will freshen all installed plugins.


VirtualBox
===========

For the lab we will be using Virtual Box as our virtualization manager. This tool is free to use and most importantly it is free to use with Vagrant. It also offers some support that VMware Workstation or Fusion do not offer. This includes support for the VirtIO driver and the ability to more simply manage virtual networks.
For the lab we will be using VirtualBox as our virtualization manager. This tool is free to use and most importantly it is free to use with Vagrant. It also offers some support that VMware Workstation or Fusion do not offer. This includes support for the VirtIO driver and the ability to more simply manage virtual networks.

When installing on Windows it typically will install a network driver. It will prompt you to click "Continue" to take this action. Please hit continue to install the driver.

Expand All @@ -43,18 +56,29 @@ When installing on Windows it typically will install a network driver. It will p
Installing Boxes
================

@routelastresort
- Vagrant stores boxes in `$HOME/vagrant.d` on Linux & Mac, or `%userprofile%\.vagrant.d\boxes` on Windows

Initializing VMs
================

@routelastresort
Before class (install a box that can later be used):
```bash
vagrant box add juniper/netdevops-ubuntu1404
vagrant box add juniper/ffp-12.1X47-D20.7

```

Install and launch both (from the the JNPRAutomateDemo-Student folder):
(it's recommended that you only do this if you're ready for the boxes to be running)
```bash
vagrant up
```

Validating Install
------------------

@routelastresort
- `vagrant version` should tell you that you're running 1.7.2, aka the latest and greatest
- `vagrant plugin list` should include:
- vagrant-host-shell` 0.0.4 or newer
- vagrant-junos` 0.2.0 or newer


Vagrant Global Status
Expand Down
45 changes: 34 additions & 11 deletions docs/softwareoverview.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,42 @@
Vagrant
=======
[VirtualBox](http://virtualbox.org)
===================================

@routelastresort
[VirtualBox](http://virtualbox.org) is an open source and free virtualization software platform for Windows, Mac, Linux, and other operating systems. It's a great fit for Vagrant and development environments because it's free and consistent in usage. For networking, it's also a great fit, as you can name the virtual network segments. VMware is faster for desktop virtualization, but costs money, has two separate versions (Workstation or Fusion) that operate a little differently, and requires a paid plugin to work with Vagrant.

Virtual Box
===========

@routelastresort
[Vagrant](https://vagrantup.com)
================================

PyEZ Library
[Vagrant](https://vagrantup.com) is a tool that takes the pain out of creating and using development environments. In the past, users used their own PC, procured a server, or used a virtual machine on their desktop or a server. Over the last decade, the virtualization revolution has dictated that these are most-commonly virtual machines (VMs). Using VMs leverages the modern hardware on your PC that could duplicate the power of a rack of computers from years ago, but let's look at the few of things that Vagrant helps with:

- __Consistent__: VMs are snapshot installs of an installed OS, but Vagrant can take this to the next level across complex environments of multiple VMs. Your environment and mine will always be the same.
- __Resilient__: your development environment can now be infinitely reinstalled. Of course, you can reinstall a VM, but with Vagrant, you type `vagrant destroy`, and `vagrant up`. If your data resides somewhere else, Vagrant can use shared folders on your host machine to keep working data unaffected.
- __Portable__: your Vagrant Box (a VM that's been "Vagrantized") can be shared with anyone via a URL or [Atlas](https://atlas.hashicorp.com). You can also give someone a [Vagrantfile](http://docs.vagrantup.com/v2/vagrantfile/), which is a simple text file, and they can type `vagrant up` to launch your environment!
- __Shareable__: You can share your running instance with another user with [Vagrant Share](http://docs.vagrantup.com/v2/share/). This is great for classes and troubleshooting.


[PyEZ Library](https://github.com/Juniper/py-junos-eznc)
============

@routelastresort
__PyEZ__ ([TechWiki](https://techwiki.juniper.net/Automation_Scripting/010_Getting_Started_and_Reference/Junos_PyEZ))([GitHub](https://github.com/Juniper/py-junos-eznc))([PyPI](https://pypi.python.org/pypi/junos-eznc/)) is Juniper's premiere NETCONF-based automation library. Originally authored by Junos Automation Hall of Famer [Jeremy Schulman](https://twitter.com/nwkautomaniac), PyEZ (aka junos-eznc for "EZ" NETCONF) is now curated by another automation rockstar, [Rick Sherman](https://twitter.com/shermdog01). With thousands of downloads a month, the Python library is definitely the hottest open source network automation library out there!

Before PyEZ (and our other EZ libraries), network automation usually meant programming, but PyEZ helps make this consumable for non-programmers.

__Python as a Power Shell__ [techwiki page](https://techwiki.juniper.net/Automation_Scripting/010_Getting_Started_and_Reference/Junos_PyEZ/01_Junos_PyEZ_Features_and_Architecture):

> This means that non-programmers, for example, the Network Engineer, can use the native Python shell on their management server (laptop, tablet, phone, and so on) as their point-of-control for remotely managing Junos OS devices. The Python shell is an interactive environment that provides the necessary means to perform common automation tasks, such as conditional testing, for-loops, macros, and templates. These building blocks are similar enough to other "shell" environments, like Bash, to enable the non-programmer to use the Python shell as a power tool, instead of a programming language. From the Python shell, a user can manage Junos OS devices using native hash tables, arrays, and so on, instead of using device-specific Junos OS XML or resorting to "screen scraping" the actual Junos OS CLI.
Most network vendors don't have truly open libraries that are [free as in freedom, vs. free as in beer](http://en.wikipedia.org/wiki/Gratis_versus_libre). You might have to sign up on a webpage, fill out a form, or actually buy something. Juniper's commitment to real open source projects and tooling is best presented with our GitHub pages ([Juniper](https://github.com/Juniper)) ([JNPRAutomate](https://github.com/JNPRAutomate)).

[Ansible](http://www.ansible.com/home)
======================================

You hear a lot about Puppet, Chef, Ansible, and Salt, but [Ansible](http://www.ansible.com/home) definitely wins the award for easiest configuration management framework to learn. That doesn't mean it's less powerful, as it's currently powering some of the largest clouds in the world. Ansible's strengths for us:

Ansible
=======
- rapid configuration of multiple devices (up to thousands), simultaneously over SSH
- easy configuration through use of [YAML](http://yaml.org/) for describing your environment
- easy templating with [Jinja2](http://jinja.pocoo.org/docs/dev/) to dynamically
- easy operation with CLI command suite Swiss army knife tools, `ansible` and `ansible-playbook`
- easy module installation with `ansible-galaxy`

@routelastresort
Did we mention it's easy? Ansible will make your day-to-day job easier, with immeidately beneficial network automation prowess. After checking out Ansible, you'll be that much more prepared to learn Puppet, Chef, and Salt, and see if they're a better fit for you
2 changes: 1 addition & 1 deletion docs/usingansible.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Ansible is a command-line automation tool that simplifies the large scale manage
5. Easy to learn
6. Easy to extend with custom modules
- Python is first class language for this
- But any language can be used to run scrips (Bash, Ruby, PERL)
- But any language can be used to run scrips (Bash, Ruby, Perl)

**Drawbacks**

Expand Down

0 comments on commit 106d4b4

Please sign in to comment.