Links to my new Network Automation training at CBT Nuggets: ---------------------------------------------------------------------------------------------- UNDERSTAND THE NORNIR AUTOMATION FRAMEWORK ---------------------------------------------------------------------------------------------- www.cbtnuggets.com/it-training/understanding-nornir-automation-framework? ---------------------------------------------------------------------------------------------- AUTOMATE NETWORK CONFIGURATIONS WITH NORNIR ---------------------------------------------------------------------------------------------- www.cbtnuggets.com/it-training/automate-network-configuration-nornir? --------------------------------------------------------------------------------------------- UNDERSTAND AUTOMATION SECURITY --------------------------------------------------------------------------------------------- www.cbtnuggets.com/it-training/understand-automation-security?
TIMESTAMPS: 2:00 - What is the config.yaml file? 2:50 - First look at the groups.yaml file 3:05 - What is the hosts.yaml file? 3:50 - How to auto-generate your own hosts.yaml file 4:55 - The Runbook script explained 10:25 - First look at the Textfile 11:10 - The script is deployed! 12:20 - Creating a new textfile with new configs 13:25 - The Runbook is redeployed with the new changes 14:00 - How to edit the script 15:20 - The new script is run one final time! (NOTE: I keep calling the config_textfile "config dot textfile". This is of course an error haha. That was the original name of the file when I first created the demo, but decided to change it to an underscore)
Hi, just wondering if you are releasing a video with enable on cisco devices password protected. I am having trouble with dynamically assigning the enable secret for netmiko. If I add it on the yaml file it works but requesting is using nr.inventory.defaults.connection_options['netmiko'] = ConnectionOptions(extras={"secret":pwd}) is not working where pwd = getpass()
Hi John, Quick question.. the section at 4.21 where we can edit the ip address, can we reference that section to another txt file where we have some specific IP addresses from different subnets?
Hey, Besal. If I'm understanding your question correctly. Yeah, that would be possible but it would require a change to the script :) I'm just thinking off the top of my head but you'd need to do something like: with open('ip.txt') as f: ip_list = f.read().splitlines() for ip in ip_list: And basically reference the object 'ip' as your ip address in your script as the hostname. Although I will add that I would highly recommend use Out Of Band management like I do in my videos (the red links). They're all effectively in the same subnet and provide easy and stable reachability. In my example all the g0/0 interfaces in the routers are in their own VRF (virtual routing table) so that the network has no effect on actual production traffic. If you're trying to manage your network over your actual production network and crossing over different subnets, etc. Then changes that you make to your network might impact your ability to have reachability and thus manage it. For example, if you automate out an OSPF changes that breaks an adjacency, you might not be able to reach a large part of your network, etc. Just a suggestion, keeps things really easy, especially for generating your host.yaml files :) -John
Hey, Fototranzystor! Both EVE-NG and GNS3 are great pieces of software. Mostly I prefer the look of EVE-NG. I particularly like the clean interface labels which I think makes it easier for viewers to follow along when I'm making configuration changes. However, EVE-PRO has some really nice features like reducing link quality on a line which is great for testing IP SLA/QoS, etc. I could be wrong but I don't think GNS3 has such a feature. But, yes! It's largely due to personal preference. Both are absolutely fine to use. :) -John
Thanks, Muhammad! And you're 100% right, that's how I have it setup in my personal labs! I made the decision to remove my defaults file for the video in order for what I thought was maximum simplification since we're still in the early stages on these demos. I could be wrong, but I thought it would be easier for total beginners to follow by using the least amount of cross-referencing/inheritance as possible. So I just added the username and password values to my python script when I auto-generated this particular host file for the demonstration. Thanks again and great to have your feedback :) -John
@@muhammad.rafi2012 Hey, Muhammad. Yup, I actually have plans to do a video on the inventories and inheritance since they are so important, but I reckon also covering the Ansible inventory plugin would probably be a good addition to the video. Thanks for the suggestion! :) -John