SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
© Copyright 2018 Opengear, Inc. www.opengear.com 1
Choosing an orchestration tool: Ansible and Salt
Vincent Boon
Opengear
2
Introduction
What is Orchestration, and how is it different from Automation?
•  Automation involves codifying tasks like configuring a webserver, or
upgrading a software package, so that they can be performed quickly, and
without error.
•  Orchestration involves codifying processes like deploying an application,
where many tasks may need to take place on disparate devices.
•  Traditionally been part of the Software and Ops world, but more and more
applicable to network devices.
3
Introduction
This talk is mostly going to focus on the automation component of
Orchestration.
The tools discussed are capable of both; my aim today is to give you enough of
an introduction that you can set aside some time to spin up a VM and try
them out.
Each of the tools have their own jargon, but once you get past that, you can
understand how they work, and make a choice based on your requirements.
4
Introduction
5
Changes in Network Orchestration
In 2018, Ansible gets a lot of airtime for network orchestration, more than
Puppet and Chef.
Salt is also heavily promoted by companies like Cloudflare
This talk will focus on Ansible and Salt:
-  What does their architecture look like.
-  What comes for free vs what you pay for.
-  How they use NAPALM.
-  Example of both applying a templated configuration
6
What is NAPALM?
Network vendors love automation/orchestration tools
-  They build a module for configuring their devices for Puppet/Chef/
Ansible/Salt
-  Write a whole bunch of whitepapers demonstrating its use
-  Customer writes a whole bunch of configuration using the module
-  Customer goes to evaluate another vendor
l  The module is different :(
-  Enter NAPALM (Network Automation and Programmability Abstraction
Layer with Multivendor support).
7
What is NAPALM?
NAPALM is a Python library that can provide a unified API to a number of different router vendors.
The napalm-ansible module provides a way to call the NAPALM API inside Ansible Playbooks
NAPALM itself is integrated inside Salt from version 2016.11.0 (Carbon) (driven by Cloudflare)
8
What is NAPALM?
Supported Network Operating Systems are:
•  Arista EOS
•  Cisco IOS, IOS-XR, NX-OS
•  Fortinet FortiOS
•  IBM
•  Juniper JunOS
•  Mikrotik RouterOS
•  Palo Alto NOS
•  Pluribus NOS
•  VyOS
9
What is NAPALM?
It isn’t magic:
•  In general, you’re still going to be writing configuration templates for your
different vendors.
•  Template then gets merged into running config, and can be checked for
diffs.
•  Power comes from the consistent “getters” API.
•  Allows “verifiers” to be written to check the bits of config you care about
•  Work continues on generalized configuration templates for true cross-
platform configuration, as well as Netconf and YANG support.
10
Ansible
Developed by Redhat, written in Python
Billed as an “masterless and agentless” automation/orchestration tool
•  Uses SSH as transport, authentication is generally done using SSH keys
•  Ships Python modules to the target device, which are then executed.
•  When being used with ansible-napalm, transport will vary based on the device being managed.
•  Can log to a variety of log services
•  Integrates with Ansible Tower to provide more enterprise features
–  Acts a central server for Ansible
–  WebUI/REST API/Dashboard
11
Ansible
Ansible uses the concept of a playbook to define a series of steps (or “plays”)
that map a series of execution steps (or tasks) to a group of hosts.
These playbooks are written in YAML.
Each task (which calls an Ansible module) should be idempotent – running it
many times will give the same result, and the task definition should
contain enough detail to allow it to also be used to check that the task has
been carried out successfully.
Handlers can also be defined for tasks that may need to be called only once
after a number of operations. For example, if a number of tasks are
concerned with changing webserver configurations, then the webserver
only needs to be restarted once at the end.
12
Ansible
In Ansible, hosts are defined inside an inventory. The inventory is often a
static file, but it can be dynamic when that makes sense (for managing
Docker containers, or VMs).
The inventory allows administrators to groups hosts based on their role
(webservers, load-balancers, border-routers etc), as well as associating
variables with individual or groups of host. These variables can be
referenced inside the Playbooks to customize the particular task for the
host.
Variables can also be retrieved at application time from the hosts. These
variables are called “Facts”
13
Ansible – Free vs $$
Out of the box, Ansible is designed around the user running Ansible playbooks
to push and verify configuration.
•  Very basic automation of playbook scheduling is included (ansible-pull +
cron)
•  For more, this is where Ansible Tower comes in
l  Free Tier, then 2 ($$) Tiers that come with more features and
support
Ansible – Example
---
- name: Apply basic config
hosts: cisco-cpe
tasks:
- name: Generate local configuration for hosts
local_action: template dest={{ playbook_dir }}/gen-config/initial-{{ hostname }}.conf src={{ playbook_dir }}/source/initial.j2
- name: Gen .diff file (apply change)
napalm_install_config:
hostname: "{{ host }}"
username: "{{ username }}"
password: "{{ password }}"
dev_os: "{{ dev_os }}"
config_file: gen-config/initial-{{ hostname }}.conf
commit_changes: True
replace_config: True
diff_file: initial-{{ hostname }}.diff
optional_args: {'auto_rollback_on_error': False}
Config Playbook hosts definition references
the inventory.
Task 1:
“Render” a template based
on facts found in the inventory
and gathered from the host
Task 2:
Install that configuration on
the host, and retrieve a diff
to show what changed
Variables come
from the inventory
or from fact retrieval
Ansible – Example
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname {{ hostname }}
!
boot-start-marker
boot-end-marker
!
enable secret 5 $1$WBBw$3WDO6jJHSwFtuw4Wk38Zv/
enable password notdefault
!
no aaa new-model
no ip routing
!
!
no ip cef
Config Playbook - Template
Templated hostname
Ansible – Example
# Cisco CPE devices
[cisco-cpe]
r1 host=192.168.82.76 hostname=r1-cpe.opengear.com
r2 host=192.168.82.77 hostname=r2-cpe.opengear.com
# Default variables for Cisco devices managed via NAPALM
[cisco-cpe:vars]
username=admin
password=default
dev_os=ios
ansible_connection=local
Inventory hosts definitions, with
in-line variable definitions
Default variables for this
group of hosts
Ansible – Example
test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ ansible -playbook config.play -i inventory
PLAY [Apply basic config] ******************************************************
TASK [Gathering Facts] *********************************************************
ok: [r1]
ok: [r2]
TASK [Generate local configuration for hosts] **********************************
ok: [r2 -> localhost]
ok: [r1 -> localhost]
TASK [Gen .diff file (apply change)] *******************************************
ok: [r1]
ok: [r2]
PLAY RECAP *********************************************************************
r1 : ok=3 changed=0 unreachable=0 failed=0
r2 : ok=3 changed=0 unreachable=0 failed=0
Execution – test configuration compliance
Configuration matches the
generated template.
Ansible – Example
test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ ssh admin@192.168.82.77
Password:
r2-cpe.opengear.com#conf t
Enter configuration commands, one per line. End with CNTL/Z.
r2-cpe.opengear.com(config)#hostname r2-cpe-modified.opengear.com
% Hostname "R2-CPE-MODIFIED. " is not a legal LAT node name, Using "CISCO_CC0008"
r2-cpe-modified.open(config)#end
r2-cpe-modified.opengear.com#exit
Connection to 192.168.82.77 closed.
Execution – configuration fixups
Configuration on one host is
manually changes
Ansible – Example
test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ ansible-playbook config.play -i inventory
PLAY [Apply basic config] **************************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************
ok: [r1]
ok: [r2]
TASK [Generate local configuration for hosts] ******************************************************************************
ok: [r1 -> localhost]
ok: [r2 -> localhost]
TASK [Gen .diff file (apply change)] ***************************************************************************************
ok: [r1]
changed: [r2]
PLAY RECAP *****************************************************************************************************************
r1 : ok=3 changed=0 unreachable=0 failed=0
r2 : ok=3 changed=1 unreachable=0 failed=0
test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ cat initial-r2-cpe.opengear.com.diff
+hostname r2-cpe.opengear.com
-hostname r2-cpe-modified.opengear.com
test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ ssh admin@192.168.82.77
Password:
r2-cpe.opengear.com#exit
Execution – configuration fixups
Configuration change is
discovered and fixed
Diff shows the change
20
Salt
Developed by SaltStack, written in Python
The architecture is generally based around a central server (salt-master), with agents called salt-
minions running on the devices under management. It can be run in a masterless mode, but this
is not how its normally used.
•  For devices that can’t run an agent, a “proxy-minion” process can be run on a server, which then
communicates with the device using its native protocols.
•  Communications between the server and the minions uses the ZeroMQ message bus by default.
•  All operations are scheduled and logged by the central server. Minions receive commands from
the server, and run these asynchronously. Results are push back to the server via the message
bus.
21
Salt
Salt has many types of modules, but for our example, we’ll examine two:
execution modules, and state modules.
Execution modules are used to perform actions
State modules use execution modules to make a device conform to the desired
state. This allows the user to define a desired state for a particular
segment of configuration in a declarative fashion.
Execution modules are generally run as once-off commands, while state
modules are more like Ansible Playbooks. Execution modules do however
return their results as JSON data, so their results can be parsed and used in
other workflows
22
Salt Architecture
The state module uses state definitions, which are written as SLS (SaLt State)
files. They can be written in many languages, but the default is YAML (like
an Ansible playbook)
These are stored centrally on the master, in a file server that is referred to as
the file_roots, while other data (such as variables) are stored in a data
store known as the Salt Pillar.
The salt-minions retrieve these state file definitions, and other items (like
variable definitions) from the Salt Pillar and the file server over the central
message bus.
23
Salt Architecture
Like Ansible, variables can be defined locally in the state file, and can also be
retrieved from the devices under management. Salt calls these variables
“grains”. However, best practice with Salt is to keep variables separate
from state information, by storing them in the Salt Pillar. This keeps logic
(state) separate from data (variables).
Rather that specifying the devices that a state or action applies to in the state
definition, Salt allows that to be specified during application time, using
static data stored inside the pillar, as well as grains that are retrieved from
the managed devices.
24
Salt
This description barely brushes the surface of what Salt can do.
It is more complex than Ansible:
•  More moving parts, and options compared to Ansible Playbooks
•  Steeper learning curve
•  Allows more complex workflows than out-of-the-box Ansible
25
Salt – Free vs $$
SaltStack does have an Enterprise version that adds a number of extra
features, but the OSS release allows a more sophisticated Automation and
Orchestration setup than Ansible.
However, this comes at the cost of the extra effort for setup.
Salt – Example
└── salt
├── pillar
│ ├── r1.sls
│ ├── r2.sls
│ └── top.sls
└── states
├── config.sls
└── router-config.j2
Salt Directory Structure Salt Pillar contains host definitions, and
other configuration information for hosts
and modules.
The States directory contains state definitions.
In this example, it also contains a jinja2 template, but this
could be stored in the Salt Pillar also.
The “top” file is used to define what data each minion can
retrieve from the Pillar. Best practice is to only expose
what is necessary for each host.
Salt – Example
[test@test-srv pillar (master)]$ cat top.sls
base:
r1:
- r1
r2:
- r2
[test@test-srv pillar (master)]$ cat r1.sls
proxy:
proxytype: napalm
driver: ios
host: 192.168.82.76
username: admin
password: default
optional_args:
auto_rollback_on_error: False
#R1 specific variables
hostname: r1.cpe.opengear.com
[test@test-srv pillar (master)]$ cat r2.sls
<same proxy statement as r1.sls>
#R2 specific variables
hostname: r2.cpe.opengear.com
Salt Pillar
Restrict r1.sls to host r1,
and r2.sls to host r2
NAPALM configuration for R1
(same settings used for R2)
Host specific variable for R1
Salt – Example
[test@test-srv states (master)]$ cat config.sls
full_config:
netconfig.managed:
- template_name: salt://router-config.j2
- replace: True
[test@test-srv states (master)]$ cat router-config.j2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname {{ pillar.hostname }}
!
Salt State
Defines the template to be applied,
and if it should replace the existing config
Same templating engine as
Ansible
“pillar.hostname” instructs Salt to
Retrieve variable from the Pillar
Salt - Example
test@test-srv:~/src/central-orchestration/salt-napalm-ios$ sudo salt r1 state.sls config
r1:
----------
ID: full_config
Function: netconfig.managed
Result: True
Comment: Configuration changed!
Started: 17:33:50.636394
Duration: 33202.776 ms
Changes:
----------
diff:
+hostname r1.cpe.opengear.com
-hostname r1-modified.cpe.opengear.com
Summary for r1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 33.203 s
Execution – test configuration compliance
Executing the “config”
state template on host r1
Diff shows the configuration
change that was applied
Salt - Example
test@test-srv:~/src/central-orchestration/salt-napalm-ios$ sudo salt -G 'os:ios' net.load_template salt://router-config.j2 replace=True
r2:
----------
already_configured:
False
comment:
diff:
+hostname r2.cpe.opengear.com
-hostname r2-cpe.opengear.com
loaded_config:
result:
True
r1:
----------
already_configured:
False
comment:
diff:
+hostname r1.cpe.opengear.com
-hostname r1-cpe.opengear.com
loaded_config:
result:
True
Execution – arbitrary commands
Running a “load_template”
command (same as our config.sls)
Selector sets the devices to those
running “ios” as their operating system.
Salt - Example
test@test-srv:~/src/central-orchestration/salt-napalm-ios$ sudo salt --output=yaml -G 'os:ios' net.arp
r2:
comment: ''
out:
- age: 0.0
interface: FastEthernet0/0
ip: 192.168.82.1
mac: 00:E0:4C:97:64:41
- age: 0.0
interface: FastEthernet0/0
ip: 192.168.82.77
mac: CA:01:34:CC:00:08
result: true
r1:
comment: ''
out:
- age: 0.0
interface: FastEthernet0/0
ip: 192.168.82.1
mac: 00:E0:4C:97:64:41
- age: 0.0
interface: FastEthernet0/0
ip: 192.168.82.76
mac: CA:00:34:CC:00:08
result: true
Retrieving information
Calls the net.arp NAPALM module.
Retrieves the ARP table of the devices
Selector sets the devices to those
running “ios” as their operating system.
Specifies YAML as the output format.
Can be used as ingress for other tools
32
Conclusion
I don’t know your requirements, you do.
There are good communities around both products.
You don’t need to do everything right now
Watch some vidoes and try out some examples!
Ansible: https://www.youtube.com/watch?v=9TFlc-ekRPk
Salt: https://www.youtube.com/watch?v=AqBk5fM7qZ0
33
Further Information
Ansible + Napalm:
https://pynet.twb-tech.com/blog/automation/napalm-ios.html
Salt + Napalm:
https://mirceaulinic.net/2016-11-17-network-orchestration-with-salt-and-
napalm/

Contenu connexe

Tendances

Subnet Pools and Pluggable IPAM
Subnet Pools and Pluggable IPAMSubnet Pools and Pluggable IPAM
Subnet Pools and Pluggable IPAMcarlbaldwin
 
ONOS-Based VIM Implementation
ONOS-Based VIM ImplementationONOS-Based VIM Implementation
ONOS-Based VIM ImplementationOPNFV
 
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...シスコシステムズ合同会社
 
22 - IDNOG03 - Christopher Lim (Mellanox) - Efficient Virtual Network for Ser...
22 - IDNOG03 - Christopher Lim (Mellanox) - Efficient Virtual Network for Ser...22 - IDNOG03 - Christopher Lim (Mellanox) - Efficient Virtual Network for Ser...
22 - IDNOG03 - Christopher Lim (Mellanox) - Efficient Virtual Network for Ser...Indonesia Network Operators Group
 
DEVNET-1175 OpenDaylight Service Function Chaining
DEVNET-1175	OpenDaylight Service Function ChainingDEVNET-1175	OpenDaylight Service Function Chaining
DEVNET-1175 OpenDaylight Service Function ChainingCisco DevNet
 
ONOS-Based VIM Implementation
ONOS-Based VIM ImplementationONOS-Based VIM Implementation
ONOS-Based VIM ImplementationOPNFV
 
VNFs at the Edge using Docker Containers
VNFs at the Edge using Docker ContainersVNFs at the Edge using Docker Containers
VNFs at the Edge using Docker ContainersOPNFV
 
NFD9 - Dinesh Dutt, Data Center Architectures
NFD9 - Dinesh Dutt, Data Center ArchitecturesNFD9 - Dinesh Dutt, Data Center Architectures
NFD9 - Dinesh Dutt, Data Center ArchitecturesCumulus Networks
 
Address Scopes OpenStack Summit 2016
Address Scopes OpenStack Summit 2016Address Scopes OpenStack Summit 2016
Address Scopes OpenStack Summit 2016carlbaldwin
 
LISP and NSH in Open vSwitch
LISP and NSH in Open vSwitchLISP and NSH in Open vSwitch
LISP and NSH in Open vSwitchmestery
 
21st Century iBGP Route Reflection by Mark Tinka
21st Century iBGP Route Reflection by Mark Tinka21st Century iBGP Route Reflection by Mark Tinka
21st Century iBGP Route Reflection by Mark TinkaMyNOG
 
Service Chaining overview (English) 2015/10/05
Service Chaining overview (English) 2015/10/05Service Chaining overview (English) 2015/10/05
Service Chaining overview (English) 2015/10/05Kentaro Ebisawa
 
IPv6 deployment at APNIC
IPv6 deployment at APNICIPv6 deployment at APNIC
IPv6 deployment at APNICAPNIC
 
BGP Dynamic Routing and Neutron
BGP Dynamic Routing and NeutronBGP Dynamic Routing and Neutron
BGP Dynamic Routing and Neutronrktidwell
 
Dynamic Service Chaining
Dynamic Service Chaining Dynamic Service Chaining
Dynamic Service Chaining Tail-f Systems
 
Cisco Live! :: Content Delivery Networks (CDN)
Cisco Live! :: Content Delivery Networks (CDN)Cisco Live! :: Content Delivery Networks (CDN)
Cisco Live! :: Content Delivery Networks (CDN)Bruno Teixeira
 
LINE's Infrastructure Platform: How It Scales Massive Services and Maintains ...
LINE's Infrastructure Platform: How It Scales Massive Services and Maintains ...LINE's Infrastructure Platform: How It Scales Massive Services and Maintains ...
LINE's Infrastructure Platform: How It Scales Massive Services and Maintains ...LINE Corporation
 

Tendances (20)

Subnet Pools and Pluggable IPAM
Subnet Pools and Pluggable IPAMSubnet Pools and Pluggable IPAM
Subnet Pools and Pluggable IPAM
 
ONOS-Based VIM Implementation
ONOS-Based VIM ImplementationONOS-Based VIM Implementation
ONOS-Based VIM Implementation
 
Building a Router
Building a RouterBuilding a Router
Building a Router
 
Cumulus Linux 2.5.3
Cumulus Linux 2.5.3Cumulus Linux 2.5.3
Cumulus Linux 2.5.3
 
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
 
22 - IDNOG03 - Christopher Lim (Mellanox) - Efficient Virtual Network for Ser...
22 - IDNOG03 - Christopher Lim (Mellanox) - Efficient Virtual Network for Ser...22 - IDNOG03 - Christopher Lim (Mellanox) - Efficient Virtual Network for Ser...
22 - IDNOG03 - Christopher Lim (Mellanox) - Efficient Virtual Network for Ser...
 
DEVNET-1175 OpenDaylight Service Function Chaining
DEVNET-1175	OpenDaylight Service Function ChainingDEVNET-1175	OpenDaylight Service Function Chaining
DEVNET-1175 OpenDaylight Service Function Chaining
 
ONOS-Based VIM Implementation
ONOS-Based VIM ImplementationONOS-Based VIM Implementation
ONOS-Based VIM Implementation
 
VNFs at the Edge using Docker Containers
VNFs at the Edge using Docker ContainersVNFs at the Edge using Docker Containers
VNFs at the Edge using Docker Containers
 
NFD9 - Dinesh Dutt, Data Center Architectures
NFD9 - Dinesh Dutt, Data Center ArchitecturesNFD9 - Dinesh Dutt, Data Center Architectures
NFD9 - Dinesh Dutt, Data Center Architectures
 
Address Scopes OpenStack Summit 2016
Address Scopes OpenStack Summit 2016Address Scopes OpenStack Summit 2016
Address Scopes OpenStack Summit 2016
 
LISP and NSH in Open vSwitch
LISP and NSH in Open vSwitchLISP and NSH in Open vSwitch
LISP and NSH in Open vSwitch
 
21st Century iBGP Route Reflection by Mark Tinka
21st Century iBGP Route Reflection by Mark Tinka21st Century iBGP Route Reflection by Mark Tinka
21st Century iBGP Route Reflection by Mark Tinka
 
Service Chaining overview (English) 2015/10/05
Service Chaining overview (English) 2015/10/05Service Chaining overview (English) 2015/10/05
Service Chaining overview (English) 2015/10/05
 
IPv6 deployment at APNIC
IPv6 deployment at APNICIPv6 deployment at APNIC
IPv6 deployment at APNIC
 
BGP Dynamic Routing and Neutron
BGP Dynamic Routing and NeutronBGP Dynamic Routing and Neutron
BGP Dynamic Routing and Neutron
 
Dynamic Service Chaining
Dynamic Service Chaining Dynamic Service Chaining
Dynamic Service Chaining
 
Cisco Live! :: Content Delivery Networks (CDN)
Cisco Live! :: Content Delivery Networks (CDN)Cisco Live! :: Content Delivery Networks (CDN)
Cisco Live! :: Content Delivery Networks (CDN)
 
Building Cloudscale Networks
Building Cloudscale NetworksBuilding Cloudscale Networks
Building Cloudscale Networks
 
LINE's Infrastructure Platform: How It Scales Massive Services and Maintains ...
LINE's Infrastructure Platform: How It Scales Massive Services and Maintains ...LINE's Infrastructure Platform: How It Scales Massive Services and Maintains ...
LINE's Infrastructure Platform: How It Scales Massive Services and Maintains ...
 

Similaire à Ansible & Salt - Vincent Boon

Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdfNigussMehari4
 
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)Nicolas Brousse
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleCoreStack
 
Ansible automation tool with modules
Ansible automation tool with modulesAnsible automation tool with modules
Ansible automation tool with modulesmohamedmoharam
 
Ansible Devops North East - slides
Ansible Devops North East - slides Ansible Devops North East - slides
Ansible Devops North East - slides InfinityPP
 
How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2Fernando Lopez Aguilar
 
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE LabHow to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE LabFIWARE
 
Automating the Cloud with Terraform, and Ansible
Automating the Cloud with Terraform, and AnsibleAutomating the Cloud with Terraform, and Ansible
Automating the Cloud with Terraform, and AnsibleBrian Hogan
 
Ansible automation sa technical deck q2 fy19
Ansible automation sa technical deck q2 fy19Ansible automation sa technical deck q2 fy19
Ansible automation sa technical deck q2 fy19dvillaco
 
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)M Malai
 
Ansible is Our Wishbone
Ansible is Our WishboneAnsible is Our Wishbone
Ansible is Our WishboneMydbops
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
RTP NPUG: Ansible Intro and Integration with ACI
RTP NPUG: Ansible Intro and Integration with ACIRTP NPUG: Ansible Intro and Integration with ACI
RTP NPUG: Ansible Intro and Integration with ACIJoel W. King
 
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltConf14 - Ben Cane - Using SaltStack in High Availability EnvironmentsSaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltConf14 - Ben Cane - Using SaltStack in High Availability EnvironmentsSaltStack
 

Similaire à Ansible & Salt - Vincent Boon (20)

Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdf
 
Ansible - Hands on Training
Ansible - Hands on TrainingAnsible - Hands on Training
Ansible - Hands on Training
 
Ansible intro
Ansible introAnsible intro
Ansible intro
 
DevOps for database
DevOps for databaseDevOps for database
DevOps for database
 
Ansible
AnsibleAnsible
Ansible
 
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Ansible automation tool with modules
Ansible automation tool with modulesAnsible automation tool with modules
Ansible automation tool with modules
 
Ansible Devops North East - slides
Ansible Devops North East - slides Ansible Devops North East - slides
Ansible Devops North East - slides
 
How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2
 
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE LabHow to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
 
Introducing Ansible
Introducing AnsibleIntroducing Ansible
Introducing Ansible
 
Automating the Cloud with Terraform, and Ansible
Automating the Cloud with Terraform, and AnsibleAutomating the Cloud with Terraform, and Ansible
Automating the Cloud with Terraform, and Ansible
 
Ansible automation sa technical deck q2 fy19
Ansible automation sa technical deck q2 fy19Ansible automation sa technical deck q2 fy19
Ansible automation sa technical deck q2 fy19
 
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
 
Ansible is Our Wishbone
Ansible is Our WishboneAnsible is Our Wishbone
Ansible is Our Wishbone
 
ansible why ?
ansible why ?ansible why ?
ansible why ?
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
RTP NPUG: Ansible Intro and Integration with ACI
RTP NPUG: Ansible Intro and Integration with ACIRTP NPUG: Ansible Intro and Integration with ACI
RTP NPUG: Ansible Intro and Integration with ACI
 
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltConf14 - Ben Cane - Using SaltStack in High Availability EnvironmentsSaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
 

Plus de MyNOG

Peering Personal MyNOG-10
Peering Personal MyNOG-10Peering Personal MyNOG-10
Peering Personal MyNOG-10MyNOG
 
Embedded CDNs in 2023
Embedded CDNs in 2023Embedded CDNs in 2023
Embedded CDNs in 2023MyNOG
 
Edge virtualisation for Carrier Networks
Edge virtualisation for Carrier NetworksEdge virtualisation for Carrier Networks
Edge virtualisation for Carrier NetworksMyNOG
 
Equinix: New Markets, New Frontiers
Equinix: New Markets, New FrontiersEquinix: New Markets, New Frontiers
Equinix: New Markets, New FrontiersMyNOG
 
Securing the Onion: 5G Cloud Native Infrastructure
Securing the Onion: 5G Cloud Native InfrastructureSecuring the Onion: 5G Cloud Native Infrastructure
Securing the Onion: 5G Cloud Native InfrastructureMyNOG
 
Hierarchical Network Controller
Hierarchical Network ControllerHierarchical Network Controller
Hierarchical Network ControllerMyNOG
 
Aether: The First Open Source 5G/LTE Connected Edge Cloud Platform
Aether: The First Open Source 5G/LTE Connected Edge Cloud PlatformAether: The First Open Source 5G/LTE Connected Edge Cloud Platform
Aether: The First Open Source 5G/LTE Connected Edge Cloud PlatformMyNOG
 
Cleaning up your RPKI invalids
Cleaning up your RPKI invalidsCleaning up your RPKI invalids
Cleaning up your RPKI invalidsMyNOG
 
Introducing Peering LAN 2.0 at DE-CIX
Introducing Peering LAN 2.0 at DE-CIXIntroducing Peering LAN 2.0 at DE-CIX
Introducing Peering LAN 2.0 at DE-CIXMyNOG
 
Load balancing and Service in Kubernetes
Load balancing and Service in KubernetesLoad balancing and Service in Kubernetes
Load balancing and Service in KubernetesMyNOG
 
Cloud SDN: BGP Peering and RPKI
Cloud SDN: BGP Peering and RPKICloud SDN: BGP Peering and RPKI
Cloud SDN: BGP Peering and RPKIMyNOG
 
SDM – A New (Subsea) Cable Paradigm
SDM – A New (Subsea) Cable ParadigmSDM – A New (Subsea) Cable Paradigm
SDM – A New (Subsea) Cable ParadigmMyNOG
 
AI in Networking: Transforming Network Operations with Juniper Mist AIDE
AI in Networking: Transforming Network Operations with Juniper Mist AIDEAI in Networking: Transforming Network Operations with Juniper Mist AIDE
AI in Networking: Transforming Network Operations with Juniper Mist AIDEMyNOG
 
Malaysia Data Center Landscape, Where is the next hotspot to place your fiber...
Malaysia Data Center Landscape, Where is the next hotspot to place your fiber...Malaysia Data Center Landscape, Where is the next hotspot to place your fiber...
Malaysia Data Center Landscape, Where is the next hotspot to place your fiber...MyNOG
 
FUTURE-PROOFING DATA CENTRES from Connectivity Perspective
FUTURE-PROOFING DATA CENTRES from Connectivity PerspectiveFUTURE-PROOFING DATA CENTRES from Connectivity Perspective
FUTURE-PROOFING DATA CENTRES from Connectivity PerspectiveMyNOG
 
Keep Ukraine Connected: A project from the community – for the community by R...
Keep Ukraine Connected: A project from the community – for the community by R...Keep Ukraine Connected: A project from the community – for the community by R...
Keep Ukraine Connected: A project from the community – for the community by R...MyNOG
 
Solving Civilization’s Long Term Communication Needs by Dinesh Kummaran, Tran...
Solving Civilization’s Long Term Communication Needs by Dinesh Kummaran, Tran...Solving Civilization’s Long Term Communication Needs by Dinesh Kummaran, Tran...
Solving Civilization’s Long Term Communication Needs by Dinesh Kummaran, Tran...MyNOG
 
MyIX Updates by Raja Mohan Marappan, MyIX
MyIX Updates by Raja Mohan Marappan, MyIXMyIX Updates by Raja Mohan Marappan, MyIX
MyIX Updates by Raja Mohan Marappan, MyIXMyNOG
 
Exploring Quantum Engineering for Networking by Melchior Aelmans, Juniper Net...
Exploring Quantum Engineering for Networking by Melchior Aelmans, Juniper Net...Exploring Quantum Engineering for Networking by Melchior Aelmans, Juniper Net...
Exploring Quantum Engineering for Networking by Melchior Aelmans, Juniper Net...MyNOG
 
Quick wins in the NetOps Journey by Vincent Boon, Opengear
Quick wins in the NetOps Journey by Vincent Boon, OpengearQuick wins in the NetOps Journey by Vincent Boon, Opengear
Quick wins in the NetOps Journey by Vincent Boon, OpengearMyNOG
 

Plus de MyNOG (20)

Peering Personal MyNOG-10
Peering Personal MyNOG-10Peering Personal MyNOG-10
Peering Personal MyNOG-10
 
Embedded CDNs in 2023
Embedded CDNs in 2023Embedded CDNs in 2023
Embedded CDNs in 2023
 
Edge virtualisation for Carrier Networks
Edge virtualisation for Carrier NetworksEdge virtualisation for Carrier Networks
Edge virtualisation for Carrier Networks
 
Equinix: New Markets, New Frontiers
Equinix: New Markets, New FrontiersEquinix: New Markets, New Frontiers
Equinix: New Markets, New Frontiers
 
Securing the Onion: 5G Cloud Native Infrastructure
Securing the Onion: 5G Cloud Native InfrastructureSecuring the Onion: 5G Cloud Native Infrastructure
Securing the Onion: 5G Cloud Native Infrastructure
 
Hierarchical Network Controller
Hierarchical Network ControllerHierarchical Network Controller
Hierarchical Network Controller
 
Aether: The First Open Source 5G/LTE Connected Edge Cloud Platform
Aether: The First Open Source 5G/LTE Connected Edge Cloud PlatformAether: The First Open Source 5G/LTE Connected Edge Cloud Platform
Aether: The First Open Source 5G/LTE Connected Edge Cloud Platform
 
Cleaning up your RPKI invalids
Cleaning up your RPKI invalidsCleaning up your RPKI invalids
Cleaning up your RPKI invalids
 
Introducing Peering LAN 2.0 at DE-CIX
Introducing Peering LAN 2.0 at DE-CIXIntroducing Peering LAN 2.0 at DE-CIX
Introducing Peering LAN 2.0 at DE-CIX
 
Load balancing and Service in Kubernetes
Load balancing and Service in KubernetesLoad balancing and Service in Kubernetes
Load balancing and Service in Kubernetes
 
Cloud SDN: BGP Peering and RPKI
Cloud SDN: BGP Peering and RPKICloud SDN: BGP Peering and RPKI
Cloud SDN: BGP Peering and RPKI
 
SDM – A New (Subsea) Cable Paradigm
SDM – A New (Subsea) Cable ParadigmSDM – A New (Subsea) Cable Paradigm
SDM – A New (Subsea) Cable Paradigm
 
AI in Networking: Transforming Network Operations with Juniper Mist AIDE
AI in Networking: Transforming Network Operations with Juniper Mist AIDEAI in Networking: Transforming Network Operations with Juniper Mist AIDE
AI in Networking: Transforming Network Operations with Juniper Mist AIDE
 
Malaysia Data Center Landscape, Where is the next hotspot to place your fiber...
Malaysia Data Center Landscape, Where is the next hotspot to place your fiber...Malaysia Data Center Landscape, Where is the next hotspot to place your fiber...
Malaysia Data Center Landscape, Where is the next hotspot to place your fiber...
 
FUTURE-PROOFING DATA CENTRES from Connectivity Perspective
FUTURE-PROOFING DATA CENTRES from Connectivity PerspectiveFUTURE-PROOFING DATA CENTRES from Connectivity Perspective
FUTURE-PROOFING DATA CENTRES from Connectivity Perspective
 
Keep Ukraine Connected: A project from the community – for the community by R...
Keep Ukraine Connected: A project from the community – for the community by R...Keep Ukraine Connected: A project from the community – for the community by R...
Keep Ukraine Connected: A project from the community – for the community by R...
 
Solving Civilization’s Long Term Communication Needs by Dinesh Kummaran, Tran...
Solving Civilization’s Long Term Communication Needs by Dinesh Kummaran, Tran...Solving Civilization’s Long Term Communication Needs by Dinesh Kummaran, Tran...
Solving Civilization’s Long Term Communication Needs by Dinesh Kummaran, Tran...
 
MyIX Updates by Raja Mohan Marappan, MyIX
MyIX Updates by Raja Mohan Marappan, MyIXMyIX Updates by Raja Mohan Marappan, MyIX
MyIX Updates by Raja Mohan Marappan, MyIX
 
Exploring Quantum Engineering for Networking by Melchior Aelmans, Juniper Net...
Exploring Quantum Engineering for Networking by Melchior Aelmans, Juniper Net...Exploring Quantum Engineering for Networking by Melchior Aelmans, Juniper Net...
Exploring Quantum Engineering for Networking by Melchior Aelmans, Juniper Net...
 
Quick wins in the NetOps Journey by Vincent Boon, Opengear
Quick wins in the NetOps Journey by Vincent Boon, OpengearQuick wins in the NetOps Journey by Vincent Boon, Opengear
Quick wins in the NetOps Journey by Vincent Boon, Opengear
 

Dernier

Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfDr Vijay Vishwakarma
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Pooja Bhuva
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024Elizabeth Walsh
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxheathfieldcps1
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Jisc
 
Plant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxPlant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxUmeshTimilsina1
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxPooja Bhuva
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...Nguyen Thanh Tu Collection
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxPooja Bhuva
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Pooja Bhuva
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxDr. Sarita Anand
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and ModificationsMJDuyan
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSCeline George
 
21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptxJoelynRubio1
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxJisc
 
OSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsOSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsSandeep D Chaudhary
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxmarlenawright1
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...pradhanghanshyam7136
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 

Dernier (20)

Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Plant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxPlant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptx
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
OSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsOSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & Systems
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 

Ansible & Salt - Vincent Boon

  • 1. © Copyright 2018 Opengear, Inc. www.opengear.com 1 Choosing an orchestration tool: Ansible and Salt Vincent Boon Opengear
  • 2. 2 Introduction What is Orchestration, and how is it different from Automation? •  Automation involves codifying tasks like configuring a webserver, or upgrading a software package, so that they can be performed quickly, and without error. •  Orchestration involves codifying processes like deploying an application, where many tasks may need to take place on disparate devices. •  Traditionally been part of the Software and Ops world, but more and more applicable to network devices.
  • 3. 3 Introduction This talk is mostly going to focus on the automation component of Orchestration. The tools discussed are capable of both; my aim today is to give you enough of an introduction that you can set aside some time to spin up a VM and try them out. Each of the tools have their own jargon, but once you get past that, you can understand how they work, and make a choice based on your requirements.
  • 5. 5 Changes in Network Orchestration In 2018, Ansible gets a lot of airtime for network orchestration, more than Puppet and Chef. Salt is also heavily promoted by companies like Cloudflare This talk will focus on Ansible and Salt: -  What does their architecture look like. -  What comes for free vs what you pay for. -  How they use NAPALM. -  Example of both applying a templated configuration
  • 6. 6 What is NAPALM? Network vendors love automation/orchestration tools -  They build a module for configuring their devices for Puppet/Chef/ Ansible/Salt -  Write a whole bunch of whitepapers demonstrating its use -  Customer writes a whole bunch of configuration using the module -  Customer goes to evaluate another vendor l  The module is different :( -  Enter NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support).
  • 7. 7 What is NAPALM? NAPALM is a Python library that can provide a unified API to a number of different router vendors. The napalm-ansible module provides a way to call the NAPALM API inside Ansible Playbooks NAPALM itself is integrated inside Salt from version 2016.11.0 (Carbon) (driven by Cloudflare)
  • 8. 8 What is NAPALM? Supported Network Operating Systems are: •  Arista EOS •  Cisco IOS, IOS-XR, NX-OS •  Fortinet FortiOS •  IBM •  Juniper JunOS •  Mikrotik RouterOS •  Palo Alto NOS •  Pluribus NOS •  VyOS
  • 9. 9 What is NAPALM? It isn’t magic: •  In general, you’re still going to be writing configuration templates for your different vendors. •  Template then gets merged into running config, and can be checked for diffs. •  Power comes from the consistent “getters” API. •  Allows “verifiers” to be written to check the bits of config you care about •  Work continues on generalized configuration templates for true cross- platform configuration, as well as Netconf and YANG support.
  • 10. 10 Ansible Developed by Redhat, written in Python Billed as an “masterless and agentless” automation/orchestration tool •  Uses SSH as transport, authentication is generally done using SSH keys •  Ships Python modules to the target device, which are then executed. •  When being used with ansible-napalm, transport will vary based on the device being managed. •  Can log to a variety of log services •  Integrates with Ansible Tower to provide more enterprise features –  Acts a central server for Ansible –  WebUI/REST API/Dashboard
  • 11. 11 Ansible Ansible uses the concept of a playbook to define a series of steps (or “plays”) that map a series of execution steps (or tasks) to a group of hosts. These playbooks are written in YAML. Each task (which calls an Ansible module) should be idempotent – running it many times will give the same result, and the task definition should contain enough detail to allow it to also be used to check that the task has been carried out successfully. Handlers can also be defined for tasks that may need to be called only once after a number of operations. For example, if a number of tasks are concerned with changing webserver configurations, then the webserver only needs to be restarted once at the end.
  • 12. 12 Ansible In Ansible, hosts are defined inside an inventory. The inventory is often a static file, but it can be dynamic when that makes sense (for managing Docker containers, or VMs). The inventory allows administrators to groups hosts based on their role (webservers, load-balancers, border-routers etc), as well as associating variables with individual or groups of host. These variables can be referenced inside the Playbooks to customize the particular task for the host. Variables can also be retrieved at application time from the hosts. These variables are called “Facts”
  • 13. 13 Ansible – Free vs $$ Out of the box, Ansible is designed around the user running Ansible playbooks to push and verify configuration. •  Very basic automation of playbook scheduling is included (ansible-pull + cron) •  For more, this is where Ansible Tower comes in l  Free Tier, then 2 ($$) Tiers that come with more features and support
  • 14. Ansible – Example --- - name: Apply basic config hosts: cisco-cpe tasks: - name: Generate local configuration for hosts local_action: template dest={{ playbook_dir }}/gen-config/initial-{{ hostname }}.conf src={{ playbook_dir }}/source/initial.j2 - name: Gen .diff file (apply change) napalm_install_config: hostname: "{{ host }}" username: "{{ username }}" password: "{{ password }}" dev_os: "{{ dev_os }}" config_file: gen-config/initial-{{ hostname }}.conf commit_changes: True replace_config: True diff_file: initial-{{ hostname }}.diff optional_args: {'auto_rollback_on_error': False} Config Playbook hosts definition references the inventory. Task 1: “Render” a template based on facts found in the inventory and gathered from the host Task 2: Install that configuration on the host, and retrieve a diff to show what changed Variables come from the inventory or from fact retrieval
  • 15. Ansible – Example ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname {{ hostname }} ! boot-start-marker boot-end-marker ! enable secret 5 $1$WBBw$3WDO6jJHSwFtuw4Wk38Zv/ enable password notdefault ! no aaa new-model no ip routing ! ! no ip cef Config Playbook - Template Templated hostname
  • 16. Ansible – Example # Cisco CPE devices [cisco-cpe] r1 host=192.168.82.76 hostname=r1-cpe.opengear.com r2 host=192.168.82.77 hostname=r2-cpe.opengear.com # Default variables for Cisco devices managed via NAPALM [cisco-cpe:vars] username=admin password=default dev_os=ios ansible_connection=local Inventory hosts definitions, with in-line variable definitions Default variables for this group of hosts
  • 17. Ansible – Example test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ ansible -playbook config.play -i inventory PLAY [Apply basic config] ****************************************************** TASK [Gathering Facts] ********************************************************* ok: [r1] ok: [r2] TASK [Generate local configuration for hosts] ********************************** ok: [r2 -> localhost] ok: [r1 -> localhost] TASK [Gen .diff file (apply change)] ******************************************* ok: [r1] ok: [r2] PLAY RECAP ********************************************************************* r1 : ok=3 changed=0 unreachable=0 failed=0 r2 : ok=3 changed=0 unreachable=0 failed=0 Execution – test configuration compliance Configuration matches the generated template.
  • 18. Ansible – Example test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ ssh admin@192.168.82.77 Password: r2-cpe.opengear.com#conf t Enter configuration commands, one per line. End with CNTL/Z. r2-cpe.opengear.com(config)#hostname r2-cpe-modified.opengear.com % Hostname "R2-CPE-MODIFIED. " is not a legal LAT node name, Using "CISCO_CC0008" r2-cpe-modified.open(config)#end r2-cpe-modified.opengear.com#exit Connection to 192.168.82.77 closed. Execution – configuration fixups Configuration on one host is manually changes
  • 19. Ansible – Example test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ ansible-playbook config.play -i inventory PLAY [Apply basic config] ************************************************************************************************** TASK [Gathering Facts] ***************************************************************************************************** ok: [r1] ok: [r2] TASK [Generate local configuration for hosts] ****************************************************************************** ok: [r1 -> localhost] ok: [r2 -> localhost] TASK [Gen .diff file (apply change)] *************************************************************************************** ok: [r1] changed: [r2] PLAY RECAP ***************************************************************************************************************** r1 : ok=3 changed=0 unreachable=0 failed=0 r2 : ok=3 changed=1 unreachable=0 failed=0 test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ cat initial-r2-cpe.opengear.com.diff +hostname r2-cpe.opengear.com -hostname r2-cpe-modified.opengear.com test@test-srv:~/src/central-orchestration/ansible-napalm-ios$ ssh admin@192.168.82.77 Password: r2-cpe.opengear.com#exit Execution – configuration fixups Configuration change is discovered and fixed Diff shows the change
  • 20. 20 Salt Developed by SaltStack, written in Python The architecture is generally based around a central server (salt-master), with agents called salt- minions running on the devices under management. It can be run in a masterless mode, but this is not how its normally used. •  For devices that can’t run an agent, a “proxy-minion” process can be run on a server, which then communicates with the device using its native protocols. •  Communications between the server and the minions uses the ZeroMQ message bus by default. •  All operations are scheduled and logged by the central server. Minions receive commands from the server, and run these asynchronously. Results are push back to the server via the message bus.
  • 21. 21 Salt Salt has many types of modules, but for our example, we’ll examine two: execution modules, and state modules. Execution modules are used to perform actions State modules use execution modules to make a device conform to the desired state. This allows the user to define a desired state for a particular segment of configuration in a declarative fashion. Execution modules are generally run as once-off commands, while state modules are more like Ansible Playbooks. Execution modules do however return their results as JSON data, so their results can be parsed and used in other workflows
  • 22. 22 Salt Architecture The state module uses state definitions, which are written as SLS (SaLt State) files. They can be written in many languages, but the default is YAML (like an Ansible playbook) These are stored centrally on the master, in a file server that is referred to as the file_roots, while other data (such as variables) are stored in a data store known as the Salt Pillar. The salt-minions retrieve these state file definitions, and other items (like variable definitions) from the Salt Pillar and the file server over the central message bus.
  • 23. 23 Salt Architecture Like Ansible, variables can be defined locally in the state file, and can also be retrieved from the devices under management. Salt calls these variables “grains”. However, best practice with Salt is to keep variables separate from state information, by storing them in the Salt Pillar. This keeps logic (state) separate from data (variables). Rather that specifying the devices that a state or action applies to in the state definition, Salt allows that to be specified during application time, using static data stored inside the pillar, as well as grains that are retrieved from the managed devices.
  • 24. 24 Salt This description barely brushes the surface of what Salt can do. It is more complex than Ansible: •  More moving parts, and options compared to Ansible Playbooks •  Steeper learning curve •  Allows more complex workflows than out-of-the-box Ansible
  • 25. 25 Salt – Free vs $$ SaltStack does have an Enterprise version that adds a number of extra features, but the OSS release allows a more sophisticated Automation and Orchestration setup than Ansible. However, this comes at the cost of the extra effort for setup.
  • 26. Salt – Example └── salt ├── pillar │ ├── r1.sls │ ├── r2.sls │ └── top.sls └── states ├── config.sls └── router-config.j2 Salt Directory Structure Salt Pillar contains host definitions, and other configuration information for hosts and modules. The States directory contains state definitions. In this example, it also contains a jinja2 template, but this could be stored in the Salt Pillar also. The “top” file is used to define what data each minion can retrieve from the Pillar. Best practice is to only expose what is necessary for each host.
  • 27. Salt – Example [test@test-srv pillar (master)]$ cat top.sls base: r1: - r1 r2: - r2 [test@test-srv pillar (master)]$ cat r1.sls proxy: proxytype: napalm driver: ios host: 192.168.82.76 username: admin password: default optional_args: auto_rollback_on_error: False #R1 specific variables hostname: r1.cpe.opengear.com [test@test-srv pillar (master)]$ cat r2.sls <same proxy statement as r1.sls> #R2 specific variables hostname: r2.cpe.opengear.com Salt Pillar Restrict r1.sls to host r1, and r2.sls to host r2 NAPALM configuration for R1 (same settings used for R2) Host specific variable for R1
  • 28. Salt – Example [test@test-srv states (master)]$ cat config.sls full_config: netconfig.managed: - template_name: salt://router-config.j2 - replace: True [test@test-srv states (master)]$ cat router-config.j2 ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname {{ pillar.hostname }} ! Salt State Defines the template to be applied, and if it should replace the existing config Same templating engine as Ansible “pillar.hostname” instructs Salt to Retrieve variable from the Pillar
  • 29. Salt - Example test@test-srv:~/src/central-orchestration/salt-napalm-ios$ sudo salt r1 state.sls config r1: ---------- ID: full_config Function: netconfig.managed Result: True Comment: Configuration changed! Started: 17:33:50.636394 Duration: 33202.776 ms Changes: ---------- diff: +hostname r1.cpe.opengear.com -hostname r1-modified.cpe.opengear.com Summary for r1 ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 33.203 s Execution – test configuration compliance Executing the “config” state template on host r1 Diff shows the configuration change that was applied
  • 30. Salt - Example test@test-srv:~/src/central-orchestration/salt-napalm-ios$ sudo salt -G 'os:ios' net.load_template salt://router-config.j2 replace=True r2: ---------- already_configured: False comment: diff: +hostname r2.cpe.opengear.com -hostname r2-cpe.opengear.com loaded_config: result: True r1: ---------- already_configured: False comment: diff: +hostname r1.cpe.opengear.com -hostname r1-cpe.opengear.com loaded_config: result: True Execution – arbitrary commands Running a “load_template” command (same as our config.sls) Selector sets the devices to those running “ios” as their operating system.
  • 31. Salt - Example test@test-srv:~/src/central-orchestration/salt-napalm-ios$ sudo salt --output=yaml -G 'os:ios' net.arp r2: comment: '' out: - age: 0.0 interface: FastEthernet0/0 ip: 192.168.82.1 mac: 00:E0:4C:97:64:41 - age: 0.0 interface: FastEthernet0/0 ip: 192.168.82.77 mac: CA:01:34:CC:00:08 result: true r1: comment: '' out: - age: 0.0 interface: FastEthernet0/0 ip: 192.168.82.1 mac: 00:E0:4C:97:64:41 - age: 0.0 interface: FastEthernet0/0 ip: 192.168.82.76 mac: CA:00:34:CC:00:08 result: true Retrieving information Calls the net.arp NAPALM module. Retrieves the ARP table of the devices Selector sets the devices to those running “ios” as their operating system. Specifies YAML as the output format. Can be used as ingress for other tools
  • 32. 32 Conclusion I don’t know your requirements, you do. There are good communities around both products. You don’t need to do everything right now Watch some vidoes and try out some examples! Ansible: https://www.youtube.com/watch?v=9TFlc-ekRPk Salt: https://www.youtube.com/watch?v=AqBk5fM7qZ0
  • 33. 33 Further Information Ansible + Napalm: https://pynet.twb-tech.com/blog/automation/napalm-ios.html Salt + Napalm: https://mirceaulinic.net/2016-11-17-network-orchestration-with-salt-and- napalm/