From 5c2ab1008f8b78f2497a7d7f4712b7dd5794d976 Mon Sep 17 00:00:00 2001 From: skondvilkar Date: Tue, 11 Jun 2019 16:23:29 -0700 Subject: [PATCH 1/8] Stage 4 added --- images/salt/salt_configs/infrastructure_config.conf | 12 ++++++++++++ images/salt/salt_configs/infrastructure_data.sls | 6 ++++++ .../salt/salt_configs/provision_infrastructure.sls | 5 +++++ images/salt/salt_configs/top.sls | 3 ++- lessons/tools/lesson-30-salt/lesson.meta.yaml | 5 ++++- 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 images/salt/salt_configs/infrastructure_config.conf create mode 100644 images/salt/salt_configs/infrastructure_data.sls create mode 100644 images/salt/salt_configs/provision_infrastructure.sls diff --git a/images/salt/salt_configs/infrastructure_config.conf b/images/salt/salt_configs/infrastructure_config.conf new file mode 100644 index 00000000..ec1abaf4 --- /dev/null +++ b/images/salt/salt_configs/infrastructure_config.conf @@ -0,0 +1,12 @@ +system { + replace: name-server { +{%- for dns_server in pillar.dns_servers %} + {{ dns_server }}; +{%- endfor %} + } + replace: ntp { +{%- for ntp_server in pillar.ntp_servers %} + server {{ ntp_server }}; +{%- endfor %} + } +} diff --git a/images/salt/salt_configs/infrastructure_data.sls b/images/salt/salt_configs/infrastructure_data.sls new file mode 100644 index 00000000..545e81f2 --- /dev/null +++ b/images/salt/salt_configs/infrastructure_data.sls @@ -0,0 +1,6 @@ +ntp_servers: + - 192.168.0.250 + - 192.168.0.251 +dns_servers: + - 192.168.0.253 + - 192.168.0.254 diff --git a/images/salt/salt_configs/provision_infrastructure.sls b/images/salt/salt_configs/provision_infrastructure.sls new file mode 100644 index 00000000..fcf9aaf3 --- /dev/null +++ b/images/salt/salt_configs/provision_infrastructure.sls @@ -0,0 +1,5 @@ +Install the infrastructure services config: + junos.install_config: + - name: salt:///infrastructure_config.conf + - replace: True + - timeout: 100 diff --git a/images/salt/salt_configs/top.sls b/images/salt/salt_configs/top.sls index d907bf8e..41266fb3 100644 --- a/images/salt/salt_configs/top.sls +++ b/images/salt/salt_configs/top.sls @@ -1,3 +1,4 @@ base: 'vqfx1': - - vqfx1 \ No newline at end of file + - vqfx1 + - infrastructure_data diff --git a/lessons/tools/lesson-30-salt/lesson.meta.yaml b/lessons/tools/lesson-30-salt/lesson.meta.yaml index 79b6df41..4acc7ae8 100644 --- a/lessons/tools/lesson-30-salt/lesson.meta.yaml +++ b/lessons/tools/lesson-30-salt/lesson.meta.yaml @@ -17,7 +17,7 @@ tags: utilities: - name: salt1 - image: antidotelabs/salt + image: shwetak02/salt ports: [22] devices: @@ -38,3 +38,6 @@ stages: - id: 3 description: Executing Junos commands in Salt + + - id: 4 + description: Junos Configurations with Salt State Module From d25d30fd4fa5327dd3f94b00e64a210ce7cfc752 Mon Sep 17 00:00:00 2001 From: Shweta Kondvilkar Date: Wed, 12 Jun 2019 15:47:05 -0700 Subject: [PATCH 2/8] Added .md file and modified Dockerfile for stage 4 for SaltStack (#2) * WIP collections stuff Signed-off-by: Matt Oswalt * use correct branch in collection image URL Signed-off-by: Matt Oswalt * updating collection examples Signed-off-by: Matt Oswalt * Add cumulus Signed-off-by: Matt Oswalt * formatting changes Signed-off-by: Matt Oswalt * Added lessons to juniper curriculum Signed-off-by: Matt Oswalt * shorten fields Signed-off-by: Matt Oswalt * Add pp Signed-off-by: Matt Oswalt * Last-minute updates to changelog and collections meta Signed-off-by: Matt Oswalt * update paths with new lesson directory mount point Signed-off-by: Matt Oswalt * update changelog Signed-off-by: Matt Oswalt * Modified Dockerfile for Salt image and added guide.md for stage 4 --- CHANGELOG.md | 2 + collections/cumulus/collection.meta.yaml | 14 ++ collections/cumulus/cumulus.png | Bin 0 -> 23179 bytes collections/gdt/collection.meta.yaml | 14 ++ collections/gdt/gdt.jpg | Bin 0 -> 12302 bytes collections/hexabuild/collection.meta.yaml | 15 ++ collections/hexabuild/hexabuild.png | Bin 0 -> 18989 bytes collections/ignw/collection.meta.yaml | 15 ++ collections/ignw/ignw.png | Bin 0 -> 23177 bytes collections/juniper/collection.meta.yaml | 20 +++ collections/juniper/juniper.png | Bin 0 -> 7137 bytes collections/myriad/collection.meta.yaml | 24 +++ collections/myriad/myriad.jpeg | Bin 0 -> 13152 bytes .../packetpushers/collection.meta.yaml | 15 ++ collections/packetpushers/pp.jpg | Bin 0 -> 24875 bytes collections/redhat/collection.meta.yaml | 19 ++ collections/redhat/redhat.jpg | Bin 0 -> 62081 bytes collections/synercomm/collection.meta.yaml | 15 ++ collections/synercomm/synercomm.png | Bin 0 -> 3784 bytes images/notebook/base-jupyter-config.py | 2 +- images/salt/Dockerfile | 12 +- images/salt/salt_configs/top.sls | 3 +- .../lesson-14-yaml/stage1/guide.md | 2 +- .../lesson-14-yaml/stage2/guide.md | 2 +- .../lesson-16-jinja/stage4/guide.md | 2 +- .../lesson-16-jinja/stage5/guide.md | 2 +- .../tools/lesson-12-jsnapy/lesson.meta.yaml | 1 + .../tools/lesson-12-jsnapy/stage1/guide.md | 2 +- .../tools/lesson-12-jsnapy/stage2/guide.md | 2 +- .../lesson-15-stackstorm/stage2/guide.md | 4 +- .../lesson-15-stackstorm/stage5/guide.md | 6 +- .../stage5/replace_interface_config.yaml | 2 +- lessons/tools/lesson-24-pyez/lesson.meta.yaml | 1 + .../tools/lesson-25-junosjet/lesson.meta.yaml | 1 + .../tools/lesson-25-junosjet/stage3/guide.md | 2 +- .../tools/lesson-25-junosjet/stage4/guide.md | 2 +- .../tools/lesson-25-junosjet/stage5/guide.md | 2 +- .../lesson-26-openconfig/stage2/guide.md | 2 +- .../lesson-26-openconfig/stage3/guide.md | 2 +- lessons/tools/lesson-29-robot/stage1/guide.md | 6 +- lessons/tools/lesson-29-robot/stage2/guide.md | 6 +- lessons/tools/lesson-29-robot/stage3/guide.md | 10 +- lessons/tools/lesson-30-salt/lesson.meta.yaml | 5 +- .../tools/lesson-30-salt/stage4/configs/mess | 0 .../lesson-30-salt/stage4/configs/vqfx1.txt | 165 ++++++++++++++++++ lessons/tools/lesson-30-salt/stage4/guide.md | 66 +++++++ .../tools/lesson-31-terraform/stage1/guide.md | 2 +- .../tools/lesson-31-terraform/stage2/guide.md | 2 +- .../tools/lesson-31-terraform/stage3/guide.md | 2 +- .../tools/lesson-31-terraform/stage4/guide.md | 2 +- .../tools/lesson-31-terraform/stage5/guide.md | 2 +- .../lesson-21-tshoot-ipphone/stage1/guide.md | 2 +- .../lesson-32-stigcompliance/stage1/guide.md | 2 +- .../lesson-32-stigcompliance/stage2/guide.md | 2 +- .../stage2/guide.md | 2 +- .../lesson-34-configbackup/stage2/guide.md | 2 +- .../stage1/guide.md | 4 +- .../stage2/guide.md | 4 +- .../stage3/guide.md | 4 +- .../stage4/guide.md | 4 +- 60 files changed, 451 insertions(+), 50 deletions(-) create mode 100644 collections/cumulus/collection.meta.yaml create mode 100644 collections/cumulus/cumulus.png create mode 100644 collections/gdt/collection.meta.yaml create mode 100644 collections/gdt/gdt.jpg create mode 100644 collections/hexabuild/collection.meta.yaml create mode 100644 collections/hexabuild/hexabuild.png create mode 100644 collections/ignw/collection.meta.yaml create mode 100644 collections/ignw/ignw.png create mode 100644 collections/juniper/collection.meta.yaml create mode 100644 collections/juniper/juniper.png create mode 100644 collections/myriad/collection.meta.yaml create mode 100644 collections/myriad/myriad.jpeg create mode 100644 collections/packetpushers/collection.meta.yaml create mode 100644 collections/packetpushers/pp.jpg create mode 100644 collections/redhat/collection.meta.yaml create mode 100644 collections/redhat/redhat.jpg create mode 100644 collections/synercomm/collection.meta.yaml create mode 100644 collections/synercomm/synercomm.png create mode 100644 lessons/tools/lesson-30-salt/stage4/configs/mess create mode 100644 lessons/tools/lesson-30-salt/stage4/configs/vqfx1.txt create mode 100644 lessons/tools/lesson-30-salt/stage4/guide.md diff --git a/CHANGELOG.md b/CHANGELOG.md index b05f44d2..15baf23f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ - Replaced all individual snippet indices with 'this' keyword [#221](https://github.com/nre-learning/nrelabs-curriculum/pull/221) - Rename syringe.yaml to lesson.meta.yaml, and move lessons into descriptive subdirs [#222](https://github.com/nre-learning/nrelabs-curriculum/pull/222) +- Prepare curriculum for collections [#224](https://github.com/nre-learning/nrelabs-curriculum/pull/224) +- Update all paths with new lesson directory mount point [#227](https://github.com/nre-learning/nrelabs-curriculum/pull/227) ## v0.3.2 - April 19, 2019 diff --git a/collections/cumulus/collection.meta.yaml b/collections/cumulus/collection.meta.yaml new file mode 100644 index 00000000..7805afd0 --- /dev/null +++ b/collections/cumulus/collection.meta.yaml @@ -0,0 +1,14 @@ +--- +id: 8 +title: Cumulus Networks +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/cumulus/cumulus.png +website: https://cumulusnetworks.com + +# Why should users view your collection? +briefDescription: Cumulus Networks is transforming the networking industry by building networking products purely with Linux. + +# Why should users continue and view your lessons? +longDescription: Cumulus Networks builds networking products purely on Linux, and have a rich history of supporting network automation. This collection houses their contributions to the NRE Labs curriculum. + +type: vendor +tier: ptr diff --git a/collections/cumulus/cumulus.png b/collections/cumulus/cumulus.png new file mode 100644 index 0000000000000000000000000000000000000000..09c4bf93021e876761732ea64a412a92cb991ae1 GIT binary patch literal 23179 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 literal 0 HcmV?d00001 diff --git a/collections/gdt/collection.meta.yaml b/collections/gdt/collection.meta.yaml new file mode 100644 index 00000000..518e77d6 --- /dev/null +++ b/collections/gdt/collection.meta.yaml @@ -0,0 +1,14 @@ +--- +id: 3 +title: General Datatech (GDT) +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/gdt/gdt.jpg +website: https://www.gdt.com/ + +# Why should users view your collection? +briefDescription: GDT - Design, Build, Deliver, and Manage IT. + +# Why should users continue and view your lessons? +longDescription: General Datatech (GDT) is an award-winning global IT integrator and solutions provider that aligns itself with industry leaders, including HPE, Cisco, Dell EMC, Juniper Networks, F5 Networks, Pure Networks, VMware, Citrix, AWS, Microsoft Azure, and dozens of others. Our solutions architects and engineers design, build, deliver and manage IT solutions and services for customers of all sizes and from a wide variety of industries. + +type: consultancy +tier: ptr diff --git a/collections/gdt/gdt.jpg b/collections/gdt/gdt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5536610cbeafab9cb11d231b529ad8b955e83235 GIT binary patch literal 12302 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 literal 0 HcmV?d00001 diff --git a/collections/hexabuild/collection.meta.yaml b/collections/hexabuild/collection.meta.yaml new file mode 100644 index 00000000..3d129a4f --- /dev/null +++ b/collections/hexabuild/collection.meta.yaml @@ -0,0 +1,15 @@ +--- +id: 4 +title: HexaBuild +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/hexabuild/hexabuild.png +website: https://hexabuild.io/ +contactEmail: "info@hexabuild.io" + +# Why should users view your collection? +briefDescription: HexaBuild is an IT professional services consultancy comprised of industry-recognized IT subject matter experts and thought leaders. Our core team has a combined 60+ years of experience, multiple expert-level vendor certifications, and several publications by recognized technology presses. + +# Why should users continue and view your lessons? +longDescription: HexaBuild is an IT professional services consultancy comprised of industry-recognized IT subject matter experts and thought leaders. Our core team has a combined 60+ years of experience, multiple expert-level vendor certifications, and several publications by recognized technology presses. + +type: consultancy +tier: ptr diff --git a/collections/hexabuild/hexabuild.png b/collections/hexabuild/hexabuild.png new file mode 100644 index 0000000000000000000000000000000000000000..35c487d052f905a9f608e5b64c5db758538610bb GIT binary patch literal 18989 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 z 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 literal 0 HcmV?d00001 diff --git a/collections/ignw/collection.meta.yaml b/collections/ignw/collection.meta.yaml new file mode 100644 index 00000000..91350b02 --- /dev/null +++ b/collections/ignw/collection.meta.yaml @@ -0,0 +1,15 @@ +--- +id: 5 +title: IGNW +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/ignw/ignw.png +website: https://www.ignw.io/ +contactEmail: "info@infogroupnw.com" + +# Why should users view your collection? +briefDescription: IGNW helps you implement contemporary cutting edge technology that give your business an unfair advantage. + +# Why should users continue and view your lessons? +longDescription: IGNW helps you implement contemporary cutting edge technology that give your business an unfair advantage. IGNW has helped some of the largest clients in the world with their DevOps initiatives, and we can help you on your DevOps journey every step of the way- quickly, effectively and correctly, with no million dollar binders or fancy powerpoint slides required. Just solid action and great results. + +type: consultancy +tier: ptr diff --git a/collections/ignw/ignw.png b/collections/ignw/ignw.png new file mode 100644 index 0000000000000000000000000000000000000000..752e07f8013a61ca6aa8b6d84454973310f382c7 GIT binary patch literal 23177 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 literal 0 HcmV?d00001 diff --git a/collections/juniper/collection.meta.yaml b/collections/juniper/collection.meta.yaml new file mode 100644 index 00000000..51aadfb8 --- /dev/null +++ b/collections/juniper/collection.meta.yaml @@ -0,0 +1,20 @@ +--- +id: 1 +title: Juniper Networks +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/juniper/juniper.png +website: https://juniper.net +contactEmail: "support@juniper.net" + +# Why should users view your collection? +briefDescription: Juniper exists to solve the world’s most difficult problems in networking. Today, complexity is at the heart of those problems. Simple is our obsession. And simple always starts with engineering. This collection contains curriculum resources contributed by Juniper, or lessons that deal mostly in Juniper-specific technology. + +# Why should users continue and view your lessons? +longDescription: | + Juniper is responsible for starting the Antidote project and offering the NRE Labs site free of charge to all who wish to learn automation with as few barriers as possible. The original spirit of NRE Labs is to focus on bringing network engineering skillsets into the cloud era, by focusing on individual success, even if it means a multi-vendor approach. + + There are a number of tools and projects - even open source, that while useful, are mostly usable only within a Juniper context. For instance, the JSNAPy project is an open source tool that allows engineers to write unit tests for their Junos network devices. While this tool is free and open source, it's also Juniper-specific, and we want to be up-front about that. + + To remain loyal to the spirit of NRE Labs, we created this collection so that the learner can be made aware of content that may be either mostly or entirely useful within a Juniper context, on Juniper devices and software. + +type: vendor +tier: prod diff --git a/collections/juniper/juniper.png b/collections/juniper/juniper.png new file mode 100644 index 0000000000000000000000000000000000000000..ff1c638a818c2aa825fb39cef6e52146dee3d0a3 GIT binary patch literal 7137 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 literal 0 HcmV?d00001 diff --git a/collections/myriad/collection.meta.yaml b/collections/myriad/collection.meta.yaml new file mode 100644 index 00000000..38361b38 --- /dev/null +++ b/collections/myriad/collection.meta.yaml @@ -0,0 +1,24 @@ +--- +id: 6 +title: Myriad360 +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/myriad/myriad.jpeg +website: https://myriad360.com +contactEmail: "hello@myriad360.com" + +# Why should users view your collection? +briefDescription: | + + Myriad360 delivers industry-leading technology solutions to transform and secure our clients’ IT + strategy, infrastructure, and business. + +# Why should users continue and view your lessons? +longDescription: | + Myriad360 delivers industry-leading technology solutions to transform and secure our clients’ IT + strategy, infrastructure, and business. + + With top IT security manufacturers and in-house engineering, global logistics and project management + expertise, Myriad360 handles it all—from security to mobility, networking to cloud, and hardware + solutions to managed services. + +type: consultancy +tier: ptr diff --git a/collections/myriad/myriad.jpeg b/collections/myriad/myriad.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..0f3beb5f6b8bee3d2137bfc0ca584ff3e77f212c GIT binary patch literal 13152 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ࢌ~5R!5L|rOj|GmWPXqA;iaCEA9McE>h5Yw z+mf%1_ssiwc)*e#uVw-L$;Ec?zJ%|TMZ0jk6|ZH08Y$|m03LNL0=71U}_E!4dSzF5bDOJo@v3yjRWTnS&9Em79 zYnF*AsWZ;N)N?N~)}Nd-)vUe~L7^#X#;8vy)+`3*2U`m&SOwrWRy zRC~y#7<`zHxS3j1Y8j;uLzx8)R^CWknHThmP8h+b^!3=<5OqVAXm!rLN23Tt^taQFMZp)FN%? z$ADD{aj?I~alOVDgEWo^WwNA{4ToN>ou=$}1a1>LA+M47ImJPTF1GoQ-w&1&cbO<| z1{z^;T3%$277rtH?#;$Ar%n>(pn&7XvGcDiSnE(-#E<5cG}T zQaTk#_&Uzc=%66l4@J(f#cgf(XkGm??qh;$?;mj=n$?{|0Z7`$dBN%DVOoyMvD8B(@2iDQb?amTPezYz5K49tmX`Tzf65__WVzuX#|+UP$`UCN1O{%6Wv^Z-cQg22b_U6TD5cFk`N@53o~P zq}_mc;MLqO*PO(+aTp1T8AKdV9YrS$FI1@oAjt;p)az*^um}3RN-{}3*H2&XYQche zH#BecLdq1oH$b|+$z(aCFqN-ynU?hppj>A3k~5?ZMognJFXYO%>trZ5Xu_|gT6A{O>y;9=`rFWfzL$}<_aO)O55`mx+KKzT@R zN;}JWTW64nV)oE{F_D6J&8!m_ZzqCk5edWS;n<;aF%H*g^poU+xm9^BJIkq?8{9pe zf3*3|*WQ9p9bdDUCxZNXM7~?aVJ`5ktco&~j)J*T1CXX1XXD`FF2q)=JdQ|wMg+<< zeYw3hh^fX>twYQL|khM6p^R^VgDI} z*WVMgB7lt)H03QlB2u$kU{-vAxaOAO1)p1L*p8$4>tGzh?wsvdxBCXbzTuqJQ}>(@ z&gpr~ZCi8uy||sS2vahXr4(8cK)UDpz?dMLnDAeh{J#>0`quGoPt+=Nf2cxE2??jC zP@x+d5S$wnppsI*OLuG>!wYMvOe>p_ef%vyaL!H&PUUSi@_4EBn*ypzxTLXhhZ>*4 z%y`g}RhdyAOx&f2==X#;`Rtv;fE}PT9f6^id$-Enps0YD)dTeb6id(Ccou?oiAv_W zC9**&UWx6U#`$INK$|IS9l670*dXGOL>XLNL z{R(9RAca}$LG^rE<44V$0d>ikK2dX1b2HSv>d02^@~2cOI`WxJ+`aG9MyaAuPV`_|`iueOV9_{ty z1-c@kw>l}rmWcWdKy~>B7=HuI8v5=+e*6)9=AAY5Gg~wNvg{8E^tk&Nl@473@n{s1JK|)TGU3iH(l|f@msS`N+p8^F zA>ZF4OVT1mU5^#Gf8MgXMOlp&EDSsQp_4^5Y|GYethB7<#9)bu zvjO0QtN}C!07U<&IA754Q|G^r`2UX=(+6l4@^77JD6rU{@91pQ&8-kDrMDim6?5ms z3x_0M>9I3TiNk5)lsBJaK5nU#_RO(3{iTW)ywR@i0u&hhsC(D+O0|L*?;yci86FHk zSt_aBsi=>M>8q|M5l=vgQw;dag+#JT9Nsq_$8?{|bxFq`0m6q7vLFNuSuagOoWw`a WVjbvix@5QhkH-Cf^nvMZ@qYksma{GZ literal 0 HcmV?d00001 diff --git a/collections/packetpushers/collection.meta.yaml b/collections/packetpushers/collection.meta.yaml new file mode 100644 index 00000000..d265ef34 --- /dev/null +++ b/collections/packetpushers/collection.meta.yaml @@ -0,0 +1,15 @@ +--- +id: 9 +title: Packet Pushers +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/packetpushers/pp.jpg +website: https://packetpushers.net/ +contactEmail: "packetpushers@gmail.com" + +# Why should users view your collection? +briefDescription: | + A podcast about networking & infrastructure engineering by IT architects. Deeply technical & unabashedly nerdy. +# Why should users continue and view your lessons? +longDescription: | + The Packet Pushers are awesome-sauce, full stop. +type: community +tier: ptr diff --git a/collections/packetpushers/pp.jpg b/collections/packetpushers/pp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..915099a4e1dfeadd6f0749c9c25f5941d91f89d0 GIT binary patch literal 24875 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 Bu8jZy literal 0 HcmV?d00001 diff --git a/collections/redhat/collection.meta.yaml b/collections/redhat/collection.meta.yaml new file mode 100644 index 00000000..f362a807 --- /dev/null +++ b/collections/redhat/collection.meta.yaml @@ -0,0 +1,19 @@ +--- +id: 7 +title: Red Hat +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/redhat/redhat.jpg +website: https://www.redhat.com +contactEmail: "customerservice@redhat.com" + +# Why should users view your collection? +briefDescription: | + Red Hat is the world’s leading provider of enterprise open source solutions, using a community-powered approach to deliver high-performing Linux, cloud, container, and Kubernetes technologies. + +# Why should users continue and view your lessons? +longDescription: | + Red Hat is the world’s leading provider of enterprise open source solutions, using a community-powered approach to deliver high-performing Linux, cloud, container, and Kubernetes technologies. + + We help you standardize across environments, develop cloud-native applications, and integrate, automate, secure, and manage complex environments with award-winning support, training, and consulting services. + +type: vendor +tier: ptr diff --git a/collections/redhat/redhat.jpg b/collections/redhat/redhat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..22c85c2f4644efd90c38330076e6c7b0f96009da GIT binary patch literal 62081 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

p)mvKtSsHtK#AiyNud-r2u2t>iRnxA1 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 Q{{<(uM4z+2|B3bf3+!M|djJ3c literal 0 HcmV?d00001 diff --git a/collections/synercomm/collection.meta.yaml b/collections/synercomm/collection.meta.yaml new file mode 100644 index 00000000..1d92f608 --- /dev/null +++ b/collections/synercomm/collection.meta.yaml @@ -0,0 +1,15 @@ +--- +id: 2 +title: Synercomm +image: https://raw.githubusercontent.com/nre-learning/nrelabs-curriculum/master/collections/synercomm/synercomm.png +website: https://www.synercomm.com/ +contactEmail: "customercare@synercomm.com" + +# Why should users view your collection? +briefDescription: SynerComm’s goal is to be a Trusted Advisor and Preferred IT Solutions Provider by assisting our clients to achieve a goal, solve a problem, or satisfy a need. + +# Why should users continue and view your lessons? +longDescription: | + SynerComm’s goal is to be a Trusted Advisor and Preferred IT Solutions Provider by assisting our clients to achieve a goal, solve a problem, or satisfy a need. +type: consultancy +tier: ptr diff --git a/collections/synercomm/synercomm.png b/collections/synercomm/synercomm.png new file mode 100644 index 0000000000000000000000000000000000000000..af4a4e4e69698c9ef96ea890cb08a2ea8673a9bd GIT binary patch literal 3784 zcmd5<`8(9@8Xs?7ig0+7nz3&wOZ75D7#X|9M8-0i>EldZDVOZF{dB(fzU z+h~w&#>g^R%E*>249@qQKj8d)o*$m&y6)?G?&rQg_viE6iFeEldAPt_AP|Vh*htR; z1Y$D*_O7Qnfcfai7zr%wI9+4Q)4(8{c1r-x7X$Te0`K~J1co?c-9h&;{(kO?I9IH@ zI|k?JAGm(1T^j`AMH}ngvJA~#ogP3!_SrZ$NN=p&6Y~V|R>q>< z0ZJFPGB5QDvt2D@z9QaDTXhd9tz80a68pVhG^S-br8o~HBh-o|e>t=e4| zj~-ZnF(9iK=ewJYL=$5gbbVq@-q`W5kJ9{+s;~gP`u3LR zkFjU~p6#7@GBeQ7lu^>X)E>NEJ02^JALof{2?!xn2&bZVaSsWN86Cu>ZwQ5p<539z zA`VDOU(-pFY2}mT(s#A_1KI7nMrQA|1U^o07J3LhWv6Yc7R>Qwp7;&71HE5-CE*Dyf~7qB0>W_hJKH#pfK>H^DFND|vI)}Vd7NAx*x9r+dSge({h*^c=9 z-lpq2@_ZmMSVhu0hM5mLAqVC!zI?;|`~q{FHKWE|6{@oJb)#YNk&xJJ$BCb2G_u=f z+STt&uFpW$){-6MV5Iqpcfp&>^Xr8RNpWN*mcDsR;it^T9@&egdE~jOW{qgImz9Nl znM!$?$XB>MYj8ba#?oj)*F>L@M=a3D<8$mh9=;h@MFiinLIIcxwh3OSNwIU4T~obQM>(Vt#yo!y4%To#P2 z*QnOONGnj{q(SFe4yz*CFWlgh2`sI_zA)bomQoHDi^mX0*CrJvlh!3?QAZC~mRFWL zj+~M$MO3`9KIR{dead;<<6X(4^^fhrGRqaA_jZqp^Al&MrXjxK?ZwWX$$wBjDcaz}0d@^9kiR-gYu<#O7X=^4 zs1}V~dieKG0JOBao2agu7ZPVc0ZngU+w!5sC-uklOXpfREqlScEzEmEC38lXypJCm zYOwY8{QWmI!s)?RPsG0c{Z=N;=>+Q6%E^N_!pp<^spw@veeD}qm2a$K zc%zufZ$(r1i$RWds>5hUB)=8A42aPByrUtK{PB5$@S|DzGhK#Nal6wNMa~Vo+m5_I z!ByVJs|$Q0E?HIPRYB+KGy7fK!^_ogy;yDMS^s)J>vKp|eD(8a|E2Z5X)6o_tn%xlvSZ!(~ zvS;m+A!^8HpyZzX!f;s$gGRti&LJCWef5q0(8;Oew*K~td3-2DjNM&Eg7NF~Bkip8 zS6dV_!qxu%u0GCg+z(!nXG|@H2fh~|%`k+=yz%ST$q(b)pN!MBARhI(w-qXxBVpNR+*Syk39;=ZbRdfqo(nc$F~1BmLw2-Q5xKNm}DgJ<(6 zjJ7@}E%|Y)K};DF0Zm20)62MGAYD-8UH^{$+d{V};Ti8-cxyh5Vpl7Eto9VbiTy*7 z10?VQDD`0NHG0Ud#y0PCc`?`+2N$^U&yr-dnG`i_r#zZhtxgD|=8h>1S@JI%Z1nDI zp1_BKbR??mS}_B@9dC|)WuESPHWu6yI6CECZ0kI#(8uCXn&9ze8>+w&4DmeoEa`cVw zb{>APNO+@jvA)sm;=HXV{uKR`OsQ;jCXTCV=h3@GHBnu=WJ zu;BPT-VMA;uU~iW(k}xULf5mEsYa*Dyw#aLEkIFnTljZX-5W0>9#k)78e+d4)i_( zfC|bT;F%w4XUwMjUX1y?MeF-KEJhvTy%pKzI0juqzDd#Qyx>x_!3BG`+JvXUT~~n^6qz}iWwB@q4U<#b~ zw~C>5%G#!%T-|3Lu3=AConu zXE-!v?_8oy)p;3J^;oR|G3!*`yGUo!JNjjoA10p+0D>= zkFBZE9w~Our?;*eRUr{DNV~PJ6B5KmYAJ5Fn(ciSwBw)37dQ8=ssH^GT1D$V4Ez*D zvfDv0{%`lm9!|P+e&LjfWbb*JHu_xMaE`z|91oP#B*8#lK z5PhfNaGZ5HSx=8twWQLPm@s(l|D`4RpY7V*$=KqsG9N^d6KF+2#`Run this snippet diff --git a/lessons/fundamentals/lesson-14-yaml/stage2/guide.md b/lessons/fundamentals/lesson-14-yaml/stage2/guide.md index 78035f6d..720f146f 100644 --- a/lessons/fundamentals/lesson-14-yaml/stage2/guide.md +++ b/lessons/fundamentals/lesson-14-yaml/stage2/guide.md @@ -8,7 +8,7 @@ Often, being able to represent an ordered list of values isn't enough. Sometimes A better option for this problem is a Dictionary. They're similar to lists, but instead of storing an ordered sequence of values, they represent an unordered sequence of key/value pairs: ``` -cd /antidote/lessons/lesson-14/stage2/ +cd /antidote/stage2/ cat basicdict.yaml ``` diff --git a/lessons/fundamentals/lesson-16-jinja/stage4/guide.md b/lessons/fundamentals/lesson-16-jinja/stage4/guide.md index e67aeca9..7dfee0fa 100644 --- a/lessons/fundamentals/lesson-16-jinja/stage4/guide.md +++ b/lessons/fundamentals/lesson-16-jinja/stage4/guide.md @@ -18,7 +18,7 @@ We cover YAML in more detail in Run this snippet diff --git a/lessons/fundamentals/lesson-16-jinja/stage5/guide.md b/lessons/fundamentals/lesson-16-jinja/stage5/guide.md index 30827649..d003be0f 100644 --- a/lessons/fundamentals/lesson-16-jinja/stage5/guide.md +++ b/lessons/fundamentals/lesson-16-jinja/stage5/guide.md @@ -11,7 +11,7 @@ In the previous section, we loaded data from a YAML file and used that data in o We have already created a sample template file called `static_route.j2` in the sub-directory `dir1` for our use. Run the below snippet to view the template file: ``` -cd /antidote/lessons/lesson-16/stage5/ +cd /antidote/stage5/ cat dir1/static_route.j2 ``` diff --git a/lessons/tools/lesson-12-jsnapy/lesson.meta.yaml b/lessons/tools/lesson-12-jsnapy/lesson.meta.yaml index 357f0fff..0cc1233a 100644 --- a/lessons/tools/lesson-12-jsnapy/lesson.meta.yaml +++ b/lessons/tools/lesson-12-jsnapy/lesson.meta.yaml @@ -14,6 +14,7 @@ tags: - test - unit test - testing +collection: 1 utilities: - name: linux1 diff --git a/lessons/tools/lesson-12-jsnapy/stage1/guide.md b/lessons/tools/lesson-12-jsnapy/stage1/guide.md index 4e01de9b..4664886a 100644 --- a/lessons/tools/lesson-12-jsnapy/stage1/guide.md +++ b/lessons/tools/lesson-12-jsnapy/stage1/guide.md @@ -17,7 +17,7 @@ Fortunately, you know that your team uses JSNAPy to describe what "normal" looks We can run the below commands on our Ubuntu host to see the JSNAPy configuration file: ``` -cd /antidote/lessons/lesson-12/ +cd /antidote/ cat jsnapy_config.yaml ``` diff --git a/lessons/tools/lesson-12-jsnapy/stage2/guide.md b/lessons/tools/lesson-12-jsnapy/stage2/guide.md index 7cd2d926..263f3ca7 100644 --- a/lessons/tools/lesson-12-jsnapy/stage2/guide.md +++ b/lessons/tools/lesson-12-jsnapy/stage2/guide.md @@ -4,7 +4,7 @@ In Part 1, we noticed that the router configuration didn't quite match up with what our [JSNAPy](https://github.com/Juniper/jsnapy) tests were stating should be true. ``` -cd /antidote/lessons/lesson-12/ +cd /antidote/ cat jsnapy_tests.yaml ``` diff --git a/lessons/tools/lesson-15-stackstorm/stage2/guide.md b/lessons/tools/lesson-15-stackstorm/stage2/guide.md index 0453d24a..5f708411 100644 --- a/lessons/tools/lesson-15-stackstorm/stage2/guide.md +++ b/lessons/tools/lesson-15-stackstorm/stage2/guide.md @@ -121,14 +121,14 @@ Finally, it would be really great if we could actually push a config change with As part of this lesson, we've included a configuration snippet that will replace only the relevant configuration with the corrected `peer-as` attribute: ``` -cat /antidote/lessons/lesson-15/stage2/vqfx1-config-patch.txt +cat /antidote/stage2/vqfx1-config-patch.txt ``` The `loadconfig` action can accept this path as a parameter, and will perform a merge between this configuration, and the existing configuration: ``` -st2 run napalm.loadconfig hostname=vqfx1 config_file="/antidote/lessons/lesson-15/stage2/vqfx1-config-patch.txt" +st2 run napalm.loadconfig hostname=vqfx1 config_file="/antidote/stage2/vqfx1-config-patch.txt" ``` diff --git a/lessons/tools/lesson-15-stackstorm/stage5/guide.md b/lessons/tools/lesson-15-stackstorm/stage5/guide.md index fd470424..f3186941 100644 --- a/lessons/tools/lesson-15-stackstorm/stage5/guide.md +++ b/lessons/tools/lesson-15-stackstorm/stage5/guide.md @@ -13,7 +13,7 @@ With Rules, we are declaring to StackStorm what events we care about (in the for Our finished rule file can be seen here - continue for a walkthrough of each of the components of this file: ``` -cat /antidote/lessons/lesson-15/stage5/replace_interface_config.yaml +cat /antidote/stage5/replace_interface_config.yaml ``` @@ -48,7 +48,7 @@ action: ref: "napalm.loadconfig" parameters: hostname: "{{ trigger.device }}" - config_file: "/antidote/lessons/lesson-15/stage5/interface-up-config.xml" + config_file: "/antidote/stage5/interface-up-config.xml" ``` Note that we're making use of the `device` field from the trigger payload in a Jinja snippet, in order to dynamically populate `napalm.loadconfig`'s `hostname` parameter. The [StackStorm docs](https://docs.stackstorm.com/reference/jinja.html) cover the usage of Jinja in Stackstorm in greater detail. @@ -56,7 +56,7 @@ Note that we're making use of the `device` field from the trigger payload in a J Normally, rules would be located in the `rules/` directory of a pack, but we can also create a rule directly from the command line using our YAML file. ``` -st2 rule create /antidote/lessons/lesson-15/stage5/replace_interface_config.yaml +st2 rule create /antidote/stage5/replace_interface_config.yaml ``` diff --git a/lessons/tools/lesson-15-stackstorm/stage5/replace_interface_config.yaml b/lessons/tools/lesson-15-stackstorm/stage5/replace_interface_config.yaml index 246eef9c..29394daf 100644 --- a/lessons/tools/lesson-15-stackstorm/stage5/replace_interface_config.yaml +++ b/lessons/tools/lesson-15-stackstorm/stage5/replace_interface_config.yaml @@ -13,4 +13,4 @@ action: ref: "napalm.loadconfig" parameters: hostname: "{{ trigger.device }}" - config_file: "/antidote/lessons/lesson-15/stage5/interface-up-config.xml" + config_file: "/antidote/stage5/interface-up-config.xml" diff --git a/lessons/tools/lesson-24-pyez/lesson.meta.yaml b/lessons/tools/lesson-24-pyez/lesson.meta.yaml index ebffaac0..7836a85d 100644 --- a/lessons/tools/lesson-24-pyez/lesson.meta.yaml +++ b/lessons/tools/lesson-24-pyez/lesson.meta.yaml @@ -14,6 +14,7 @@ tags: - python - junos - library +collection: 1 utilities: - name: linux diff --git a/lessons/tools/lesson-25-junosjet/lesson.meta.yaml b/lessons/tools/lesson-25-junosjet/lesson.meta.yaml index 3adcd681..bf9351f0 100644 --- a/lessons/tools/lesson-25-junosjet/lesson.meta.yaml +++ b/lessons/tools/lesson-25-junosjet/lesson.meta.yaml @@ -5,6 +5,7 @@ category: tools description: "In this lesson, we'll explore the Juniper Extension Toolkit (JET), which is a powerful set of tools for building applications that work with Junos." tier: ptr slug: jet +collection: 1 utilities: - name: linux diff --git a/lessons/tools/lesson-25-junosjet/stage3/guide.md b/lessons/tools/lesson-25-junosjet/stage3/guide.md index 42a3063f..cfaabccd 100644 --- a/lessons/tools/lesson-25-junosjet/stage3/guide.md +++ b/lessons/tools/lesson-25-junosjet/stage3/guide.md @@ -25,7 +25,7 @@ It's time to start the lab! To save time, the IDL file is pre-downloaded already. First we need to unarchive it: ``` -cd /antidote/lessons/lesson-25 +cd /antidote tar -xzf jet-idl-17.4R1.16.tar.gz ``` diff --git a/lessons/tools/lesson-25-junosjet/stage4/guide.md b/lessons/tools/lesson-25-junosjet/stage4/guide.md index a9ecd958..33004212 100644 --- a/lessons/tools/lesson-25-junosjet/stage4/guide.md +++ b/lessons/tools/lesson-25-junosjet/stage4/guide.md @@ -13,7 +13,7 @@ In this stage, we demonstrate additional JET API capability by using JET firewal Firstly, we repeat what we have done in previous stage - compile the IDL package, go to Python interactive prompt, import the JET GPRC module, and then login to the vQFX. ``` -cd /antidote/lessons/lesson-25 +cd /antidote tar -xzf jet-idl-17.4R1.16.tar.gz python -m grpc_tools.protoc -I./proto --python_out=. --grpc_python_out=. ./proto/*.proto diff --git a/lessons/tools/lesson-25-junosjet/stage5/guide.md b/lessons/tools/lesson-25-junosjet/stage5/guide.md index 6141f1e3..9d680396 100644 --- a/lessons/tools/lesson-25-junosjet/stage5/guide.md +++ b/lessons/tools/lesson-25-junosjet/stage5/guide.md @@ -14,7 +14,7 @@ The objective of this lesson is to use JET notification services to listen for a To save time, we have already put the JET firewall API code we created in stage 4 in a file `add_firewall_filter.py`. Let's take a look on the code: ``` -cd /antidote/lessons/lesson-25 +cd /antidote cat add_firewall_filter.py ``` diff --git a/lessons/tools/lesson-26-openconfig/stage2/guide.md b/lessons/tools/lesson-26-openconfig/stage2/guide.md index f0b0e888..8daa3dc4 100644 --- a/lessons/tools/lesson-26-openconfig/stage2/guide.md +++ b/lessons/tools/lesson-26-openconfig/stage2/guide.md @@ -41,7 +41,7 @@ As you can see the fundamental data values are the same across OpenConfig and Ju Now, let's try to configure a new BGP neighbor with Openconfig using Netconf. First, take a look on the openconfig-bgp configuration we're going to apply. ``` -cd /antidote/lessons/lesson-26 +cd /antidote cat openconfig-bgp.conf ``` diff --git a/lessons/tools/lesson-26-openconfig/stage3/guide.md b/lessons/tools/lesson-26-openconfig/stage3/guide.md index 058ed410..a5eba690 100644 --- a/lessons/tools/lesson-26-openconfig/stage3/guide.md +++ b/lessons/tools/lesson-26-openconfig/stage3/guide.md @@ -28,7 +28,7 @@ It groups all the L3VPN related parameters (e.g., interfaces, VLAN Id, IP addres Let's take a look on the YANG file first. ``` -cd /antidote/lessons/lesson-26 +cd /antidote cat vpn-services.yang ``` diff --git a/lessons/tools/lesson-29-robot/stage1/guide.md b/lessons/tools/lesson-29-robot/stage1/guide.md index 2bb1af54..428eb497 100644 --- a/lessons/tools/lesson-29-robot/stage1/guide.md +++ b/lessons/tools/lesson-29-robot/stage1/guide.md @@ -119,7 +119,7 @@ In our first example, we have a Robot file `chapter1_eg1.robot`, and a python fi Let's examine our python file `substring.py`: ``` -cat /antidote/lessons/lesson-29/stage1/substring.py +cat /antidote/stage1/substring.py ``` @@ -127,7 +127,7 @@ It contains a single function `is_a_substring` that takes in two string argument Let's check out our Robot file now: ``` -cat /antidote/lessons/lesson-29/stage1/chapter1_eg1.robot +cat /antidote/stage1/chapter1_eg1.robot ``` @@ -138,7 +138,7 @@ We have five test-cases in total, and these will be executed one after the other We'll go ahead and start our test-cases: ``` -robot /antidote/lessons/lesson-29/stage1/chapter1_eg1.robot +robot /antidote/stage1/chapter1_eg1.robot ``` diff --git a/lessons/tools/lesson-29-robot/stage2/guide.md b/lessons/tools/lesson-29-robot/stage2/guide.md index f5371a58..461a9914 100644 --- a/lessons/tools/lesson-29-robot/stage2/guide.md +++ b/lessons/tools/lesson-29-robot/stage2/guide.md @@ -25,7 +25,7 @@ Similar to the example in the previous chapter, we will create a python file (Ro Let's examine the file `JunosDevice.py` and understand the different functions.: ``` -cat /antidote/lessons/lesson-29/stage2/JunosDevice.py +cat /antidote/stage2/JunosDevice.py ``` @@ -75,7 +75,7 @@ Okay, let's start developing our test cases! We will write two test cases, one f Let's examine our Robot test-case file `chapter2_eg1.robot`: ``` -cat /antidote/lessons/lesson-29/stage2/chapter2_eg1.robot +cat /antidote/stage2/chapter2_eg1.robot ``` @@ -123,7 +123,7 @@ The IP address of the vQFX, the username, and password for login, are provided t Execute this test suite by running the below command (note the command line variables passed using the flag --variable) ``` -robot --variable HOST:vqfx1 --variable USER:antidote --variable PASSWORD:antidotepassword /antidote/lessons/lesson-29/stage2/chapter2_eg1.robot +robot --variable HOST:vqfx1 --variable USER:antidote --variable PASSWORD:antidotepassword /antidote/stage2/chapter2_eg1.robot ``` diff --git a/lessons/tools/lesson-29-robot/stage3/guide.md b/lessons/tools/lesson-29-robot/stage3/guide.md index 37117d70..51001527 100644 --- a/lessons/tools/lesson-29-robot/stage3/guide.md +++ b/lessons/tools/lesson-29-robot/stage3/guide.md @@ -39,7 +39,7 @@ Now it's time to roll up your sleeves and jump on to tackling the final two test Let's examine our Robot test-case file `chapter3_eg1.robot`: ``` -cat /antidote/lessons/lesson-29/stage3/chapter3_eg1.robot +cat /antidote/stage3/chapter3_eg1.robot ``` @@ -84,7 +84,7 @@ Let's now have a look at the test cases: Notice that both of the test cases are using the previously defined user keywords from the Keywords section of the robot file. Execute these test cases by running the robot script using the following command (note the command line variables passed using the flag --variable) ``` -robot --variable HOST:vqfx1 --variable USER:antidote --variable PASSWORD:antidotepassword /antidote/lessons/lesson-29/stage3/chapter3_eg1.robot +robot --variable HOST:vqfx1 --variable USER:antidote --variable PASSWORD:antidotepassword /antidote/stage3/chapter3_eg1.robot ``` @@ -93,7 +93,7 @@ robot --variable HOST:vqfx1 --variable USER:antidote --variable PASSWORD:antidot Let's examine our Robot test-case file `chapter3_eg2.robot`: ``` -cat /antidote/lessons/lesson-29/stage3/chapter3_eg2.robot +cat /antidote/stage3/chapter3_eg2.robot ``` @@ -101,7 +101,7 @@ Note that the robot file only has two sections and inside the `Settings` section Let's now check out our resource file `chapter3_resource.robot`: ``` -cat /antidote/lessons/lesson-29/stage3/chapter3_resource.robot +cat /antidote/stage3/chapter3_resource.robot ``` @@ -110,7 +110,7 @@ Notice that this time, we have declared all the required variables in the "Varia Also, observe that three user keywords have been defined under the "Keywords" section in the resource file. Two of these keywords, "Setup Actions" and "Teardown Actions", have been used by the Setup and Teardown settings of our master robot file. The third keyword, Validate Facts, has been used by a test case inside the robot file. Execute the robot script by running the below command ``` -robot /antidote/lessons/lesson-29/stage3/chapter3_eg2.robot +robot /antidote/stage3/chapter3_eg2.robot ``` diff --git a/lessons/tools/lesson-30-salt/lesson.meta.yaml b/lessons/tools/lesson-30-salt/lesson.meta.yaml index 79b6df41..46057531 100644 --- a/lessons/tools/lesson-30-salt/lesson.meta.yaml +++ b/lessons/tools/lesson-30-salt/lesson.meta.yaml @@ -17,7 +17,7 @@ tags: utilities: - name: salt1 - image: antidotelabs/salt + image: shwetak02/salt ports: [22] devices: @@ -38,3 +38,6 @@ stages: - id: 3 description: Executing Junos commands in Salt + + - id: 4 + description: Junos Configuration Management with Salt diff --git a/lessons/tools/lesson-30-salt/stage4/configs/mess b/lessons/tools/lesson-30-salt/stage4/configs/mess new file mode 100644 index 00000000..e69de29b diff --git a/lessons/tools/lesson-30-salt/stage4/configs/vqfx1.txt b/lessons/tools/lesson-30-salt/stage4/configs/vqfx1.txt new file mode 100644 index 00000000..15d0a747 --- /dev/null +++ b/lessons/tools/lesson-30-salt/stage4/configs/vqfx1.txt @@ -0,0 +1,165 @@ + + 15.1X53-D60.4 + + vqfx1 + + $1$mlo32jo6$BOMVhmtORai2Kr24wRCCv1 + + ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key + + + + + antidote + super-user + + $1$iH4TNedH$3RKJbtDRO.N4Ua8B6LL/v/ + + + + set-transitions + 0 + + + + + allow + + + + + + + + + 8080 + + + + + + + * + + any + + + + + messages + + any + + + + authorization + + + + + interactive-commands + + interactive-commands + + + + + + + juniper + + juniper + commercial + + + + chef + + juniper + commercial + + + + + + + em0 + + 0 + + +

+ {{ mgmt_addr }} +
+ + + + + + em3 + + 0 + + +
+ 10.31.0.11/24 +
+
+
+
+
+ + em4 + + 0 + + +
+ 10.12.0.11/24 +
+
+
+
+
+ + + + default + + + + + + + 64001 + + + + + + PEERS + external + + 10.31.0.13 + 64003 + + + 10.12.0.12 + 64002 + + + + + + default + + + + + + + default + 1 + + + \ No newline at end of file diff --git a/lessons/tools/lesson-30-salt/stage4/guide.md b/lessons/tools/lesson-30-salt/stage4/guide.md new file mode 100644 index 00000000..45c2742e --- /dev/null +++ b/lessons/tools/lesson-30-salt/stage4/guide.md @@ -0,0 +1,66 @@ +## Network Automation with Salt + +**Contributed by: [Ashwini Ravindra](https://github.com/ashwiniravindra) and [Shweta Kondvilkar](https://github.com/skondvilkar)** + +--- + +## Part 4 - Junos Configuration Management with Salt + +Now let's apply some Junos device configurations! + +To configure general infrastructure services such as DNS and NTP, we will take advantage of configuration templating provided by Salt. The template will isolate the variable data like IP addresses, VLAN numbers, etc. from the network device feature configuration. With Salt, the variable data is naturally stored in the pillar system. + +To do this, an SLS file is created in the pillar root directory containing the list of NTP and DNS servers. + +``` +cat /srv/pillar/infrastructure_data.sls +``` + + +To allow the Junos proxy minions to use the data defined in the `infrastructure_data.sls` file, we need to edit the top.sls file. + +``` +cat /srv/pillar/top.sls +``` + + +We also have to refresh the pillar data, so our minions can see the new pillar data. + +``` +salt 'vqfx1' saltutil.refresh_pillar +``` + + +Now let's create a configuration template - but before that, let's understand the placing of the template. + +Salt has the concept of [file roots](https://docs.saltstack.com/en/latest/ref/file_server/file_roots.html) directory, which is configured as a `file_roots` parameter. This parameter is located in the '/etc/salt/master' configuration file on the Salt master, and this location is '/srv/salt' by default. Thus, in our case, we will use '/srv/salt' as the path. + +The template will use Jinja syntax for the conditional loops, and the variables are accessed using `pillar.`. We do have multiple options to create the template - Junos text configuration, XML, or Junos set commands. For now, let's go with a text configuration template. + +``` +cat /srv/salt/infrastructure_config.conf +``` + + +The next step is to create a salt SLS file, describing the state we want our 'vqfx1' and its configurations to be in. It will reference the [Junos state module] (https://docs.saltstack.com/en/latest/ref/states/all/salt.states.junos.html) to provision the configuration template. + +``` +cat /srv/salt/provision_infrastructure.sls +``` + + +To apply the configuration changes, we need to execute a 'state.apply' function. + +``` +salt 'vqfx1' state.apply provision_infrastructure +``` + + +Finally, let's check if the configurations were successfully loaded and committed. + +``` +show configuration | compare rollback 1 +``` + + +That's it for now - hopefully you enjoyed learning about Salt, and are ready to go automate! diff --git a/lessons/tools/lesson-31-terraform/stage1/guide.md b/lessons/tools/lesson-31-terraform/stage1/guide.md index 223e1797..c9f644cc 100644 --- a/lessons/tools/lesson-31-terraform/stage1/guide.md +++ b/lessons/tools/lesson-31-terraform/stage1/guide.md @@ -18,7 +18,7 @@ Terraform for traditional networking is relatively unchartered ground because we Before we proceed, we need to move to the right directory. Terraform is ran in a separate directory so we can move between stages within this lesson and knowledge build. ``` -cd /antidote/lessons/lesson-31/terraform/ +cd /antidote/terraform/ ``` diff --git a/lessons/tools/lesson-31-terraform/stage2/guide.md b/lessons/tools/lesson-31-terraform/stage2/guide.md index 35dc5852..2b43a73f 100644 --- a/lessons/tools/lesson-31-terraform/stage2/guide.md +++ b/lessons/tools/lesson-31-terraform/stage2/guide.md @@ -12,7 +12,7 @@ So long as you know what depends on what, Terraform will reflect that knowledge To keep things easy. ``` -cd /antidote/lessons/lesson-31/terraform +cd /antidote/terraform ``` diff --git a/lessons/tools/lesson-31-terraform/stage3/guide.md b/lessons/tools/lesson-31-terraform/stage3/guide.md index 04a2afa6..3a4d1cb0 100644 --- a/lessons/tools/lesson-31-terraform/stage3/guide.md +++ b/lessons/tools/lesson-31-terraform/stage3/guide.md @@ -14,7 +14,7 @@ What happens we do this is: First we need to make sure we're in the correct working directory. ``` -cd /antidote/lessons/lesson-31/terraform/ +cd /antidote/terraform/ ``` diff --git a/lessons/tools/lesson-31-terraform/stage4/guide.md b/lessons/tools/lesson-31-terraform/stage4/guide.md index 892e099c..24ad043d 100644 --- a/lessons/tools/lesson-31-terraform/stage4/guide.md +++ b/lessons/tools/lesson-31-terraform/stage4/guide.md @@ -10,7 +10,7 @@ If you did this using Terraform, you're in luck! It's as easy as destroying the First we need to make sure we're in the correct working directory. ``` -cd /antidote/lessons/lesson-31/terraform/ +cd /antidote/terraform/ ``` diff --git a/lessons/tools/lesson-31-terraform/stage5/guide.md b/lessons/tools/lesson-31-terraform/stage5/guide.md index 85a31dc6..9d41fb84 100644 --- a/lessons/tools/lesson-31-terraform/stage5/guide.md +++ b/lessons/tools/lesson-31-terraform/stage5/guide.md @@ -6,7 +6,7 @@ Working declaratively with Terraform is an excellent way to work and can signifi Before we do any more, let's make sure we're in the correct working directory. ``` -cd /antidote/lessons/lesson-31/terraform/bonus/ +cd /antidote/terraform/bonus/ ``` diff --git a/lessons/workflows/lesson-21-tshoot-ipphone/stage1/guide.md b/lessons/workflows/lesson-21-tshoot-ipphone/stage1/guide.md index eb14bd3a..749b2810 100644 --- a/lessons/workflows/lesson-21-tshoot-ipphone/stage1/guide.md +++ b/lessons/workflows/lesson-21-tshoot-ipphone/stage1/guide.md @@ -24,7 +24,7 @@ Now let's get the IP of the phone by querying the SIP PBX. Click the button bel ``` -cd /antidote/lessons/lesson-21 +cd /antidote ./get-phone-ip-from-ext.py --host=asterisk --port=8088 --username=admin --password=admin --phone=1107 ``` diff --git a/lessons/workflows/lesson-32-stigcompliance/stage1/guide.md b/lessons/workflows/lesson-32-stigcompliance/stage1/guide.md index b7793adc..0b5b1181 100644 --- a/lessons/workflows/lesson-32-stigcompliance/stage1/guide.md +++ b/lessons/workflows/lesson-32-stigcompliance/stage1/guide.md @@ -25,7 +25,7 @@ As an example, one of the many potential findings within the STIG for Juniper ne Now of course, you're already thinking we can just run this check in a simple script, but this is just one check of many [for Juniper devices alone](https://stigviewer.com/stig/infrastructure_router__juniper/). There exists a better way, to commit the rules involved with STIG compliance as a file that NAPALM can use to verify, while writing as little Python yourself as possible. We can create a simple YAML definition that contains "tests" for specific findings. For instance, in this YAML file, we can tell NAPALM to use `get_snmp_information` to retrieve SNMP information, and then make an assertion that the community string is set to read-only. ``` -cd /antidote/lessons/lesson-32/stage1/ +cd /antidote/stage1/ cat napalm_verify_snmp.yaml ``` diff --git a/lessons/workflows/lesson-32-stigcompliance/stage2/guide.md b/lessons/workflows/lesson-32-stigcompliance/stage2/guide.md index dd07b703..def81e85 100644 --- a/lessons/workflows/lesson-32-stigcompliance/stage2/guide.md +++ b/lessons/workflows/lesson-32-stigcompliance/stage2/guide.md @@ -21,7 +21,7 @@ show configuration snmp | display xml We've built a test file similar to what we saw in the introduction to JSNAPy, but this one captures both of the findings we'll explore in this lab. This is totally based on preference - JSNAPy allows you to place all tests in the same file, or split them up however you want. ``` -cd /antidote/lessons/lesson-32/stage2/ +cd /antidote/stage2/ cat jsnapy_tests.yaml ``` diff --git a/lessons/workflows/lesson-33-quickdeviceinventory/stage2/guide.md b/lessons/workflows/lesson-33-quickdeviceinventory/stage2/guide.md index a9392104..3ec1d279 100644 --- a/lessons/workflows/lesson-33-quickdeviceinventory/stage2/guide.md +++ b/lessons/workflows/lesson-33-quickdeviceinventory/stage2/guide.md @@ -13,7 +13,7 @@ There are so many uses for a script like this. For instance, you can find out wh First we need a list of device names or IP addresses that we want to retrieve information from. We will use a YAML file to store the device list. The YAML file looks like this:
-cd /antidote/lessons/lesson-33/stage2/
+cd /antidote/stage2/
 more devices.yml
 
diff --git a/lessons/workflows/lesson-34-configbackup/stage2/guide.md b/lessons/workflows/lesson-34-configbackup/stage2/guide.md index 5a18fc00..ed14bca8 100644 --- a/lessons/workflows/lesson-34-configbackup/stage2/guide.md +++ b/lessons/workflows/lesson-34-configbackup/stage2/guide.md @@ -10,7 +10,7 @@ In this lesson we will expand on the last lesson and backup the configurations f First we need a list of device names or IP addresses that we want to retrieve information from. We will use a YAML file to store the device list. The YAML file looks like this:
-cd /antidote/lessons/lesson-34/stage2/
+cd /antidote/stage2/
 more devices.yml
 
diff --git a/lessons/workflows/lesson-35-devicespecifictemplate/stage1/guide.md b/lessons/workflows/lesson-35-devicespecifictemplate/stage1/guide.md index d908926e..bcc34338 100644 --- a/lessons/workflows/lesson-35-devicespecifictemplate/stage1/guide.md +++ b/lessons/workflows/lesson-35-devicespecifictemplate/stage1/guide.md @@ -15,7 +15,7 @@ The most important part of the template generation process is to have a device t Lets take a look at our sample configuration template that has already had the Jinja syntax added.
-cd /antidote/lessons/lesson-35/stage1
+cd /antidote/stage1
 more template.j2
 
@@ -26,7 +26,7 @@ Jinja2 variables can be almost any combinations of numbers or lower case or uppe YAML is a human friendly data serialization standard but what does that mean? It means that it is a way to format data so that it is easy for humans to read and edit. The data in the YAML file will be used to make substitutions in the device template. We have a sample YAML file with prepopulated data.
-cd /antidote/lessons/lesson-35/stage1
+cd /antidote/stage1
 more variables.yml
 
diff --git a/lessons/workflows/lesson-35-devicespecifictemplate/stage2/guide.md b/lessons/workflows/lesson-35-devicespecifictemplate/stage2/guide.md index 589ed406..bbe99d9f 100644 --- a/lessons/workflows/lesson-35-devicespecifictemplate/stage2/guide.md +++ b/lessons/workflows/lesson-35-devicespecifictemplate/stage2/guide.md @@ -13,7 +13,7 @@ The sample project we will use is deploying a large number of access switches. W #### Device Template File In this section we will use the same template file that we used in the previous lesson. Look for the template variables in all captial letters surrounded by double curly brackets, for example **{{ HOSTNAME }}**. Pay attention to these variables because they will be set to specific values in the next section using YAML.
-cd /antidote/lessons/lesson-35/stage2
+cd /antidote/stage2
 more template.j2
 
@@ -23,7 +23,7 @@ more template.j2 In this section we will generate configurations for multiple devices. In order to accomplish this the YAML file format will be changed slightly. Since we will be dealing with multiple devices the YAML file will contain three elements with dictionary key/value pairs for each element. Lets look at the new format.
-cd /antidote/lessons/lesson-35/stage2
+cd /antidote/stage2
 more variables.yml
 
diff --git a/lessons/workflows/lesson-35-devicespecifictemplate/stage3/guide.md b/lessons/workflows/lesson-35-devicespecifictemplate/stage3/guide.md index 288d852b..686b475c 100644 --- a/lessons/workflows/lesson-35-devicespecifictemplate/stage3/guide.md +++ b/lessons/workflows/lesson-35-devicespecifictemplate/stage3/guide.md @@ -15,7 +15,7 @@ There are times that you need to be able to create multiples of the same configu In order to add the uplink ports we need to add values to the YAML file. We will create another dictionary key named **UPLINKS** and then we will use nested dictionaries with key/value pairs for each distribution switch. This is what the YAML file will look like.
-cd /antidote/lessons/lesson-35/stage3
+cd /antidote/stage3
 head -12 variables.yml
 
@@ -25,7 +25,7 @@ There are two uplinks, one that will connect to `distro1` and the other that wil #### Device Template File In order to create the multiple uplink ports we will need to modify the Jinja2 template to include a `for` loop so it can loop through all of the data in the **UPLINKS** dictionary. Lets look at the new template.
-cd /antidote/lessons/lesson-35/stage3
+cd /antidote/stage3
 head -18 template.j2
 
diff --git a/lessons/workflows/lesson-35-devicespecifictemplate/stage4/guide.md b/lessons/workflows/lesson-35-devicespecifictemplate/stage4/guide.md index 245cf0b2..e60c0bff 100644 --- a/lessons/workflows/lesson-35-devicespecifictemplate/stage4/guide.md +++ b/lessons/workflows/lesson-35-devicespecifictemplate/stage4/guide.md @@ -26,7 +26,7 @@ Notice the only VLAN configured is the default VLAN and a VLAN tag of 1. We will use a YAML file to store the specific data for the VLANs we need to create. The sample `vlans.yml` file contains a dictionary with a list of **key/value** pairs that contain the **VLAN\_NAME** and the **VLAN\_ID**. Lets see what the sample YAML file looks like.
-cd /antidote/lessons/lesson-35/stage4
+cd /antidote/stage4
 cat vlans.yml
 
@@ -34,7 +34,7 @@ cat vlans.yml #### Device Template File In order to create multiple VLANs we will need a Jinja2 template with a `for` loop similar to what was done in the previous section. Lets look at the new template.
-cd /antidote/lessons/lesson-35/stage4
+cd /antidote/stage4
 cat template.j2
 
From 01c93c85729d60919b17ffd42e4e4c74da961168 Mon Sep 17 00:00:00 2001 From: skondvilkar Date: Tue, 9 Jul 2019 15:02:58 -0700 Subject: [PATCH 3/8] updated changelog.md Signed-off-by: skondvilkar --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e31e0dc1..42b2354b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,12 @@ - Added a new stage to the lesson, "STIG Compliance checking with custom scripts". This lesson goes through building a python script to check the SNMP vulnerabilities that were done with NAPALM and jSNAPY in the to previous stages. [#238](https://github.com/nre-learning/nrelabs-curriculum/pull/238) - Added a lesson on BASH [Commit #1fe7b94](https://github.com/nre-learning/nrelabs-curriculum/commit/1fe7b94454e880b1a468b1d1742d2911139359ab) +## v0.3.3 - July 9, 2019 +### Curriculum + +- Added stage 4 for the "Network Automation with Salt" lesson. This stage will provide with the steps on how to configure Junos devices using Salt [#235](https://github.com/nre-learning/nrelabs-curriculum/pull/235) + ## v0.3.2 - April 19, 2019 - Three new lessons [#217](https://github.com/nre-learning/nrelabs-curriculum/pull/217) From d4a339df3c5364e7f792b45120ee6e15c74ef57f Mon Sep 17 00:00:00 2001 From: Matt Oswalt Date: Fri, 24 Jan 2020 23:41:42 -0800 Subject: [PATCH 4/8] Add step to install tzdata noninteractively Signed-off-by: Matt Oswalt --- images/salt/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/images/salt/Dockerfile b/images/salt/Dockerfile index ca0f7a64..5dd35763 100644 --- a/images/salt/Dockerfile +++ b/images/salt/Dockerfile @@ -1,5 +1,9 @@ FROM antidotelabs/utility +# Because tzdata comes with an interactive installer wizard to configure +# your timezone +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata + RUN wget -O - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/archive/2018.3.2/SALTSTACK-GPG-KEY.pub | apt-key add - && \ echo "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/archive/2018.3.2 xenial main" >> /etc/apt/sources.list && \ apt-get update From 8f978695eb7298d829cadc9c8aa41f1d35af1b6b Mon Sep 17 00:00:00 2001 From: Matt Oswalt Date: Fri, 24 Jan 2020 23:42:06 -0800 Subject: [PATCH 5/8] Add newlines to config files so they show up properly in terminal output Signed-off-by: Matt Oswalt --- images/salt/salt_configs/proxy | 2 +- images/salt/salt_configs/vqfx1.sls | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/images/salt/salt_configs/proxy b/images/salt/salt_configs/proxy index cff912cd..0e22cdcc 100644 --- a/images/salt/salt_configs/proxy +++ b/images/salt/salt_configs/proxy @@ -1 +1 @@ -master: salt1 \ No newline at end of file +master: salt1 diff --git a/images/salt/salt_configs/vqfx1.sls b/images/salt/salt_configs/vqfx1.sls index b99974ef..9d72f57c 100644 --- a/images/salt/salt_configs/vqfx1.sls +++ b/images/salt/salt_configs/vqfx1.sls @@ -2,4 +2,4 @@ proxy: proxytype: junos host: vqfx1 username: antidote - password: antidotepassword \ No newline at end of file + password: antidotepassword From 31b58670f5141d44919f2d35d7627d2864593ccd Mon Sep 17 00:00:00 2001 From: Matt Oswalt Date: Fri, 24 Jan 2020 23:42:36 -0800 Subject: [PATCH 6/8] Remove empty file (erroneously committed?) Signed-off-by: Matt Oswalt --- lessons/tools/lesson-30-salt/stage4/configs/mess | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lessons/tools/lesson-30-salt/stage4/configs/mess diff --git a/lessons/tools/lesson-30-salt/stage4/configs/mess b/lessons/tools/lesson-30-salt/stage4/configs/mess deleted file mode 100644 index e69de29b..00000000 From a0f91055c00d22680b28c6947faa4a770ca905be Mon Sep 17 00:00:00 2001 From: Matt Oswalt Date: Fri, 24 Jan 2020 23:43:23 -0800 Subject: [PATCH 7/8] Amend end of stage3/stage4 guides to flow better with new content (and remain open to additional stages in the future Signed-off-by: Matt Oswalt --- lessons/tools/lesson-30-salt/stage3/guide.md | 2 +- lessons/tools/lesson-30-salt/stage4/guide.md | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lessons/tools/lesson-30-salt/stage3/guide.md b/lessons/tools/lesson-30-salt/stage3/guide.md index f060d090..d8009ab3 100644 --- a/lessons/tools/lesson-30-salt/stage3/guide.md +++ b/lessons/tools/lesson-30-salt/stage3/guide.md @@ -39,4 +39,4 @@ cat /var/tmp/route.xml ``` -That's it for now - hopefully you enjoyed learning about Salt, and are ready to go automate! +See the next part of this lesson to learn how to automate Junos configurations with Salt! diff --git a/lessons/tools/lesson-30-salt/stage4/guide.md b/lessons/tools/lesson-30-salt/stage4/guide.md index 45c2742e..eb9f7a55 100644 --- a/lessons/tools/lesson-30-salt/stage4/guide.md +++ b/lessons/tools/lesson-30-salt/stage4/guide.md @@ -63,4 +63,3 @@ show configuration | compare rollback 1 ``` -That's it for now - hopefully you enjoyed learning about Salt, and are ready to go automate! From f9109df66d5e875144bdc139c67b58758d52d2e2 Mon Sep 17 00:00:00 2001 From: Matt Oswalt Date: Fri, 24 Jan 2020 23:45:03 -0800 Subject: [PATCH 8/8] Use 'this' keyword for all snippet run buttons Signed-off-by: Matt Oswalt --- lessons/tools/lesson-30-salt/stage2/guide.md | 6 +++--- lessons/tools/lesson-30-salt/stage3/guide.md | 4 ++-- lessons/tools/lesson-30-salt/stage4/guide.md | 14 +++++++------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lessons/tools/lesson-30-salt/stage2/guide.md b/lessons/tools/lesson-30-salt/stage2/guide.md index e77e183f..b0b9561a 100644 --- a/lessons/tools/lesson-30-salt/stage2/guide.md +++ b/lessons/tools/lesson-30-salt/stage2/guide.md @@ -12,21 +12,21 @@ Now let's configure the Proxy Minions. To do this, we must define the IP address ``` cat /srv/pillar/vqfx1.sls ``` - + At this point we have to write the top.sls file which maps the Proxy Minion to the [pillar](https://docs.saltstack.com/en/latest/topics/pillar/) file that contains its corresponding details (`vqfx1.sls`) ``` cat /srv/pillar/top.sls ``` - + We also have to configure the /etc/salt/proxy file to point to the Salt Master ``` cat /etc/salt/proxy ``` - + The Proxy Minion is now configured and is ready to start. ``` diff --git a/lessons/tools/lesson-30-salt/stage3/guide.md b/lessons/tools/lesson-30-salt/stage3/guide.md index d8009ab3..fa81a8f2 100644 --- a/lessons/tools/lesson-30-salt/stage3/guide.md +++ b/lessons/tools/lesson-30-salt/stage3/guide.md @@ -22,7 +22,7 @@ For example, ``` show route | display xml rpc ``` - + From the above snippet, the RPC command equivalent for the 'show route' CLI command is 'get-route-information' Let us now run the junos.rpc command. We can specify a destination file where the output is directed to. The 'terse' keyword allows you to obtain a summary output. @@ -37,6 +37,6 @@ To verify that the output was written to the '/var/tmp/route.xml', execute: ``` cat /var/tmp/route.xml ``` - + See the next part of this lesson to learn how to automate Junos configurations with Salt! diff --git a/lessons/tools/lesson-30-salt/stage4/guide.md b/lessons/tools/lesson-30-salt/stage4/guide.md index eb9f7a55..9e734847 100644 --- a/lessons/tools/lesson-30-salt/stage4/guide.md +++ b/lessons/tools/lesson-30-salt/stage4/guide.md @@ -15,21 +15,21 @@ To do this, an SLS file is created in the pillar root directory containing the l ``` cat /srv/pillar/infrastructure_data.sls ``` - + To allow the Junos proxy minions to use the data defined in the `infrastructure_data.sls` file, we need to edit the top.sls file. ``` cat /srv/pillar/top.sls ``` - + We also have to refresh the pillar data, so our minions can see the new pillar data. ``` salt 'vqfx1' saltutil.refresh_pillar ``` - + Now let's create a configuration template - but before that, let's understand the placing of the template. @@ -40,26 +40,26 @@ The template will use Jinja syntax for the conditional loops, and the variables ``` cat /srv/salt/infrastructure_config.conf ``` - + The next step is to create a salt SLS file, describing the state we want our 'vqfx1' and its configurations to be in. It will reference the [Junos state module] (https://docs.saltstack.com/en/latest/ref/states/all/salt.states.junos.html) to provision the configuration template. ``` cat /srv/salt/provision_infrastructure.sls ``` - + To apply the configuration changes, we need to execute a 'state.apply' function. ``` salt 'vqfx1' state.apply provision_infrastructure ``` - + Finally, let's check if the configurations were successfully loaded and committed. ``` show configuration | compare rollback 1 ``` - +