Your SlideShare is downloading. ×
  • Like
Puppet for Junos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply
Published

In this presentation, Jeremy Schulman provides a deep dive into the integration between Puppet and Junos. Included is an overview of how they work together to simplify network management, and it also …

In this presentation, Jeremy Schulman provides a deep dive into the integration between Puppet and Junos. Included is an overview of how they work together to simplify network management, and it also includes configurations for operators to leverage.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,350
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
90
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Junos SDK packages are loaded using the same "request system software add…" command; so this can also be automated during initial commissioning process.
  • Puppet is really only one of a few configuration management applications. Other common ones are "Chef", "BMC", and Microsoft products
  • typically apply-macros are used in conjunction with Junos commit-scripts. To be clear - there are no Junos commit scripts. The apply-macro is used as a "cookie" to track which interfaces are part of the LAG so the code doesn't have to scan the entire configuration/interfaces stanza.

Transcript

  • 1. PUPPET FOR JUNOS Jeremy Schulman - Global Solutions Architect | Network Automation @nwkautomaniac #ProgramTheNetwork 2013-April Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 2. LEGAL DISCLAIMER This presentation contains statements pertaining to product direction and is subject to change at any time without notice. No purchases are contingent upon Juniper Networks delivering any feature or functionality depicted on this presentation. Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 3. Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 4. Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 5. PUPPET FOR JUNOSAVAILABLE NOW! AS “EARLY-ADOPTER (EA)” 2/15/2013“DevOps” approach to distribution:  Puppet “netdev” module source code is in Github  All packages are stored where they should be (Puppet Forge,…)  Support done on J-Net community forum  Juniper Tech-Pages available  Free, “BSD-style” licenseJunos Products at GA  EX4200, EX4550: 12.3R2.5  QFX3500, QFX3600: 12.3Q R2  MX5 ... MX960: 12.3R2.5 Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 6. PUPPET FOR JUNOSHOW IT ALL FITS TOGETHER Puppet Master (server) Device running Junos OS "netdev" "netdev" are Puppet modules stored on the Puppet master. The switch Puppet "netdev" modules running the Puppet agent downloads this code via SSL Puppet Agent (client) Ruby Gems jpuppet Ruby Interpreter packageAll Junos products are equipped with aXML API that enables programmatic XMLconfiguration changes and operational (FreeBSD)management Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 7. PUPPET FOR JUNOSON THE INTERNETPuppet Labs Solution Page:https://puppetlabs.com/solutions/juniper-networks/Quick Links:  Junos software package files: https://downloads.puppetlabs.com/junos  Juniper TechPubs: http://juni.pr/XTeSgl  Puppet Module juniper/netdev_stdlib_junos: http://bit.ly/Z49NkO Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 8. ABOUT PUPPET Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 9. PUPPET LABS  8 years Experience in the IT automation market  10 million+ Nodes being managed worldwide by Puppet. 60,000+ nodes managed in largest deployments  3.5 million Downloads of Puppet Labs software in the past 12 months  6,000+ Active and growing community of users around the world who collaborate with each other 24x7 in variety of forums  900+ Community-contributed Puppet Forge modules, and 330,000+ downloads of modules in the past 12 months  750+ Paying customers Finance, Telecom, Entertainment, Web, R etail, Hi- Customer Tech, Healthcare, Government, Defense, Verticals Education, Manufacturing and Insurance Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 10. WHAT IS PUPPET?AUTOMATION FOR IT INFRASTRUCTUREPuppet is an automation software product used by IT teams to managelarge scale deployments of complex compute resources (servers)Puppet Labs offers Puppet in two forms: as open-source and acommercial Enterprise editionPuppet Enterprise automates tasks at any stage of the IT infrastructurelifecycle, including:  Provisioning  Discovery Doesnt this list sound  OS & App Configuration Management exactly like what  Build & Release Management networking customers are always asking for ?  Patch Management …  Infrastructure Audit & Compliance Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 11. WHY DOES PUPPET MATTER?APPLICATIONS DRIVE THE BUSINESSIT infrastructure spend is focused on applications  Datacenter applications drive business revenue  Top-of-rack switching is a commodity, the network is a "utility" that serves the applicationsServer admins/DevOps drive IT innovation  They follow well defined and mature configuration management processes  They use sophisticated automation tools  They employ programmersPuppet developer ecosystem  Server admins write Puppet "code" to version control and deploy enterprise applications at large scale  Puppet Forge is an ecosystem of 3rd-party Puppet developers, over 850 modules They want to use one IT modeling process to orchestrate servers and top-of-rack switching for integrated delivery of their applications Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 12. DEPLOYING INFRASTRUCTURE AT SCALELARGE DATACENTERS DEPEND ON PUPPETThe Puppet framework provides for one ITmodeling process to deploy applicationsacross mixed server/compute environments(Windows, CentOS, Debian, etc.)The role of the Puppet Master is to assignNodes (devices) into classes, e.g. "webserver", "database server", etc. Each classdefinition describes the catalog of resourcesneeded at on device, e.g.Apache, MySQL, etc. The resourcesdescribe what to do, not how to do itApplying this concept to networking, theresources would be"interfaces", "vlans", etc. And the As compute has become a softwarecomplexities of network management are defined service to the applications, theabstracted by the Puppet agent running on network must also become a softwarethe switch defined service. This "software" can then be "versioned" for application rolloutThe Puppet framework enables large scalechanges to devices by simply changing theclass definition on the Puppet Master Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 13. NETDEV PUPPET MODULE Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 14. PUPPET FOR JUNOSNETDEV PUPPET MODULENetdev is a vendor-neutral network abstractionframework developed by Juniper Networks andcontributed freely to the DevOps community Juniper has contributed basic layer-1 and layer-2 network abstractions. Other abstractions are TBD DevOps can extend the framework to define any abstractions or features they need for their environment The Netdev framework is open and free; i.e. the “DevOps” way Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 15. NETDEVRESOURCES TYPES Resource Description netdev_vlan Manages VLAN configuration netdev_interface Manages Physical Interface configuration netdev_l2_interface Manages VLAN to interface assignments netdev_lag Manages Link Aggregation Group configurationEvery resource supports the standard Puppet ensure property whichcreates/removes configurationEach resource also supports an active property which configures the Junos“activate / deactivate” control Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 16. NETDEV_VLANMANAGE VLANSProperty Descriptionname The name of the VLAN, e.g. “Blue”vlan_id The VLAN tag-ID value [ 1 .. 4095 ]description The VLAN description. If one is not provided, then it will default to: Puppet created VLAN: <name>: <vlan-id>VLANs are assigned to ports using the netdev_l2_interface resource Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 17. NETDEV_INTERFACEMANAGE PHYSICAL INTERFACESProperty Descriptionname The name of the interface, e.g. “ge-0/0/0”description Assigns the description value to the interface, defaults to: Puppet created interface: <name>admin Configures the administrative state, defaults to up: up, downmtu Configures the interface MTU valuespeed Defaults to auto, Forces the link speed: 10m, 100m, 1g, 10g, autoduplex Defaults to auto Forces the link duplex: full, half, auto Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 18. NETDEV_L2_INTERFACEMANAGE ASSIGNMENT OF VLANS TO SWITCH PORTSProperty Descriptionname The name of the interface, e.g. “ge-0/0/0”, note: does *not* include the unit numberdescription Assigns the description value to the interface, defaults to: Puppet created eth-switch: <name>untagged_vlan VLAN name for untagged packets. If the port is also processing tagged packets, then this VLAN is the "native VLAN"tagged_vlans VLAN names for tagged packets. This could be a single value, or an array of values. When this property is set, vlan_tagging property defaults to enablevlan_tagging Normally not used ... automatic by Puppet disable (default) - port is in access mode, tagged packets discarded enable - port is in trunk mode, tagged packets processed Automatically set to enable if tagged_vlans is also set Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 19. NETDEV_LAGMANAGE LINK AGGREGATION GROUPSProperty Descriptionname The name of the interface, e.g. “ae0”links A list of physical interfaces that makes up the LAG bundlelacp Controls if and how the Link Aggregation Control Protocol (LACP) is used. disabled (default) – LACP is not used active – LACP is in the active mode passive – LACP is in the passive modeminimum_links The number of physical links that must be in the “up” condition to declare the LAG port in the “up” condition. By default this value is not set and there is no minimum link requirement Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 20. MANIFEST EXAMPLE Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 21. SIMPLE EXAMPLE OF VLANS AND SWITCH PORTS node "jex" { The node name is the netdev_device { $hostname: } hostname of the device. The netdev_vlan { "Pink": vlan_id => 703, variable $hostname comes description => "This is a pink vlan", from the facter program } netdev_vlan { "Green": vlan_id => 500, } netdev_l2_interface { ge-0/0/19: untagged_vlan => Pink, } ge-0/0/19 will be an netdev_l2_interface { ge-0/0/20: "access" port and description => "My port, back off!", untagged_vlan => Blue, tagged_vlans => [ Green, Black, Yellow ], ge-0/0/20 will be a } } "trunk" port with a native-vlan-id Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 22. PUPPET VARIABLE AND CLASSES $vlans = { Blue => { vlan_id => 100, description => "This is a blue vlan, just updated" }, Green => { vlan_id => 101, description => "This is a Green VLAN" }, Purple => { vlan_id => 102, description => "Puple is purdy" }, Red => { vlan_id => 103, description => "This is a red vlan" }, Yellow => { vlan_id => 104, description => "This is a yellow vlan" } } class database_switch { netdev_device { $hostname: } create_resources( netdev_vlan, $vlans ) $db_port_desc = "This is for database" $db_ports = { "ge-0/0/0" => { description => "${db_port_desc} ge0" }, "ge-0/0/1" => { description => "${db_port_desc} ge1" }, "ge-0/0/2" => { description => this is ge2 }, "ge-0/0/3" => { description => this is ge3 }, } $db_port_settings = { untagged_vlan => Red, tagged_vlans => [Red, Green, Yellow] } create_resources( netdev_l2_interface, $db_ports, $db_port_settings ) } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 23. NODES USING CLASSES node "jex" { include database_switch } node "gizmo" { include database_switch netdev_vlan { "myMailserver": vlan_id => 99, description => "Private Mailsever VLAN" } netdev_l2_interface { "ge-0/0/20": description => "Going to mailserver", tagged_vlans => myMailserver } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 24. MORE ADVANCED TECHNIQUESINFRASTRUCTURE AS CODE + DATA DRIVEN INFRASTRUCTURE node "ex4" { netdev_device { $hostname: } $vlans = loadyaml( "/etc/puppet/manifests/files/vlans.yaml" ) $lags = loadyaml( "/etc/puppet/manifests/nodes/lags.yaml" ) $tor_conf = loadyaml( "/etc/puppet/manifests/nodes/tor-config.yaml") create_resources( netdev_vlan, $vlans ) # define the server ports, even numbers between 10 and 20 $server_ports = bracket_expansion( "ge-0/0/[10-20]", 2 ) netdev_l2_interface { $server_ports: untagged_vlan => $tor_conf[server_ports][vlan] } # define the LAG ports. Take the complete list of all LAG links and ensure that # there are no layer-2 services on them. Then create the netdev_lag resources and # assign the list of VLANs. The inline_template below is Ruby/ERB. $all_lag_links = split( inline_template( "<%= lags.collect{|k,v| v[links]}.join( ) %>"), ) netdev_l2_interface { $all_lag_links: ensure => absent } create_resources( netdev_lag, $lags ) $lag_names = keys( $lags ) netdev_l2_interface { $lag_names: tagged_vlans => $tor_conf[lag_ports][vlans] } } Special Thanks to Krzysztof Wilczynski for his library of handy Puppet functions; bracket_expansion() Copyright © 2013 Juniper Networks, Inc. www.juniper.net https://github.com/kwilczynski/puppet-functions
  • 25. EXAMPLE YAML FILEStor-config.yaml custom use data --- server_ports: vlan: Purple lag_ports: vlans: - Red - Green - Blue - Yellowvlans.yaml maps directly to resource properties --- Red: vlan_id: 57 description: This is a Red vlan Green: vlan_id: 101 description: This is a Green vlan Blue: vlan_id: 102 description: This is a Blue vlan Yellow: vlan_id: 1003 description: This is a Yellow vlan Purple: vlan_id: 104 description: This is a Purple vlan Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 26. SWITCH PRODUCT FAMILIESEX + QFX Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 27. NETDEV_VLAN node "ex4" { netdev_device { $hostname: } netdev_vlan { "Green": vlan_id => 101, description => This is a Green vlan } } vlans { Green { description "This is a Green vlan"; vlan-id 101; } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 28. NETDEV_L2_INTERFACEACCESS PORT EXAMPLE node "ex4" { netdev_device { $hostname: } netdev_l2_interface { "ge-0/0/9": untagged_vlan => Green } } interfaces { ge-0/0/9 { unit 0 { description "Puppet created eth-switch: ge-0/0/9" family ethernet-switching; port-mode access; vlan { members Green; } } } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 29. NETDEV_L2_INTERFACETRUNK PORT EXAMPLE node "ex4" { netdev_device { $hostname: } netdev_l2_interface { "ge-0/0/9": tagged_vlans => [ Red, Green, Blue, Yellow ] } } interfaces { ge-0/0/9 { unit 0 { description "Puppet created eth-switch: ge-0/0/9"; family ethernet-switching { port-mode trunk; vlan { members [ Green Red Blue Yellow ]; } } } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 30. NETDEV_L2_INTERFACETRUNK PORT WITH NATIVE-VLAN-ID EXAMPLE node "ex4" { netdev_device { $hostname: } netdev_l2_interface { "ge-0/0/9": untagged_vlan => Red tagged_vlans => [ Green, Blue, Yellow ] } } interfaces { ge-0/0/9 { unit 0 { description "Puppet created eth-switch: ge-0/0/9"; family ethernet-switching { port-mode trunk; vlan { members [ Green Blue Yellow ]; } native-vlan-id Red; } } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 31. NETDEV_L2_INTERFACECONVERTING "TRUNK" TO "ACCESS" node "ex4" { netdev_device { $hostname: } netdev_l2_interface { "ge-0/0/9": untagged_vlan => Red # tagged_vlans => [ Green, Blue, Yellow ] } } notice: /Stage[main]//Node[ex4]/Netdev_l2_interface[ge-0/0/9]/vlan_tagging: vlan_tagging changed enable to disable notice: /Stage[main]//Node[ex4]/Netdev_l2_interface[ge-0/0/9]/tagged_vlans: tagged_vlans changed [Green,Blue,Yellow] to [] info: JUNOS: Committing 1 changes. notice: JUNOS: [edit interfaces ge-0/0/9 unit 0 family ethernet-switching] - port-mode trunk; + port-mode access; [edit interfaces ge-0/0/9 unit 0 family ethernet-switching vlan] - members [ Green Blue Yellow ]; + members Red; [edit interfaces ge-0/0/9 unit 0 family ethernet-switching] - native-vlan-id Red; Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 32. NETDEV_L2_INTERFACECONVERTING BACK ... node "ex4" { netdev_device { $hostname: } netdev_l2_interface { "ge-0/0/9": untagged_vlan => Red tagged_vlans => [ Green, Blue, Yellow ] } } notice: /Stage[main]//Node[ex4]/Netdev_l2_interface[ge-0/0/9]/vlan_tagging: vlan_tagging changed disable to enable notice: /Stage[main]//Node[ex4]/Netdev_l2_interface[ge-0/0/9]/tagged_vlans: tagged_vlans changed [] to [Green,Blue,Yellow] info: JUNOS: Committing 1 changes. notice: JUNOS: [edit interfaces ge-0/0/9 unit 0 family ethernet-switching] - port-mode access; + port-mode trunk; [edit interfaces ge-0/0/9 unit 0 family ethernet-switching vlan] - members Red; + members [ Green Blue Yellow ]; [edit interfaces ge-0/0/9 unit 0 family ethernet-switching] + native-vlan-id Red; Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 33. NETDEV_LAGCOMPLETE EXAMPLE node "ex4" { netdev_device { $hostname: } $ae1_ports = [ ge-0/0/10, ge-0/0/11, ge-0/0/12 ] netdev_lag { "ae1": links => $ae1_ports, lacp => active, minimum_links => 2 } netdev_l2_interface { $ae1_ports: ensure => absent } netdev_l2_interface { ae1: tagged_vlans => [ Black, Yellow ] } } This example is using a few Puppet mechanisms in combination: • declaring a variable for the interface list $ae1_ports • creating the netdev_lag port • ensuring that the ports in the lag dont have any VLANs on them using ensure => absent • assigning vlans to the LAG port as a netdev_l2_interface Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 34. NETDEV_LAGCONFIGURATION CREATED ... MORE ON NEXT SLIDE interfaces { ae1 { apply-macro "netdev_lag[:links]" { ge-0/0/10; ge-0/0/11; ge-0/0/12; } aggregated-ether-options { minimum-links 2; lacp { active; } } unit 0 { description "Puppet created eth-switch: ae1"; family ethernet-switching { port-mode trunk; vlan { members [ Yellow Black ]; } } } } The apply-macro is a config cookie that is used exclusively by the netdev provider code. This apply-macro may be removed in future releases, so do not make any use or assumptions about it. Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 35. NETDEV_LAGCONFIGURATION CREATED interfaces { ge-0/0/10 { ether-options { 802.3ad ae1; } } ge-0/0/11 { ether-options { 802.3ad ae1; } } ge-0/0/12 { ether-options { 802.3ad ae1; } } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 36. MX PRODUCT FAMILY Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 37. MX PRODUCT FAMILYTARGET AVAILABILITY FOR GA RELEASEMX240, MX480, MX960 – IntelMX5, MX10, MX40, MX80 – PowerPCFunctional behavior and “netdev” abstractions are thesame between MX and EX/QFXConfiguration differences between MX and EX/QFX:  Interfaces use VLAN tag-ID values and not VLAN names  bridge-domain stanza not vlan stanza  MX does not support access port with unassigned VLAN-ID  MX does not support trunk port with unassigned VLAN-ID list Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 38. NETDEV_VLAN node "nadal" { netdev_device { $hostname: } netdev_vlan { "Green": vlan_id => 101, description => This is a Green vlan } } bridge-domains { Green { description "This is a Green vlan"; domain-type bridge; vlan-id 101; } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 39. NETDEV_L2_INTERFACEACCESS PORT EXAMPLE node "nadal" { netdev_device { $hostname: } netdev_l2_interface { "ge-5/0/3": untagged_vlan => Green } } interfaces { ge-5/0/3 unit 0 { description "Puppet created netdev_l2_interface: ge-5/0/3"; family bridge { interface-mode access; vlan-id 101; } } } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 40. NETDEV_L2_INTERFACETRUNK PORT EXAMPLE node "nadal" { netdev_device { $hostname: } netdev_l2_interface { "ge-5/1/2": tagged_vlans => [ Red, Green, Blue, Yellow ] } } interfaces { ge-5/1/2 { flexible-vlan-tagging; encapsulation flexible-ethernet-services; unit 0 { description "Puppet created netdev_l2_interface: ge-5/1/2"; family bridge { interface-mode trunk; vlan-id-list [ 101 102 1003 57 ]; } } } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 41. NETDEV_L2_INTERFACETRUNK PORT WITH NATIVE-VLAN-ID EXAMPLE node "nadal" { netdev_device { $hostname: } netdev_l2_interface { "ge-5/3/9": untagged_vlan => Red tagged_vlans => [ Green, Blue, Yellow ] } } interfaces { ge-5/3/9 { flexible-vlan-tagging; native-vlan-id 57; encapsulation flexible-ethernet-services; unit 0 { description "Puppet created netdev_l2_interface: ge-5/3/9"; family bridge { interface-mode trunk; vlan-id-list [ 57 101 102 1003 ]; } } } } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 42. NETDEV_L2_INTERFACECONVERTING "TRUNK" TO "ACCESS" node "nadal" { netdev_device { $hostname: } netdev_l2_interface { "ge-5/3/9": untagged_vlan => Red # tagged_vlans => [ Green, Blue, Yellow ] } } notice: /Stage[main]//Node[nadal]/Netdev_l2_interface[ge-5/3/9]/vlan_tagging: vlan_tagging changed enable to disable notice: /Stage[main]//Node[nadal]/Netdev_l2_interface[ge-5/3/9]/tagged_vlans: tagged_vlans changed [Green,Blue,Yellow] to [] info: JUNOS: Committing 1 changes. notice: JUNOS: [edit interfaces ge-5/3/9] - flexible-vlan-tagging; - native-vlan-id 57; - encapsulation flexible-ethernet-services; - unit 0 { - description "Puppet created netdev_l2_interface: ge-5/3/9"; - family bridge { - interface-mode trunk; - vlan-id-list [ 57 101 102 1003 ]; - } - } + unit 0 { + description "Puppet created netdev_l2_interface: ge-5/3/9"; + family bridge { + interface-mode access; + vlan-id 57; + } + } Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 43. NETDEV_L2_INTERFACECONVERTING BACK ... node "nadal" { netdev_device { $hostname: } netdev_l2_interface { "ge-5/3/9": untagged_vlan => Red tagged_vlans => [ Green, Blue, Yellow ] } } notice: /Stage[main]//Node[nadal]/Netdev_l2_interface[ge-5/3/9]/vlan_tagging: vlan_tagging changed disable to enable notice: /Stage[main]//Node[nadal]/Netdev_l2_interface[ge-5/3/9]/tagged_vlans: tagged_vlans changed [] to [Red,Green,Blue,Yellow] info: JUNOS: Committing 1 changes. notice: JUNOS: [edit interfaces ge-5/3/9] + flexible-vlan-tagging; + native-vlan-id 57; + encapsulation flexible-ethernet-services; [edit interfaces ge-5/3/9 unit 0 family bridge] - interface-mode access; - vlan-id 57; + interface-mode trunk; + vlan-id-list [ 57 101 102 1003 ]; Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 44. INSTALLING PUPPET FOR JUNOS Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 45. PUPPET-MASTER gem install netconf puppet module install juniper/netdev_stdlib_junos Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 46. JUNOS 1. Download jpuppet-<platform>.tgz onto Junos device 2. configure 3. set system extensions providers juniper license-type juniper deployment-scope commercial 4. commit and-quit 5. request system software add <jpuppet- path> no-validate 6. show version JUNOS for Puppet [1.0R1.1 (Puppet 2.7.19)] Copyright © 2013 Juniper Networks, Inc. www.juniper.net
  • 47. #ProgramTheNetwork THANK YOU ! Copyright © 2013 Juniper Networks, Inc. www.juniper.net