<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Josh VanDeraa</title><link>https://josh-v.com/</link><description>Recent content on Josh VanDeraa</description><generator>Hugo</generator><language>en</language><copyright>Copyright © 2025 Josh VanDeraa. All rights reserved.</copyright><lastBuildDate>Sat, 28 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://josh-v.com/index.xml" rel="self" type="application/rss+xml"/><item><title>AI: Local Models Memory</title><link>https://josh-v.com/local-inference-memory/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><guid>https://josh-v.com/local-inference-memory/</guid><description>I thought running multiple AI agents locally meant loading the model into memory once per agent. Turns out model weights are shared - only the KV-cache scales per request. Here&amp;rsquo;s what I learned and how consolidating to a single model improved everything.</description></item><item><title>AI: The Quick RSS Feed Fix</title><link>https://josh-v.com/ai-rss-fix/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate><guid>https://josh-v.com/ai-rss-fix/</guid><description>My RSS feeds broke during the Hugo migration. Instead of re-learning the details myself, I handed it to Harry. Here&amp;rsquo;s how it got fixed.</description></item><item><title>AI: The Service Department Translator</title><link>https://josh-v.com/ai-car-service-translator/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://josh-v.com/ai-car-service-translator/</guid><description>When the dealership service rep couldn&amp;rsquo;t explain what was wrong with our vehicle, I sent the repair notes to my AI assistant. What came back was more useful than anything the service center told me.</description></item><item><title>AI: Initializing</title><link>https://josh-v.com/welcome-ai-initializing/</link><pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate><guid>https://josh-v.com/welcome-ai-initializing/</guid><description>I went from calling AI a 50/50 bet to burning through API credits in days. Here&amp;rsquo;s what changed, from the Ralph Loop to OpenClaw to AI agent skills, and why I think we&amp;rsquo;re at a pivotal point.</description></item><item><title>AI: My Welcome</title><link>https://josh-v.com/welcome-ai-01/</link><pubDate>Sat, 07 Feb 2026 00:00:00 +0000</pubDate><guid>https://josh-v.com/welcome-ai-01/</guid><description>Here we are diving into just one of the time savings samples of what the AI world is able to accomplish these days. This post is going to dig into a simple one that I have been trying to solve for a while and just couldn&amp;rsquo;t get right - Cloud Init virtual machines. I now am spinning up virtual machines in a few seconds, all with the help of Claude.</description></item><item><title>Creating Your Own Validation</title><link>https://josh-v.com/creating-your-own-validation/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><guid>https://josh-v.com/creating-your-own-validation/</guid><description>I recently was presented with a request to look at where there was a request to validate that a Rack would be unique at a Location in Nautobot. I took a look at the data validation engine and wasn&amp;rsquo;t able to determine a method to make this work there. So here is the solution.</description></item><item><title>Cleaning Up Python Environment</title><link>https://josh-v.com/cleaning-up-python-environment/</link><pubDate>Thu, 18 Dec 2025 00:00:00 +0000</pubDate><guid>https://josh-v.com/cleaning-up-python-environment/</guid><description>Recently I updated my Python development environments to use Python UV for managing Python versions and tools on the system. In this post I take you on the journey that I went on to replace pyenv and Pipx.</description></item><item><title>2025 The ReSwitch</title><link>https://josh-v.com/2025-the-reswitch/</link><pubDate>Tue, 16 Dec 2025 00:00:00 +0000</pubDate><guid>https://josh-v.com/2025-the-reswitch/</guid><description>I&amp;rsquo;m back over to Hugo for my blog content using the Congo theme. Why? Come take a look.</description></item><item><title>Services First - A Reminder of Strong Growth</title><link>https://josh-v.com/services-first-a-reminder-of-strong-growth/</link><pubDate>Sat, 13 Dec 2025 00:00:00 +0000</pubDate><guid>https://josh-v.com/services-first-a-reminder-of-strong-growth/</guid><description>This post explores why the &amp;ldquo;Amazon API Mandate&amp;rdquo; remains relevant for modern network automation. It highlights how adopting a &amp;ldquo;Services First&amp;rdquo; strategy (using APIs and Pub/Sub systems like Nautobot) can transform CLI-based workflows into scalable, robust services.</description></item><item><title>Using Siri Shortcuts to Set Microphone</title><link>https://josh-v.com/siri-shortcuts-microphone/</link><pubDate>Sun, 30 Nov 2025 00:00:00 +0000</pubDate><guid>https://josh-v.com/siri-shortcuts-microphone/</guid><description>&lt;p&gt;Managing audio settings on Mac devices can be repetitive, especially when switching between different microphones for calls, recordings, or meetings. Siri Shortcuts provides a powerful way to automate this process.&lt;/p&gt;</description></item><item><title>Autocon4 Viewpoint</title><link>https://josh-v.com/autocon4/</link><pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate><guid>https://josh-v.com/autocon4/</guid><description>&lt;p&gt;&lt;a href="https://networkautomation.forum/autocon4" target="_blank" rel="noreferrer"&gt;AutoCon4&lt;/a&gt; and &lt;a href="https://go.networktocode.com/nautocon-autocon" target="_blank" rel="noreferrer"&gt;NautoCon@AutoCon&lt;/a&gt; are in the books. It was quite the day, and I have to say that it ranks among my best days of the year in Network Automation, right up there with being able to meet up with the Network to Code team earlier in the year. It was great to see many friends from across the community. Hopefully we’ll be able to keep the conversation going in Slack and maintain the momentum.&lt;/p&gt;</description></item><item><title>Network Design with NTP</title><link>https://josh-v.com/time_design/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://josh-v.com/time_design/</guid><description>&lt;p&gt;It’s been a while since my last post, life and work have both been full. Today, I’m diving into one of the most quietly critical aspects of network design: &lt;strong&gt;time synchronization&lt;/strong&gt;. Specifically, how to design NTP within an enterprise network and how to think about time zones when correlating logs.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll look at two main topics in this post: designing NTP (Network Time Protocol) and managing time zone display in logs.&lt;/p&gt;</description></item><item><title>Fueling Network AI: The Critical Role of Source of Truth Data</title><link>https://josh-v.com/critical-role-of-sot/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate><guid>https://josh-v.com/critical-role-of-sot/</guid><description>&lt;p&gt;As the AI movement continues to expand its reach into the networking space, the need for an appropriate source of truth for network data becomes more critical than ever. What I have been seeing so far in the industry for networking and AI has been a lot of working on the individual devices one by one. But when looking at leveraging AI for the network, I believe it is best to look at the network as a whole. And that is where the Source of Truth data being stored in Nautobot is going to provide the right information about the network and the &lt;strong&gt;relationships&lt;/strong&gt; between pieces of information - AI thrives on context, and relationships provide that context for more accurate insights and actions.&lt;/p&gt;</description></item><item><title>Containerlab - Popularity Exploding</title><link>https://josh-v.com/containerlab-explodes/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/containerlab-explodes/</guid><description>&lt;p&gt;Coming out of the 2024 AutoCon2 conference held in Denver the week of November 18th, 2024 - there is one thing that is standing out more so than anything else. Containerlab is a &lt;strong&gt;HUGE&lt;/strong&gt; blowout success. In observing through several of the workshops at the conference on Monday and Tuesday, many were using Containerlab in some fashion. Now, Containerlab has been around for a while, so this isn&amp;rsquo;t a press release of it. But it is re-affirming what many already know, that this is a great tool to be in the network engineer and network automator toolset.&lt;/p&gt;</description></item><item><title>Linux Port Binding</title><link>https://josh-v.com/linux-port-binding/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/linux-port-binding/</guid><description>&lt;p&gt;This post is will provide a brief overview of how port binding works in Linux. This topic that will be required for the small series of using Continue.Dev in your local environment, but before addressing the setup of a machine for remote access in a future post, I thought it would be important to quickly create a post regarding the concept of port binding.&lt;/p&gt;
&lt;h2 id="showing-listening-ports" class="relative group"&gt;Showing Listening Ports &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#showing-listening-ports" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In Linux you can view all ports that are being listened on by using the &lt;code&gt;netstat&lt;/code&gt; or &lt;code&gt;ss&lt;/code&gt; commands. This is useful for identifying active ports and their associated services. My preference in 2024 is to use the &lt;code&gt;ss&lt;/code&gt; command, which, &lt;a href="https://www.linux.com/topic/networking/introduction-ss-command/" target="_blank" rel="noreferrer"&gt;according to Linux.com&lt;/a&gt;, is a more modern version of the &lt;code&gt;netstat&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Code Completion in VS Code with Ollama</title><link>https://josh-v.com/continue-dev/</link><pubDate>Sat, 07 Sep 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/continue-dev/</guid><description>&lt;p&gt;The year 2024 will showcase the remarkable evolution and contributions of AI. One prominent application of AI lies in its ability to streamline the coding process. In this post I demonstrate how to utilize the &lt;a href="https://continue.dev" target="_blank" rel="noreferrer"&gt;Continue&lt;/a&gt; VS Code plugin as a viable alternative to the GitHub Copilot system. This will allow you to have choice on the AI back end or in this scenario, the capability to self host the AI system using &lt;a href="https://ollama.com" target="_blank" rel="noreferrer"&gt;Ollama&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Modern Network Observability</title><link>https://josh-v.com/observability/</link><pubDate>Sat, 07 Sep 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/observability/</guid><description>&lt;h1 id="modern-network-observability" class="relative group"&gt;Modern Network Observability &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#modern-network-observability" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;I&amp;rsquo;m proud to be one of the three authors to put together the book on Modern Network Observability. It&amp;rsquo;s been a great joy to write and contribute to the Networking community with this book on setting up a modern network observability platform using open source tools. The book aims to help you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Define a composable network observability stack with numerous practical implementations&lt;/li&gt;
&lt;li&gt;Utilize the network observability stack to address real network operation challenges&lt;/li&gt;
&lt;li&gt;Learn about obtaining various data types programmatically and how to utilize them to enhance a network automation strategy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the book we dive into an observability pipeline that starts with the metrics collection, how to enhance and transform the data using a source of truth, storing the data for long term retrieval, visualizing the data, and how to leverage the data driving business success.&lt;/p&gt;</description></item><item><title>Redux: Wireless Conversion</title><link>https://josh-v.com/redux-wireless-conversion/</link><pubDate>Wed, 17 Jul 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/redux-wireless-conversion/</guid><description>&lt;p&gt;This may be my favorite post within the realm of what is possible as I write this series. There are many more things that could be done, but we did pretty well considering. Going back over a decade now, I had the fortunate opportunity to work to deploy Guest WiFi 📶 for a large number of retail sites, with the heavy lifting of the work being done within a five month period of time. This post is about the conversion of access points from one management system to another.&lt;/p&gt;</description></item><item><title>Nautobot: Atomic Jobs</title><link>https://josh-v.com/nautobot-atomic-jobs/</link><pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-atomic-jobs/</guid><description>&lt;p&gt;In the first release of Nautobot all of the Jobs were Atomic by default. This was from the previous focus of the legacy source application that assumed that scripts/reports would only be run on the data locally, so by that nature, the jobs should be atomic. As more and more Jobs started to interact with other systems, it became apparent that there needed to be a control mechanism provided (as I understand). So the introduction of a context manager and decorator was brought to the table to provide the same previous functionality while changing of the default behavior in Nautobot 2.x+.&lt;/p&gt;</description></item><item><title>Nautobot Book</title><link>https://josh-v.com/nautobot_book/</link><pubDate>Mon, 24 Jun 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot_book/</guid><description>&lt;h1 id="nautobot-book" class="relative group"&gt;Nautobot Book &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#nautobot-book" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;&lt;figure&gt;
 &lt;img src="https://m.media-amazon.com/images/I/81tjWDoYk3L._SL1500_.jpg" alt="Nautobot Book Cover" class="mx-auto my-0 rounded-md"&gt;&lt;/figure&gt;{ align=right width=&amp;ldquo;400&amp;rdquo; }&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m proud to have been an author in the &lt;a href="https://a.co/d/7JPvYpC" target="_blank" rel="noreferrer"&gt;Network Automation with Nautobot found on Amazon&lt;/a&gt; book that has recently been released. The book covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learn how documenting your network in Nautobot can accelerate your network automation journey&lt;/li&gt;
&lt;li&gt;Apply NetDevOps to your network by leveraging Nautobot as a network source of truth&lt;/li&gt;
&lt;li&gt;Minimize tool sprawl by extending, using, or building Nautobot Apps&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Nautobot enables network teams to build a scalable and extensible network source of truth that provides a foundation to power any network automation stack.&lt;/p&gt;</description></item><item><title>Redux: Stadium Automation</title><link>https://josh-v.com/stadium-automation/</link><pubDate>Wed, 19 Jun 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/stadium-automation/</guid><description>&lt;p&gt;At a previous position to joining Network to Code I was asked to help to build automation to help with the configuration of switches going into a MLS stadium. The stadium was under construction and the network build out would take place at the same time as the stadium was being built out. It was definitely a first and maybe only opportunity that I would have to build out a new stadium.&lt;/p&gt;
&lt;h2 id="scenario" class="relative group"&gt;Scenario &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#scenario" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;The task at hand is that each of the ports would need to be configured leveraging a good L2/L3 separation with each of the service providers that provide a service to the stadium their own network segment to work through. A large number of ports were going to need to be configured.&lt;/p&gt;</description></item><item><title>Nornir Transform Function</title><link>https://josh-v.com/nornir-transform-3/</link><pubDate>Tue, 04 Jun 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/nornir-transform-3/</guid><description>&lt;p&gt;Nornir includes a function that allows for the transformation of inventory data, a feature integrated within the Nornir platform itself. The documentation for Nornir 3.0 is somewhat sparse regarding the usage of Transform functions, so I often refer to the more comprehensive &lt;a href="https://nornir.readthedocs.io/en/v2.5.0/howto/transforming_inventory_data.html#Modifying-hosts%27-data" target="_blank" rel="noreferrer"&gt;2.5 documentation&lt;/a&gt;. According to the Nornir documentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A transform function is a plugin that manipulates the inventory independently from the inventory plugin used. Useful to extend data using the environment, a secret store or similar.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Redux: WAN Design</title><link>https://josh-v.com/redux-wan-design/</link><pubDate>Fri, 31 May 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/redux-wan-design/</guid><description>&lt;p&gt;In this post, we&amp;rsquo;ll dive into WAN design and address a common question that I was provided with in the 2000s: &amp;ldquo;My home internet costs only $35 per month. Why do we spend $xxx per month per circuit?&amp;rdquo;&lt;/p&gt;</description></item><item><title>Bindkey For Autocompletion</title><link>https://josh-v.com/bindkey-search/</link><pubDate>Wed, 29 May 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/bindkey-search/</guid><description>&lt;p&gt;I have been looking at migrating over to the &lt;a href="https://starship.rs" target="_blank" rel="noreferrer"&gt;Starship shell&lt;/a&gt; for a little while. The allure of running a rust shell prompt that gives me a ton of information is what I look for in a shell prompt. Such as the prompt below:&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;joshv in 🌐 my_device in nautobot on  u/jvanderaa-update_install_home_doc is 📦 v2.2.5b1 via 🐍 v3.11.9 (nautobot-py3.11)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The default installation however did not get the same behavior as my previous Oh My Zsh set up with the zsh-autocompletions and zsh-syntaxhighlighting. Whenever I would hit the up arrow key, the system would cycle through the commands as comes default with zsh/bash. But I was looking for subcommand scrolling. Such as the following command sequence.&lt;/p&gt;</description></item><item><title>Migration to MkDocs Material Blog Theme!</title><link>https://josh-v.com/to-mkdocs/</link><pubDate>Tue, 28 May 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/to-mkdocs/</guid><description>&lt;p&gt;So, if you are a returning user you notice something that is a little bit different. I have migrated my blog site to a new site generator and format. I am now using [mkdocs-material] blog them that was introduced in late 2022 to the platform. The migration was not too painful to make, but I&amp;rsquo;m feeling in a good place about it at this point. The blog has been on a journey so far. It started off with a Jekyll themed site which I liked. Then I decided to move onto something that has a little more development. So I moved into the land of Hugo.&lt;/p&gt;</description></item><item><title>Automation Redux: Firewall Tables</title><link>https://josh-v.com/firewall-tables/</link><pubDate>Tue, 21 May 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/firewall-tables/</guid><description>&lt;p&gt;Today I&amp;rsquo;m going to dive into my getting started with network automation, and perhaps my first successful automation. There are definitely some things that I would re-do and complete differently, and some things that I consider a success.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m working on a new series within my blog, about how I would look to have done things differently than I had done before, with the tooling and knowledge that I now have, years later. This is the first in the series.&lt;/p&gt;</description></item><item><title>Nautobot: Custom Links</title><link>https://josh-v.com/nautobot-custom-link/</link><pubDate>Sun, 28 Apr 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-custom-link/</guid><description>&lt;p&gt;One of my favorite features of Nautobot that may not be well known is the capability to put a button on pages that take you to other locations. This can be helpful when lining up the source of truth as that first place that you go, the idea of adding custom links will just help to enforce that as the first place to go. When you look at the idea of a source of truth to help feed other systems, you start to see the topology like below.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="image-8.png" alt="Nautobot Source of Truth for Other Systems" class="mx-auto my-0 rounded-md"&gt;&lt;/figure&gt;&lt;/p&gt;</description></item><item><title>Nautobot App Baking Cookies</title><link>https://josh-v.com/nautobot-app-cookie/</link><pubDate>Thu, 11 Jan 2024 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-app-cookie/</guid><description>&lt;p&gt;Just recently released at the beginning of 2024 is a project that I am super excited to see in the open source by Network to Code. This is the Nautobot App cookiecutter template. This may already be the biggest thing to become available for Network Automation in 2024. I know, its fresh at this point in the year, but this is something that is going to make getting started with your own Nautobot Application so much quicker.&lt;/p&gt;</description></item><item><title>2023 Automation Review: Top 3</title><link>https://josh-v.com/2023-automation-review-top-3/</link><pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/2023-automation-review-top-3/</guid><description>&lt;p&gt;The year of 2023 I think may have had some of the biggest leaps in the Network Automation capabilities that are being delivered by some of the best in the business. With Nautobot&amp;rsquo;s Golden Config App adding the ability to complete configuration remediation and Ansible release Event Driven Ansible, there are a couple of powerful tools to help you with your Network Automation. And all with a great new conference addition specific to Network Automation.&lt;/p&gt;</description></item><item><title>Slack Power Keyboard</title><link>https://josh-v.com/slack-power-keyboard/</link><pubDate>Sat, 18 Nov 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/slack-power-keyboard/</guid><description>&lt;p&gt;Recently Slack started introducing a new UI that is bringing back the importance of knowing keyboard shortcuts. Keyboard shortcuts within Slack are immensely helpful in my day to day, and it is essential for me being able to keep up with what is going on within my organization and some of the other 20 Slack organizations that I have joined. So much so, I don&amp;rsquo;t believe that once I am in the Slack UI on my machines, I am ever touching the mouse to get from one place to another. About the only time I may need to use the mouse is to scroll back in the thread, so I&amp;rsquo;m not even clicking when using the mouse.&lt;/p&gt;</description></item><item><title>Nautobot: How I Use Tags For VMs</title><link>https://josh-v.com/nautobot-how-i-use-tags-for-vms/</link><pubDate>Tue, 26 Sep 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-how-i-use-tags-for-vms/</guid><description>&lt;p&gt;In my home environment I am leveraging Nautobot as my source of truth. This is for the network, which is probably not all that interesting in my home environment, and my virtual machines. Why am I tracking my virtual machines in Nautobot? Simple, to help automate them. I think that this is a clever methodology to help use tags and to get automation working within the environment. This same type of thing may be applicable to your network environment as well.&lt;/p&gt;</description></item><item><title>Designing WAN Availability</title><link>https://josh-v.com/designing-wan-availability/</link><pubDate>Sat, 02 Sep 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/designing-wan-availability/</guid><description>&lt;p&gt;One of my hot topics in my past that I haven&amp;rsquo;t seen written about often is the calculation of WAN availability and what the design is built for. There is often the number of 9&amp;rsquo;s whether that is 5 9s or 3 9s or otherwise, where do you start? Well, in the past the &lt;a href="https://www.eventhelix.com/fault-handling/system-reliability-availability/" target="_blank" rel="noreferrer"&gt;post by EventHelix.com&lt;/a&gt; outlines system reliability. It talks about designing systems in parallel and in serial. What does that mean. Well, I am going to take the system availability and bring it into the Wide Area Network, which really could be brought to any environment that has a system uptime requirement as a way to calculate and validate the dollars that you are requesting. I am hoping that this will help you to be able to answer questions such as &amp;ldquo;What if we added another service provider?&amp;rdquo; or &amp;ldquo;What if we changed out hardware for a smaller/larger hardware choice?&amp;rdquo;.&lt;/p&gt;</description></item><item><title>DevNet Expert Workstation On Debian</title><link>https://josh-v.com/devnet-expert-workstation-on-debian/</link><pubDate>Wed, 23 Aug 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/devnet-expert-workstation-on-debian/</guid><description>&lt;p&gt;As part of my journey of using my Debian based Dev Workstation, as well as my studies towards completion of the DevNet Expert, I wanted to get up and running with the &lt;a href="https://learningnetwork.cisco.com/s/article/devnet-expert-equipment-and-software-list" target="_blank" rel="noreferrer"&gt;DevNet Workstation&lt;/a&gt; example that would help to become familiar with the environment that would be found at the live exam. There were a few small quirks along the way, so I thought I would go ahead and create a post about how to get started.&lt;/p&gt;</description></item><item><title>Debian Finger Print Login</title><link>https://josh-v.com/debian-finger-print-login/</link><pubDate>Sat, 19 Aug 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/debian-finger-print-login/</guid><description>&lt;p&gt;As a long time MacBook user and of recent years on the M1 using the TouchID system that allows for fingerprint authentication, this is something that I wanted to get to work pretty quickly for myself. I had tried a couple of different options to get fingerprint reading to work. Through the 3 methods, I finally have one that works, and I figured it would be worth the share.&lt;/p&gt;
&lt;h2 id="attempted-routes" class="relative group"&gt;Attempted Routes &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#attempted-routes" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Now some of these may seem foolish as I write after the fact. But I had some reason to think that there would be success. The three options that I tried (only the last/third one worked):&lt;/p&gt;</description></item><item><title>Nautobot Environment File</title><link>https://josh-v.com/nautobot-environment-file/</link><pubDate>Thu, 17 Aug 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-environment-file/</guid><description>&lt;p&gt;Within Nautobot there are many ways to be able to get the Nautobot environment running. Environment variables are used quite a bit in the Docker environment following best practice principles set forth in the &lt;a href="https://12factor.net/" target="_blank" rel="noreferrer"&gt;12 Factor App&lt;/a&gt;. The use of environment variables is helpful for working through the various stages of an application to production. The installation instructions leverage a single environment variable &lt;code&gt;NAUTOBOT_ROOT&lt;/code&gt; and that is set in the SystemD files shown below:&lt;/p&gt;</description></item><item><title>Upgrade Nautobot Python Version in Virtual Machine</title><link>https://josh-v.com/upgrade-nautobot-python-virtual-machine/</link><pubDate>Mon, 14 Aug 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/upgrade-nautobot-python-virtual-machine/</guid><description>&lt;p&gt;One observation lately is that Python is moving along quickly with new versions and new EOLs. Along with needing to make these updates, the applications that Python uses will also need to be moving along. Nautobot is my favorite, and in my opinion the best SOT platform available in the open source ecosystem today. So let&amp;rsquo;s dive into the updating of the Python version.&lt;/p&gt;
&lt;p&gt;For this post, I&amp;rsquo;ve created a new Rocky 8 Virtual Machine to be the host. See the note below for the reasoning. This will start off with a Nautobot &lt;a href="https://docs.nautobot.com/projects/core/en/stable/installation/" target="_blank" rel="noreferrer"&gt;install&lt;/a&gt; from the Nautobot docs. I won&amp;rsquo;t dive into all of that, assume that is the starting point with a fresh Nautobot application.&lt;/p&gt;</description></item><item><title>Using Google Earth for Golf</title><link>https://josh-v.com/google-earth-golf/</link><pubDate>Sat, 05 Aug 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/google-earth-golf/</guid><description>&lt;p&gt;I&amp;rsquo;m going to diverge a small bit from the straight network automation space that I have blogged about primarily and dive a small bit into the world of using Google Earth to help prepare for your golf game. Upcoming, I&amp;rsquo;m playing in a Minnesota Golf event at two courses in late August. I&amp;rsquo;m going to put together a green book for myself and figure this would be a great topic to touch on how I&amp;rsquo;m going about this activity.&lt;/p&gt;</description></item><item><title>Workstation Troubleshooting 2023</title><link>https://josh-v.com/workstation-troubleshooting-2023/</link><pubDate>Sat, 29 Jul 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/workstation-troubleshooting-2023/</guid><description>&lt;p&gt;In my &lt;a href="https://josh-v.com/desktop-build-2023/" target="_blank" rel="noreferrer"&gt;previous post&lt;/a&gt; I wrote about a workstation that I was working on building. It took an incredibly long time to get up and into a stable environment. But I have finally accomplished stability (hoping to not jinx it here with the post). I went through a fair bit of troubleshooting to get to this point.&lt;/p&gt;
&lt;h2 id="symptom" class="relative group"&gt;Symptom &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#symptom" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;The symptom that was having instability was that the system would freeze randomly. There was not a particular application or otherwise that would be point me to an application that was causing the failures. The system would just freeze overnight or at the start of getting into the desktop UI.&lt;/p&gt;</description></item><item><title>Desktop Build 2023</title><link>https://josh-v.com/desktop-build-2023/</link><pubDate>Sun, 09 Jul 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/desktop-build-2023/</guid><description>&lt;p&gt;Here I&amp;rsquo;m going to dive into what I&amp;rsquo;m planning to build out for my next desktop here in 2023. Prime Day is nearly upon us, and I&amp;rsquo;m anticipating (but do not know for sure) that prices on some of the gear that I&amp;rsquo;m looking for will be available at a good price. I&amp;rsquo;m also looking to build out a bigger system in order to run some intense VMs up coming.&lt;/p&gt;</description></item><item><title>Nautobot: Get IP Addresses From Nautobot</title><link>https://josh-v.com/nautobot-get-ip-address-info/</link><pubDate>Fri, 07 Jul 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-get-ip-address-info/</guid><description>&lt;p&gt;One of Nautobot&amp;rsquo;s primary functions is to serve as an IPAM solution. Within that realm, the application needs to provide a method to get at IP address data for a device, quickly and easily. In this post I will review three prominent methods to get an IP address from Nautobot. It will demonstrate getting the address via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nautobot REST API
&lt;ul&gt;
&lt;li&gt;curl&lt;/li&gt;
&lt;li&gt;Python Requests&lt;/li&gt;
&lt;li&gt;GoLang HTTP&lt;/li&gt;
&lt;li&gt;pynautobot&lt;/li&gt;
&lt;li&gt;Ansible Lookup&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nautobot GraphQL API
&lt;ul&gt;
&lt;li&gt;curl&lt;/li&gt;
&lt;li&gt;Python Requests&lt;/li&gt;
&lt;li&gt;GoLang HTTP&lt;/li&gt;
&lt;li&gt;pynautobot&lt;/li&gt;
&lt;li&gt;Ansible Lookup&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each method I will demonstrate how to get the IP address for Loopback0 on the &lt;a href="https://demo.nautobot.com/dcim/devices/5e7c0bdd-254b-44cb-bf7c-2f2560082f6d/?tab=main" target="_blank" rel="noreferrer"&gt;device&lt;/a&gt; &lt;code&gt;bre01-edge-01&lt;/code&gt; within the demo instance of Nautobot. This device has 62 interfaces, so being able to filter down to which interface IP address we are looking for makes sense.&lt;/p&gt;</description></item><item><title>Nautobot Remote Validation</title><link>https://josh-v.com/nautobot-remote-validation/</link><pubDate>Wed, 05 Jul 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-remote-validation/</guid><description>&lt;p&gt;In this post I&amp;rsquo;m going to dive into a bit more on the Nautobot custom validators. This is a powerful validation tool that will allow for you to write your own validation capability, including in this demonstration on how to complete a validation against a remote API endpoint. The custom validators are a part of the Nautobot App extension capability. This allows for custom code to be written to validate data upon the &lt;code&gt;clean()&lt;/code&gt; method being called, which is used in the majority of API calls and form inputs of Nautobot.&lt;/p&gt;</description></item><item><title>Slack Canvas</title><link>https://josh-v.com/slack-canvas/</link><pubDate>Wed, 05 Jul 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/slack-canvas/</guid><description>&lt;span class="flex"&gt;
 &lt;span
 class="ms-1 rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"
 &gt;
 
Hot Take:

 &lt;/span&gt;
&lt;/span&gt;


&lt;p&gt;Newly released (at some point anyway) is Slack Canvas, what looks to be a little bit of on demand wiki, collaboration space, and possibly (based on marketing materials) workflow organizer. This came to light as a &amp;ldquo;pop up&amp;rdquo; when I went into a Slack window on my mobile. Being a curious person and someone that is willing to try out new things I jumped right in.&lt;/p&gt;</description></item><item><title>Poetry Fix</title><link>https://josh-v.com/nornir-brief/</link><pubDate>Thu, 29 Jun 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/nornir-brief/</guid><description>&lt;p&gt;The Python &lt;a href="https://python-poetry.org/" target="_blank" rel="noreferrer"&gt;Poetry&lt;/a&gt; is our go to package management system thus far, you can see that in all of the Python projects that Network to Code open sources, such as &lt;a href="https://docs.nautobot.com/projects/core/en/stable/" target="_blank" rel="noreferrer"&gt;Nautobot&lt;/a&gt;, &lt;a href="https://pyntc.readthedocs.io/en/latest/user/lib_overview/" target="_blank" rel="noreferrer"&gt;pyntc&lt;/a&gt;, &lt;a href="https://github.com/networktocode/network-importer" target="_blank" rel="noreferrer"&gt;network-importer&lt;/a&gt;, and &lt;a href="https://github.com/networktocode/ntc-templates" target="_blank" rel="noreferrer"&gt;NTC-Templates&lt;/a&gt;. Lately though, I&amp;rsquo;ve been having some challenges when my HomeBrew updates happen and my system Python gets updated. I&amp;rsquo;ve been able to recover with the help of the same few pages I land on from my Google searches. But since I&amp;rsquo;ve done this twice now, I&amp;rsquo;m using this post to document the fix as much as for myself, but for anyone else that may come across Poetry issues.&lt;/p&gt;</description></item><item><title>Nautobot Secrets - Hashicorp Vault</title><link>https://josh-v.com/nautobot-secrets-hashicorp-vault/</link><pubDate>Tue, 27 Jun 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-secrets-hashicorp-vault/</guid><description>&lt;p&gt;With Nautobot, one of the things that came up was how to work with secrets. Nautobot itself is not the place to maintain secrets, as it is not a vault. There may be some good cryptographic libraries out to handle this, but by its nature, that is not the intent. So Nautobot has written methods to be able to retrieve secrets from proper vault sources and be able to leverage them. These can be tricky to get set up however. I had struggled for a while myself. So now that I have it working, I thought it would be a good time to have a quick personal blog about it.&lt;/p&gt;</description></item><item><title>Nautobot Jobs in Jobs Root</title><link>https://josh-v.com/nautobot-jobs-root-in-root/</link><pubDate>Sat, 17 Jun 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-jobs-root-in-root/</guid><description>&lt;p&gt;Today I was working to demonstrate how to get started with Nautobot Jobs within the Jobs root of Nautobot. This is not a pattern that I develop often, as I am typically developing Jobs within a plugin as my development standard. More to come on that later. During this case, the ask was to build a Job that would connect to a network device. I had a few troubles that I didn&amp;rsquo;t want to have to work through on a call that had limited time and that was a screen share. So I am taking to working on this via a blog post to share, and hopefully will be helpful for others as well.&lt;/p&gt;</description></item><item><title>Moving to Hugo</title><link>https://josh-v.com/moving-to-hugo/</link><pubDate>Thu, 15 Jun 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/moving-to-hugo/</guid><description>&lt;p&gt;In this post I dive into more about my migration of the blog site to Hugo static content system. I will dive into primarily the why and how during this post. This also dives into the few changes that I had to make in order to make the change over from a Jekyll site to the Hugo site.&lt;/p&gt;
&lt;h2 id="why-migrate" class="relative group"&gt;Why Migrate? &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#why-migrate" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;While I do not have a ton of posts, I do have a few that I like to get out into the wild periodically. As I looked around the landscape of the blog pages these days, I was starting to see my page a bit dated. I had previously went with the Jekyll Minimal Mistakes theme. The theme itself was wonderful and quite extensible. However, one of my concerns besides the look was the lack of updates coming out on the theme. Not that I was going to be taking advantage of every new feature, there seems to have been a slow down.&lt;/p&gt;</description></item><item><title>About</title><link>https://josh-v.com/about/</link><pubDate>Tue, 13 Jun 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/about/</guid><description>&lt;p&gt;I&amp;rsquo;m a veteran Network Engineer who has finally caught on how to put together CS teachings with a Networking degree. Working on doing almost all things via automation.&lt;/p&gt;
&lt;p&gt;Self re-taught network/automation engineer. I&amp;rsquo;ve primarily been digging around within Ansible and Python. I&amp;rsquo;ve been doing Python networking since 2015 when a speaker came in and talked about how he had put together a NOC for a conference heavily leveraging automation capabilities via Python. Since then I have been going deep down the rabbit hole that is Network Automation.&lt;/p&gt;</description></item><item><title>Books</title><link>https://josh-v.com/book/</link><pubDate>Tue, 13 Jun 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/book/</guid><description>&lt;h1 id="books" class="relative group"&gt;Books &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#books" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;For several years I have been providing content in blog posts. This has evolved into writing books as well.&lt;/p&gt;
&lt;h2 id="open-source-network-management" class="relative group"&gt;Open Source Network Management &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#open-source-network-management" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;img src="https://josh-v.com/images/open-source-network-management.png" alt="Open Source Network Management Cover" class="float-right ml-4 mb-4 w-1/3 rounded-lg shadow-lg"&gt;
&lt;p&gt;I have created a book that is all about getting started with open source tools. &lt;a href="https://leanpub.com/opensourcenetworkmanagement" target="_blank" rel="noreferrer"&gt;Open Source Network Management&lt;/a&gt;, a book about getting started with using open source tools to manage your network environment. This book guides one along the way of &lt;em&gt;installing&lt;/em&gt;, &lt;em&gt;initial configuration&lt;/em&gt;, and basic ways to use the tools. All these are done with installing on a single virtual machine or on an Intel NUC system.&lt;/p&gt;</description></item><item><title>Links</title><link>https://josh-v.com/links/</link><pubDate>Tue, 13 Jun 2023 00:00:00 +0000</pubDate><guid>https://josh-v.com/links/</guid><description>&lt;h2 id="my-content-on-other-sites" class="relative group"&gt;My Content on Other Sites &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#my-content-on-other-sites" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=GyQf5F0gr3w" target="_blank" rel="noreferrer"&gt;Using NetBox as a SoT for Ansible + Diving into Ansible Filters&lt;/a&gt;&lt;br&gt;
In the video I go over NetBox as your Source of Truth, and walk one through getting started with
using Ansible as that Source of Truth. In the later portion I go through using Ansible Filters to
audit NetBox data to the device data.&lt;/p&gt;</description></item><item><title>Nautobot IP Provisioning</title><link>https://josh-v.com/nautobot-ip-provisioning/</link><pubDate>Mon, 05 Jun 2023 07:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-ip-provisioning/</guid><description>&lt;p&gt;One of the great things about building an enterprise system, is being able to get systems to work cohesively amongst themselves to bring a complete solution. One of the workflows that is often required in a static IP address environment is the need to provide static IP addresses to hosts on a network segment. When using an IPAM (IP Address Management) solution such as Nautobot, the APIs and SDKs/modules made available for use in automation workflows is paramount to having the cohesion to make a seamless IT system.&lt;/p&gt;</description></item><item><title>GraphQL - Aliasing</title><link>https://josh-v.com/graphql-aliasing/</link><pubDate>Sat, 17 Dec 2022 07:00:00 +0000</pubDate><guid>https://josh-v.com/graphql-aliasing/</guid><description>&lt;p&gt;One of the features that I find myself using periodically that I think is underrated as far as using GraphQL is its ability to alias return keys in the response. This can be extremely helpful for developers writing applications, as it allows them to have the API response with the keys they are looking for. I have found this feature particularly useful when working on applications like Meraki and Nautobot together. In Nautobot a place is typically defined as the key &lt;code&gt;site&lt;/code&gt;. In the Meraki world this is commonly set up as a &lt;code&gt;network&lt;/code&gt;. Without GraphQL&amp;rsquo;s alias feature, the developer would need to translate this data over.&lt;/p&gt;</description></item><item><title>Python Pseudo Code</title><link>https://josh-v.com/draft/python-pseudo-code/</link><pubDate>Sun, 25 Sep 2022 07:00:00 +0000</pubDate><guid>https://josh-v.com/draft/python-pseudo-code/</guid><description>&lt;p&gt;One of my favorite things to do as I get started with writing a piece of automation or code, is to lay out the design with pseudo code in the form of comments. I will do this with both Python and Ansible automations, and is a great way to get started on writing your automation or code. What pseudo code does for you is to layout the process at which you wish to accomplish a particular goal. And from there, you write the code that corresponds to the plain English wording of what is being done. By starting with pseudo code, you are starting with the process first. Then working on getting to the details of the code as you go.&lt;/p&gt;</description></item><item><title>Automation Inventory</title><link>https://josh-v.com/automation-inventory/</link><pubDate>Sat, 07 May 2022 07:00:00 +0000</pubDate><guid>https://josh-v.com/automation-inventory/</guid><description>&lt;p&gt;This is a topic that I&amp;rsquo;m fairly opinionated on as of late is looking at what should be maintained within an inventory and the strategy of how to set up the inventory.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For the case of this blog post, I am going to use the term playbook to represent the automation being run. This is yes an Ansible term, but also apply this as your automation run that is using Nornir or any other automation framework.&lt;/p&gt;</description></item><item><title>DevNet Expert - Starting Point</title><link>https://josh-v.com/devnet-expert-starting-point/</link><pubDate>Wed, 13 Oct 2021 07:00:00 +0000</pubDate><guid>https://josh-v.com/devnet-expert-starting-point/</guid><description>&lt;p&gt;This week Cisco announced the DevNet Expert certification exam. This exam and certification is something that I have been looking forward to for a long while. Dating back to the announcement of the certifications that were being provided. This was announced at Cisco Live 2019 in San Diego. I had started to lose some hope that this would become a reality with how long of a delay from the initial announcement to the announcement of availability. But it is now here. So here we go.&lt;/p&gt;</description></item><item><title>Nautobot Jobs - Your Custom API Endpoint</title><link>https://josh-v.com/nautobot-jobs-execution/</link><pubDate>Mon, 11 Oct 2021 07:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-jobs-execution/</guid><description>&lt;p&gt;One of the best features of &lt;a href="https://nautobot.readthedocs.io/en/stable/" target="_blank" rel="noreferrer"&gt;Nautobot&lt;/a&gt; as a Network Automation Platform is the ability to create your own custom code. This is executed via a &lt;a href="https://nautobot.readthedocs.io/en/stable/additional-features/jobs/" target="_blank" rel="noreferrer"&gt;job&lt;/a&gt;. What makes Nautobot unique is its ability to integrate with a &lt;a href="https://nautobot.readthedocs.io/en/stable/models/extras/gitrepository/" target="_blank" rel="noreferrer"&gt;Git repository&lt;/a&gt; to get those jobs and code for use into Nautobot. This provides perhaps the simplest, authenticated, and logged methodology for building your own API endpoints.&lt;/p&gt;
&lt;p&gt;Nautobot supplies an &lt;a href="https://nautobot.readthedocs.io/en/stable/additional-features/jobs/#via-the-api" target="_blank" rel="noreferrer"&gt;API endpoint&lt;/a&gt; to start execution of jobs. The big deal about why you would want to do this inside of Nautobot (even if you do not have any other data inside of Nautobot, but you should add data, it is a perk) is that you get an authentication mechanism with the Nautobot token setup and a logging mechanism. With Nautobot user accounts you can create tokens that will handle the API authentication. This is helpful that you do not need to add that into your own Flask, FastAPI, or Django application yourself. This is the same for the logging mechanism. Every job execution provides a log of the execution and the result.&lt;/p&gt;</description></item><item><title>New Book - Open Source Network Management</title><link>https://josh-v.com/book-open-source-network-management/</link><pubDate>Tue, 14 Sep 2021 07:00:00 +0000</pubDate><guid>https://josh-v.com/book-open-source-network-management/</guid><description>&lt;p&gt;Earlier this month I was able to hit the &lt;em&gt;publish&lt;/em&gt; button on a new book - Open Source Network Management. The book dives into getting started with several open source network management tools. It is meant as a guide to help further your experience with using and installing open source tools, all on a single VM/host. The size of the host is meant to have minimal capital investment, in the way of a single NUC or a minimal VM deployed on a hypervisor in your environment.&lt;/p&gt;</description></item><item><title>Nautobot Ansible Collection: Devices</title><link>https://josh-v.com/nautobot-ansible-devices/</link><pubDate>Sun, 28 Mar 2021 08:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-ansible-devices/</guid><description>&lt;p&gt;All of the work through the modules thus far in the series have brought us to what we all want to see. How to get or update device information inside of Nautobot. Adding of sites, device types, device roles are required to get us to this point. Now you can see how to add a device to Nautobot using the networktocode.nautobot.device module.&lt;/p&gt;
&lt;p&gt;There are many optional parameters for the module specifically. I encourage you to take a look at the module documentation (linked below) in order to get a good sense of all of the options available. The required parameters for a device that is present are:&lt;/p&gt;</description></item><item><title>Nautobot Ansible Collection: Device Types</title><link>https://josh-v.com/nautobot-ansible-device-types/</link><pubDate>Mon, 15 Mar 2021 06:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-ansible-device-types/</guid><description>&lt;p&gt;A device type is the next piece in the Nautobot Device onboarding requirements. The device type corresponds to the model number of the hardware (or virtual machine). This is where you are able to template out devices during their creation. So if you have a console port on a device type, that console port will be created when you create the device. However, &lt;strong&gt;there is NOT&lt;/strong&gt; a relationship built between the device type and the device. If the device type gets updated after the device is created, the device itself is &lt;strong&gt;not&lt;/strong&gt; updated.&lt;/p&gt;</description></item><item><title>Nautobot Ansible Collection: Device Roles</title><link>https://josh-v.com/nautobot-ansible-device-roles/</link><pubDate>Sun, 14 Mar 2021 08:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-ansible-device-roles/</guid><description>&lt;p&gt;A device role is aptly named, the role of the device. This is likely to be something that is meaningful to your organization and could change. For example you may have the 3 tier system of Core, Distribution, and Access layer environments. These are just fine. So you would want to have the roles there to reflect this reality. You may have leaf-spine environments, there are two more roles. And in my past I have also had roles that would indicate that there are dedicated DMZ, WAN edge, Internet edge devices. So this is the place to set this.&lt;/p&gt;</description></item><item><title>Nautobot Ansible Collection: Platforms</title><link>https://josh-v.com/nautobot-ansible-platforms/</link><pubDate>Sun, 14 Mar 2021 07:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-ansible-platforms/</guid><description>&lt;p&gt;Platforms are an optional item when adding devices into Nautobot. The platform is the OS that you are going to be using. Most often this is used to help identify which driver your automation platform is going to be using. Specifically the slug of the platform is what needs to match. So in the terms of Ansible (since we are using Ansible to populate Nautobot), you will want to set Cisco IOS devices to &lt;strong&gt;ios&lt;/strong&gt;. By having the slug match the automation platform name you have that information in your inventory. For these reasons I strongly recommend setting the Platform for devices.&lt;/p&gt;</description></item><item><title>Nautobot Ansible Collection: Manufacturers</title><link>https://josh-v.com/nautobot-ansible-manufacturers/</link><pubDate>Sun, 14 Mar 2021 06:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-ansible-manufacturers/</guid><description>&lt;p&gt;Adding your manufacturers via code is the easy way to get started with your Nautobot devices. Immediately after adding Sites, the next thing to get going when using Nautobot as your Source of Truth is to add in Manufacturers. These are just that, who makes the gear that you use. For this demonstration you will see adding just a few manufacturers. I&amp;rsquo;m not necessarily picking on any vendors and who should or shouldn&amp;rsquo;t be here. It is just what my background brings.&lt;/p&gt;</description></item><item><title>Nautobot Ansible Collection: Site Module</title><link>https://josh-v.com/nautobot-ansible-sites/</link><pubDate>Sat, 13 Mar 2021 06:00:00 +0000</pubDate><guid>https://josh-v.com/nautobot-ansible-sites/</guid><description>&lt;p&gt;This post dives into the &lt;a href="https://nautobot-ansible.readthedocs.io/en/latest/" target="_blank" rel="noreferrer"&gt;Nautobot Ansible Content Collection&lt;/a&gt; sites module to create/update a &lt;a href="https://nautobot-ansible.readthedocs.io/en/latest/plugins/site_module.html" target="_blank" rel="noreferrer"&gt;Site&lt;/a&gt;. This series for the beginning will be a clone of what I had done previously with NetBox. So some of the language will be very similar.&lt;/p&gt;
&lt;p&gt;When it comes to creating and deleting sites in Nautobot, the question of should I be using Ansible to do this? In my opinion this is a &lt;strong&gt;yes it should be&lt;/strong&gt;. Most likely an IT tool is not the tool that will be the Source of Truth as it comes to physical sites involved in an organization. So this module in particular that should be looked at and put into production use with Ansible.&lt;/p&gt;</description></item><item><title>Nautobot Ansible Collection: Installation</title><link>https://josh-v.com/collection_install/</link><pubDate>Wed, 10 Mar 2021 07:00:00 +0000</pubDate><guid>https://josh-v.com/collection_install/</guid><description>&lt;p&gt;This is the first post as I shift into taking a closer look at the Nautobot Ansible Collection. The collection includes many of the needed modules to effectively manage your Nautobot environment. If This will take a deeper dive into several of the components of the &lt;strong&gt;inventory plugin&lt;/strong&gt;, but not all of the options. The documentation for all of the collection can be found at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ReadTheDocs: &lt;a href="https://nautobot-ansible.readthedocs.io" target="_blank" rel="noreferrer"&gt;https://nautobot-ansible.readthedocs.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Galaxy Page: &lt;a href="https://galaxy.ansible.com/networktocode/nautobot" target="_blank" rel="noreferrer"&gt;https://galaxy.ansible.com/networktocode/nautobot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This post is going to give information on how to install the collection as it may be applicable to every post in the series (as they get posted).&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Devices</title><link>https://josh-v.com/netbox-ansible-devices/</link><pubDate>Sun, 31 Jan 2021 08:00:00 +0000</pubDate><guid>https://josh-v.com/netbox-ansible-devices/</guid><description>&lt;p&gt;All of the work through the modules thus far in the series have brought us to what we all want to see. How to get or update device information inside of NetBox. Adding of sites, device types, device roles are required to get us to this point. Now you can see how to add a device to NetBox using the netbox.netbox.netbox_device module.&lt;/p&gt;
&lt;div class="flex rounded-md bg-primary-100 px-4 py-3 dark:bg-primary-900"&gt;
 &lt;span class="pe-3 text-primary-400"&gt;
 &lt;span class="icon relative inline-block px-1 align-text-bottom"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="dark:text-neutral-300"&gt;This post was created when NetBox was an open source project used often in my automation framework. I have moved on to using &lt;a href="https://www.nautobot.com" target="_blank" rel="noreferrer"&gt;Nautobot&lt;/a&gt; due to the project vision and providing a methodology that will drive network automation forward further. You may want to take a look at it yourself.&lt;/span&gt;
&lt;/div&gt;

&lt;p&gt;There are many optional parameters for the module specifically. I encourage you to take a look at the module documentaation (linked below) in order to get a good sense of all of the options available. The required parameters for a device that is present are:&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Device Roles</title><link>https://josh-v.com/netbox-ansible-device-roles/</link><pubDate>Sun, 31 Jan 2021 06:00:00 +0000</pubDate><guid>https://josh-v.com/netbox-ansible-device-roles/</guid><description>&lt;p&gt;A device role is aptly named, the role of the device. This is likely to be something that is meaningful to your organization and could change. For example you may have the 3 tier system of Core, Distribution, and Access layer environments. These are just fine. So you would want to have the roles there to reflect this reality. You may have leaf-spine environments, there are two more roles. And in my past I have also had roles that would indicate that there are dedicated DMZ, WAN edge, Internet edge devices. So this is the place to set this.&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Device Types</title><link>https://josh-v.com/netbox-ansible-device-types/</link><pubDate>Sun, 31 Jan 2021 06:00:00 +0000</pubDate><guid>https://josh-v.com/netbox-ansible-device-types/</guid><description>&lt;p&gt;A device type is the next piece in the NetBox Device onboarding requirements. The device type corresponds to the model number of the hardware (or virtual machine). This is where you are able to template out devices during their creation. So if you have a console port on a device type, that console port will be created when you create the device. However, &lt;strong&gt;there is NOT&lt;/strong&gt; a relationship built between the device type and the device. If the device type gets updated after the device is created, the device itself is &lt;strong&gt;not&lt;/strong&gt; updated.&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Manufacturers</title><link>https://josh-v.com/netbox-ansible-manufacturers/</link><pubDate>Sun, 20 Dec 2020 06:00:00 +0000</pubDate><guid>https://josh-v.com/netbox-ansible-manufacturers/</guid><description>&lt;p&gt;Adding your manufacturers via code is the easy way to get started with your NetBox devices. Immediately after adding Sites, the next thing to get going when using NetBox as your Source of Truth is to add in Manufacturers. These are just that, who makes the gear that you use. For this demonstration you will see adding just a few manufacturers. I&amp;rsquo;m not necessarily picking on any vendors and who should or shouldn&amp;rsquo;t be here. It is just what my background brings.&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Platforms</title><link>https://josh-v.com/netbox-ansible-platforms/</link><pubDate>Sun, 20 Dec 2020 06:00:00 +0000</pubDate><guid>https://josh-v.com/netbox-ansible-platforms/</guid><description>&lt;p&gt;Platforms are an optional item when adding devices into NetBox. The platform is the OS that you are going to be using. Most often this is used to help identify which driver your automation platform is going to be using. Specifically the slug of the platform is what needs to match. So in the terms of Ansible (since we are using Ansible to populate NetBox), you will want to set Cisco IOS devices to &lt;strong&gt;ios&lt;/strong&gt;. By having the slug match the automation platform name you have that information in your inventory. For these reasons I strongly recommend setting the Platform for devices.&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Site Module</title><link>https://josh-v.com/netbox-ansible-sites/</link><pubDate>Sun, 13 Dec 2020 06:00:00 +0000</pubDate><guid>https://josh-v.com/netbox-ansible-sites/</guid><description>&lt;p&gt;This post dives into the &lt;a href="https://netbox-ansible-collection.readthedocs.io/en/latest/" target="_blank" rel="noreferrer"&gt;NetBox Ansible Content Collection&lt;/a&gt; module to create/update a &lt;a href="https://netbox-ansible-collection.readthedocs.io/en/latest/plugins/modules/netbox_site/netbox.netbox.netbox_site_module.html" target="_blank" rel="noreferrer"&gt;Site&lt;/a&gt;. As I start into this series on looking at the modules that create/update/delete data from NetBox, the question that I keep asking myself is should I be looking at the modules that are creating/updating/deleting items? The reason that I ask this to myself is because I am a firm believer that automation should be coming from NetBox as its Source of Truth (SoT). You can hear/read plenty more about these thoughts on posts and videos here:&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Lookup Plugin</title><link>https://josh-v.com/netbox-ansible-lookup-plugin/</link><pubDate>Sat, 12 Dec 2020 08:00:00 +0000</pubDate><guid>https://josh-v.com/netbox-ansible-lookup-plugin/</guid><description>&lt;p&gt;The NetBox lookup plugin is to &lt;strong&gt;get information&lt;/strong&gt; out of NetBox for use within Ansible. This uses &lt;a href="https://github.com/digitalocean/pynetbox" target="_blank" rel="noreferrer"&gt;pynetbox&lt;/a&gt; to query the NetBox API for the information requested. On top of being helpful in gathering data from NetBox (when it is not your inventory source), but it is extremely helpful in larger NetBox deployments when compared to using the URI module as well. If you wish to use NetBox as your inventory source, you should definitely read my previous post on getting started with the &lt;a href="https://josh-v.com/netbox_ansible_collection/netbox-ansible-inventory_plugin/" target="_blank" rel="noreferrer"&gt;NetBox Inventory Plugin&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Inventory - Starting Out</title><link>https://josh-v.com/netbox-ansible-inventory_plugin/</link><pubDate>Sun, 29 Nov 2020 08:00:00 +0000</pubDate><guid>https://josh-v.com/netbox-ansible-inventory_plugin/</guid><description>&lt;p&gt;The documentation can be found on &lt;a href="https://netbox-ansible-collection.readthedocs.io/en/latest/plugins/inventory/nb_inventory/netbox.netbox.nb_inventory_inventory.html" target="_blank" rel="noreferrer"&gt;ReadTheDocs&lt;/a&gt;. This is going to be starting out with the basics of the plugin and getting some sample output and to show how to form groups to be used.&lt;/p&gt;
&lt;div class="flex rounded-md bg-primary-100 px-4 py-3 dark:bg-primary-900"&gt;
 &lt;span class="pe-3 text-primary-400"&gt;
 &lt;span class="icon relative inline-block px-1 align-text-bottom"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="dark:text-neutral-300"&gt;This post was created when NetBox was an open source project used often in my automation framework. I have moved on to using &lt;a href="https://www.nautobot.com" target="_blank" rel="noreferrer"&gt;Nautobot&lt;/a&gt; due to the project vision and providing a methodology that will drive network automation forward further. You may want to take a look at it yourself.&lt;/span&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;This particular plugin &lt;strong&gt;DOES NOT&lt;/strong&gt; require pynetbox to be used.&lt;/p&gt;</description></item><item><title>Jekyll - Adding a URL Redirection</title><link>https://josh-v.com/jekyll-url-redirection/</link><pubDate>Sat, 28 Nov 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/jekyll-url-redirection/</guid><description>&lt;p&gt;Recently I had some discussions with &lt;a href="https://twitter.com/nickrusso42518" target="_blank" rel="noreferrer"&gt;Nick Russo&lt;/a&gt; on some URL redirection changes he was making for his content. I&amp;rsquo;m not going to take any of his thunder of what he is doing, and that is quite awesome. I decided that I wanted to take a look at that as well within my domain/blog using the Jekyll approach. This is going to be my short post regarding the steps I took to add the URL redirection setup to my personal blog page - josh-v.com.&lt;/p&gt;</description></item><item><title>NetBox Ansible Collection: Installation</title><link>https://josh-v.com/collection_install/</link><pubDate>Sat, 28 Nov 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/collection_install/</guid><description>&lt;p&gt;This is the first post as I start to look at the NetBox Ansible Collection. This is an impressive collection with modules for several of the NetBox applications, a query plugin, and an inventory plugin. This will take a deeper dive into several of the components of the &lt;strong&gt;inventory plugin&lt;/strong&gt;, but not all of the options. The documentation for all of the collection can be found at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ReadTheDocs: &lt;a href="https://netbox-ansible-collection.readthedocs.io/en/latest/" target="_blank" rel="noreferrer"&gt;https://netbox-ansible-collection.readthedocs.io/en/latest/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Galaxy Page: &lt;a href="https://galaxy.ansible.com/netbox/netbox" target="_blank" rel="noreferrer"&gt;https://galaxy.ansible.com/netbox/netbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="flex rounded-md bg-primary-100 px-4 py-3 dark:bg-primary-900"&gt;
 &lt;span class="pe-3 text-primary-400"&gt;
 &lt;span class="icon relative inline-block px-1 align-text-bottom"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="dark:text-neutral-300"&gt;This post was created when NetBox was an open source project used often in my automation framework. I have moved on to using &lt;a href="https://www.nautobot.com" target="_blank" rel="noreferrer"&gt;Nautobot&lt;/a&gt; due to the project vision and providing a methodology that will drive network automation forward further. You may want to take a look at it yourself.&lt;/span&gt;
&lt;/div&gt;

&lt;p&gt;This post is going to give information on how to install the collection as it may be applicable to every post in the series (as they get posted).&lt;/p&gt;</description></item><item><title>Ansible + NetBox: Getting Next Prefix / IP</title><link>https://josh-v.com/netbox_ansible_allocate_prefix_ipaddress/</link><pubDate>Sun, 22 Nov 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/netbox_ansible_allocate_prefix_ipaddress/</guid><description>&lt;p&gt;This originates from a conversation had on Twitter about how to get the IP Prefix information from an IPAM tool, specifically	NetBox using Ansible. There are a couple of methodologies to go through, and I had originally started down the path of using the URI module. Which could be done. The more elegant solution is to use the NetBox Ansible Collections to handle the logic for you! Let’s take a look.&lt;/p&gt;</description></item><item><title>Home Assistant Prometheus Exporting Setup</title><link>https://josh-v.com/homeassistant-prometheus/</link><pubDate>Sat, 21 Nov 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/homeassistant-prometheus/</guid><description>&lt;p&gt;There does not appear to be a complete set of documentation pieces available for setting up Prometheus on the Home Assistant platform. This post will take you along on my journey of setting up the Home Assistant to get metrics from it. The link for the documentation is a good start at getting Prometheus installed. &lt;a href="https://www.home-assistant.io/integrations/prometheus/" target="_blank" rel="noreferrer"&gt;https://www.home-assistant.io/integrations/prometheus/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="starting-prometheus" class="relative group"&gt;Starting Prometheus &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#starting-prometheus" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Edit your &lt;code&gt;configuration.yaml&lt;/code&gt; file&lt;/li&gt;
&lt;li&gt;Add in a key of &lt;code&gt;prometheus:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add in any parameters you may need, but just they key alone is enough to start the exporter&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once you have started the exporter, I was still getting a 404 not found. So I did restart the Home Assistant.&lt;/p&gt;</description></item><item><title>2020 Blog Update</title><link>https://josh-v.com/blog_update_v2/</link><pubDate>Wed, 18 Nov 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/blog_update_v2/</guid><description>&lt;p&gt;I&amp;rsquo;ve changed a few things on the site. Sorry about that! URLs have changed. Over the past week or so I have been working through making some what originally were small updates to the blog, that turned into a little too much effort. I was hoping to add a little bit of polish to the site while keeping the content in place. Earlier in 2020, maybe even back in 2019 I had become aware of Hashnode from the posts of &lt;a href="https://twitter.com/davidban77" target="_blank" rel="noreferrer"&gt;David Flores - aka NetPanda&lt;/a&gt; who is on the Hashnode side at &lt;a href="https://davidban77.hashnode.dev/" target="_blank" rel="noreferrer"&gt;https://davidban77.hashnode.dev/&lt;/a&gt;. I liked many things that the blogging site has to offer. From a very quick up and running, to having a strong start of a
community.&lt;/p&gt;</description></item><item><title>Practicing Network Automation with GNS3</title><link>https://josh-v.com/practicing_with_gns3/</link><pubDate>Sun, 01 Nov 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/practicing_with_gns3/</guid><description>&lt;p&gt;In an earlier post I took a look at how to setup EVE-NG to get access to virtualized network devices and topologies. This post is going to take a look at how to setup GNS3 systems to allow access.&lt;/p&gt;
&lt;p&gt;In the overall topology that is a &amp;ldquo;home&amp;rdquo; network sits a device that supports a routing protocol, usually either OSPF or BGP. What is known to work at an inexpensive price point is the &lt;a href="https://www.ui.com/edgemax/edgerouter-x/" target="_blank" rel="noreferrer"&gt;Ubiquiti EdgeRouter X&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Ansible for Enterprise</title><link>https://josh-v.com/ansible_for_enterprise/</link><pubDate>Tue, 11 Aug 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible_for_enterprise/</guid><description>&lt;p&gt;One of the appealing features that I have towards working with Ansible is that it is able to
automate components across the entire Enterprise IT stacks. Rather than having to stitch together
your network, server, and desktop automation tools, there is at least one automation tool that will
work with just about your entire IT stack. In this I will take a high level overview of some of the
features that are there for you to explore.&lt;/p&gt;</description></item><item><title>Docker for Automation Environment - Ansible 2.10</title><link>https://josh-v.com/docker_for_automation_environment_ansible_210/</link><pubDate>Sat, 27 Jun 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/docker_for_automation_environment_ansible_210/</guid><description>&lt;p&gt;Docker is a terrific solution for making a consistent working environment. It&amp;rsquo;s been about a year or
so since I built my very first own Docker container. I had always known why you use a container, but
was always intimidated too much so to even get started. I am glad that I did get started and am off
on my journey of using Docker containers. Let me jump into the problem and why? Couple the recent
experiences with Docker, and the upcoming move to slim down Ansible and install Collections for
most Network Automation modules, I thought it would be a good thing to get a write up done.&lt;/p&gt;</description></item><item><title>Using Apple Automator to Open Projects</title><link>https://josh-v.com/apple_automator/</link><pubDate>Sun, 21 Jun 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/apple_automator/</guid><description>&lt;p&gt;Today I&amp;rsquo;m going to walk through the newest part of my personal workflow for working with projects.
Straight to the point, this is going to be using Apple Automator to quickly open your project that
you wish to work on within VS Code, and presumably PyCharm as well.&lt;/p&gt;
&lt;h2 id="problem" class="relative group"&gt;Problem &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#problem" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;So what is the problem that I&amp;rsquo;m trying to solve? I am one that generally likes the workspace concept
within VS Code, but I don&amp;rsquo;t like having to maintain workspace files. I have found them a little
difficult to maintain and keep organized. To that end I have found that there is an option to
install VS Code shortcut into your OS path from the command pallet (cmd-P), and &lt;code&gt;path&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Ansible Cisco IOS User Module</title><link>https://josh-v.com/ansible-cisco-ios-user/</link><pubDate>Sat, 14 Mar 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-cisco-ios-user/</guid><description>&lt;p&gt;In this post I will be taking a look at some of the usability setup of managing Cisco IOS devices
with the &lt;a href="https://docs.ansible.com/ansible/latest/modules/ios_config_module.html" target="_blank" rel="noreferrer"&gt;Ansible Cisco IOS User Module&lt;/a&gt;.
This can be very helpful for setting up managed user accounts on systems, or the backup user
accounts when you have TACACS or RADIUS setup.&lt;/p&gt;
&lt;p&gt;The module documentation overall looks complete from what I have done for user account management on
devices in the past. There are a couple of interesting parameters available, that I may not get to
completely on this post. There is support for aggregate, meaning that you can generate the
configuration for multiple user accounts and pass it in as one. You can set a password in clear text
that gets encrypted when on the device, or you can set a hashed_password with the type of hash and
its corresponding value. And as expected with a module for setting user accounts you can also set
the privilege level for which the user account uses.&lt;/p&gt;</description></item><item><title>Ansible Cisco ios_interfaces module</title><link>https://josh-v.com/ansible-cisco-ios-interfaces-module/</link><pubDate>Sun, 26 Jan 2020 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-cisco-ios-interfaces-module/</guid><description>&lt;p&gt;This has become a post about the &lt;strong&gt;ios_interfaces&lt;/strong&gt; module with documentation that can be found
&lt;a href="https://docs.ansible.com/ansible/latest/modules/ios_interfaces_module.html" target="_blank" rel="noreferrer"&gt;Ansible ios_interfaces doc&lt;/a&gt;.
Originally I was going to write about the deprecations for just the Cisco IOS modules. Then as I
investigated further, I had found that there are many more modules that are being deprecated. In
this post I will take a closer look at the differences between the &lt;code&gt;ios_interface&lt;/code&gt; and &lt;code&gt;ios_vlan&lt;/code&gt;
modules that I had written posts on last year and what their new counter parts look like. And in the
end the post had quite a bit of good detail about the module. I think you will like what is here.&lt;/p&gt;</description></item><item><title>Disney Plus Streaming Bandwidth</title><link>https://josh-v.com/disney_plus_streaming/</link><pubDate>Thu, 14 Nov 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/disney_plus_streaming/</guid><description>&lt;p&gt;This will be a brief departure from the automation focused attention that I have been giving to this
blog over the past year or so. This week in the United States was the launch of Disney+ streaming
service. I have subscribed to it at this point and have found some interesting data based on SNMP
polling my network.&lt;/p&gt;
&lt;p&gt;This post is about the bandwidth that I am seeing used, not about anything about the service, or if
another service is better. I don&amp;rsquo;t have the time for that at this time. This is just about what was
an unexpected jump in the bandwidth usage with the new application. But I am very much OK with that
as my subscription level is taking care of that.&lt;/p&gt;</description></item><item><title>Ansible differences between ios command and cli command</title><link>https://josh-v.com/ansible-cli-vs-ios-command/</link><pubDate>Sun, 20 Oct 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-cli-vs-ios-command/</guid><description>&lt;p&gt;In an earlier &lt;a href="https://josh-v.com/blog/2019/01/12/ansible-cli-vs-ios-high-level.html" target="_blank" rel="noreferrer"&gt;post&lt;/a&gt; I
covered the differences between &lt;code&gt;ios_config&lt;/code&gt; and &lt;code&gt;cli_config&lt;/code&gt;. However I did not cover what the
difference was between &lt;code&gt;ios_command&lt;/code&gt; and &lt;code&gt;cli_command&lt;/code&gt;. Most of the items covered there remain the
same. So this will be a post that mostly gets straight to it and sees what the difference is.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A reminder that I am also putting playbooks used here out on Github. You can find this at:
&lt;a href="https://github.com/jvanderaa/ansible-using_ios" target="_blank" rel="noreferrer"&gt;https://github.com/jvanderaa/ansible-using_ios&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="differences" class="relative group"&gt;Differences &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#differences" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;First, for the &lt;code&gt;cli_commands&lt;/code&gt; module, you must be using a connection method of &lt;code&gt;network_cli&lt;/code&gt;. You
should not use &lt;code&gt;connection: local&lt;/code&gt; for this module. Note that the &lt;code&gt;cli_command&lt;/code&gt; can also be used
with multiple device types, including multiple vendors. Take a look at the &lt;code&gt;cli_command&lt;/code&gt;
documentation page that there is a link at the bottom of the post.&lt;/p&gt;</description></item><item><title>EVE-NG for Automation Practice and Testing</title><link>https://josh-v.com/eveng-for-autoamtion-practice-and-testing/</link><pubDate>Sun, 04 Aug 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/eveng-for-autoamtion-practice-and-testing/</guid><description>&lt;p&gt;As I restarted looking at how I&amp;rsquo;m continuing my education on the Network
Automation and certification realm I asked the question &amp;ldquo;How are you simulating
your network environment?&amp;rdquo; At the same time there has been thought on the idea
of leveraging cloud resources to gain experience there.&lt;/p&gt;
&lt;p&gt;First requirement for me is that whatever tool/simulation set that I use it has
to work. That being said, I need to be able to generate configurations, connect
devices to each other, and have packets flow through the simulated network, just
like any other network.&lt;/p&gt;</description></item><item><title>Ansible IOS BGP Module</title><link>https://josh-v.com/ansible-ios-bgp-module/</link><pubDate>Sat, 13 Jul 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-ios-bgp-module/</guid><description>&lt;p&gt;In this post I&amp;rsquo;m going to be taking a deeper dive into the new in Ansible 2.8
&lt;a href="https://docs.ansible.com/ansible/2.8/modules/ios_bgp_module.html" target="_blank" rel="noreferrer"&gt;IOS BGP&lt;/a&gt;
module. This may be one of the more complex modules to date and I&amp;rsquo;ll try to
make it as simple as possible.&lt;/p&gt;
&lt;p&gt;For a reminder about the BGP protocol is that this is the predominate protocol
that runs the Internet. It is used to peer up with other companies and is what
helps to make the Internet great. This is a very powerful protocol, and has been
expanded to support many things. This is also a protocol that is heavily used in
modern data centers.&lt;/p&gt;</description></item><item><title>Ansible ASA OG Module</title><link>https://josh-v.com/ansible-asa-og/</link><pubDate>Sun, 23 Jun 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-asa-og/</guid><description>&lt;p&gt;Today we are taking a look at the newest module out for Cisco ASA Ansible
module - &lt;a href="https://docs.ansible.com/ansible/latest/modules/asa_og_module.html" target="_blank" rel="noreferrer"&gt;asa_og&lt;/a&gt;.
This one is particularly exciting for the configurations that are being managed
heavily with Object Groups on firewalls. I&amp;rsquo;m particularly excited to review the
&lt;strong&gt;asa_og&lt;/strong&gt; module, time to dig in.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New&lt;/strong&gt; in this post is the finished playbooks being added to Github. I&amp;rsquo;m hoping
that this may be helpful and I am uploading the contents to Github for more to
be able to see and get access to if necessary. This will improve as I continue.&lt;/p&gt;</description></item><item><title>Ansible ASA Command Module</title><link>https://josh-v.com/ansible-asa-command/</link><pubDate>Thu, 20 Jun 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-asa-command/</guid><description>&lt;p&gt;Today will be a touch shorter post, but it is good to be back at it. In this
post I will be taking a quick look around at the asa_command module, as we start
down the path with looking at the ASA modules in Ansible. This is spurned on a
little bit by Ansible 2.8 coming out with an Object Group specific module. I
will be looking into that further in a future post.&lt;/p&gt;</description></item><item><title>Ansible Saving Cisco Configs to NVRAM with Cisco Specific Modules</title><link>https://josh-v.com/ansible-saving-cisco-configs-ios/</link><pubDate>Sat, 30 Mar 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-saving-cisco-configs-ios/</guid><description>&lt;p&gt;Today I&amp;rsquo;m going to take a look at a method to be able to save the configuration of a Cisco device to
NVRAM (copy run start). I will be taking a look at multiple Cisco platforms to save changes done
during an Ansible Playbook to NVRAM. There are options to save the configuration on every change
within the modules such as &lt;strong&gt;ios_config&lt;/strong&gt; or &lt;strong&gt;cli_config&lt;/strong&gt;, however, this can slow down the
execution of your playbook.&lt;/p&gt;</description></item><item><title>Ansible Cisco IOS Interface Module</title><link>https://josh-v.com/ansible-cisco-ios-interface/</link><pubDate>Sun, 17 Mar 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-cisco-ios-interface/</guid><description>&lt;p&gt;Update: &lt;code&gt;ios_interface&lt;/code&gt; is to be deprecated as of Ansible 2.13&lt;/p&gt;
&lt;p&gt;In this post I will be taking a deeper look at the &lt;strong&gt;ios_interface&lt;/strong&gt; module. This module is used to
configure individual interfaces on a Cisco IOS device. The documentation for the module is located
&lt;a href="https://docs.ansible.com/ansible/latest/modules/ios_interface_module.html" target="_blank" rel="noreferrer"&gt;here&lt;/a&gt;.
In this module I did have to dig into the actual Python file, and that is located
&lt;a href="https://github.com/ansible/ansible/blob/stable-2.9/lib/ansible/modules/network/ios/ios_interfaces.py" target="_blank" rel="noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Edit: Had to update the link due to the change in Ansible coming in 2.10. I have hard linked to
the IOS Interfaces module.&lt;/p&gt;</description></item><item><title>Ansible IOS VLAN</title><link>https://josh-v.com/ansible-ios-vlan/</link><pubDate>Sat, 09 Mar 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-ios-vlan/</guid><description>&lt;p&gt;Back to it finally. Going to take a look at the Ansible module &lt;strong&gt;ios_vlan&lt;/strong&gt;. The purpose of this is
to provide a declarative module for managing VLANs on IOS devices. In this I will be using IOSv-L2
images. There are a few interesting quirks (as I will call it) within the parameters for the module.&lt;/p&gt;
&lt;h2 id="module-documentation" class="relative group"&gt;Module Documentation &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#module-documentation" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;First, the module documentation page is
&lt;a href="https://docs.ansible.com/ansible/latest/modules/ios_vlan_module.html" target="_blank" rel="noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Ansible IOS Banner</title><link>https://josh-v.com/ansible-ios-banner/</link><pubDate>Sun, 10 Feb 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-ios-banner/</guid><description>&lt;p&gt;Today&amp;rsquo;s post is going to be a short and sweet one (unless I get to writing two). I&amp;rsquo;m going to take a
look at &lt;code&gt;ios_banner&lt;/code&gt; module. This one is pretty much straight to the point, what it states,
modifying the banner on an IOS device. There are multiple reasons to want to manipulate the banner
on a Cisco device. We will leave those reasons to you and the organization that you are a part of
for that. For now, we will take a real quick look at the module.&lt;/p&gt;</description></item><item><title>Ansible Network Engine and NTC Templates</title><link>https://josh-v.com/ansible-network-engine-ntc-templates/</link><pubDate>Sun, 27 Jan 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-network-engine-ntc-templates/</guid><description>&lt;p&gt;In this post we will talk about primarily three components that will work together to get structured
data out of the command line of a Cisco device. The three pieces are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ansible-network/network-engine" target="_blank" rel="noreferrer"&gt;Ansible Network Engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/textfsm" target="_blank" rel="noreferrer"&gt;Google&amp;rsquo;s TextFSM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/networktocode/ntc-templates" target="_blank" rel="noreferrer"&gt;Network to Code Templates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-this-post" class="relative group"&gt;Why this Post? &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#why-this-post" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;I&amp;rsquo;m writing this post because I was initially hesitant to start using the Ansible role originally
when I was doing everything pretty well with the generic modules that come available with Ansible. I
was challenged to migrate a Python script that was using TextFSM and Netmiko to be in Ansible. So I
was originally aware of Ansible Network Engine, but had not done anything with it. So what better
time than to put it to practice than when it is needed.&lt;/p&gt;</description></item><item><title>Ansible differences between ios config and cli config</title><link>https://josh-v.com/ansible-cli-vs-ios-high-level/</link><pubDate>Sat, 12 Jan 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-cli-vs-ios-high-level/</guid><description>&lt;p&gt;This is a post that I&amp;rsquo;m going to review some of the differences between the ios_config module and
the new cli_config module within Ansible networking. I became interested in the module after a
recent discussion between the two. I have decided to take a look at the differences between the two.&lt;/p&gt;
&lt;p&gt;This is not an under the hood look at the modules. This has already been covered very well (and
with better graphics than I can produce) here at the
&lt;a href="https://www.ansible.com/blog/red-hat-ansible-network-automation-updates" target="_blank" rel="noreferrer"&gt;Ansible Blog&lt;/a&gt; look for
&amp;ldquo;cli_command and cli_config&amp;rdquo; with your browser find function.&lt;/p&gt;</description></item><item><title>Ansible - Working with command output</title><link>https://josh-v.com/ansible-output-work/</link><pubDate>Sat, 05 Jan 2019 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-output-work/</guid><description>&lt;p&gt;You have decided to move forward with using/trying Ansible. You can now connect to a device and get
a green success that you get a &lt;em&gt;hello world&lt;/em&gt; like command such as &lt;code&gt;show hostname&lt;/code&gt; or
&lt;code&gt;show inventory&lt;/code&gt; and get the GREEN success on Ansible. Now what. You may want to see the output of
the command that you sent and got information back. This is your post on &lt;em&gt;getting started&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This is the process that I typically go through when developing a playbook for use. Let&amp;rsquo;s say this
is a playbook that you wish to just get show information out of the device, say investigating if
there are any configurations that are applied that would be part of a CVE bug, or just operational
status.&lt;/p&gt;</description></item><item><title>Discontiguous Masks</title><link>https://josh-v.com/discontiguous_masks/</link><pubDate>Sat, 08 Dec 2018 14:00:00 +0000</pubDate><guid>https://josh-v.com/discontiguous_masks/</guid><description>&lt;p&gt;Discontiguous masks are something that is going to be somewhat historic within the network design
toolbox. It is basically a methodology of looking at particular bits of a network/host definition.
The big thing to recall is that as a packet crosses a network device it does so within a packet. The
packet is nothing more than a stream of bits. Within the packet header there are bits that define
the source network address and the destination network address. This is where discontiguous masks
come into play. With a system that can leverage discontiguous masks, you can access information
about any part of the network bits, not just starting reading and then stopping (or vice versa) when
you look at a bit boundry masking only.&lt;/p&gt;</description></item><item><title>Micro Segmentation vs Segmentation</title><link>https://josh-v.com/microsegmentation/</link><pubDate>Sat, 08 Dec 2018 07:00:00 +0000</pubDate><guid>https://josh-v.com/microsegmentation/</guid><description>&lt;p&gt;In a recent podcast there was some discussion that it sounded like the term &lt;strong&gt;Micro Segmentation&lt;/strong&gt;
was being used where it was really traditional &lt;strong&gt;segmentation&lt;/strong&gt;. So I thought I would put out a few
thoughts on this front.&lt;/p&gt;
&lt;h2 id="what-is-segmnentation-in-networking" class="relative group"&gt;What is Segmnentation in Networking &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#what-is-segmnentation-in-networking" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Segmentation is a methodology to create separatet &lt;em&gt;zones&lt;/em&gt; of sorts of various traffic types. Various
places you may want to do this is within a campus environment to separate students from faculty, or
engineering from finance. The list of examples goes on and on. Go to a basic reading of VLANs and
you will get the idea of what segmentation is. Once you have VLANs, really segmentation then builds
upon this and allows policy to be applied. This policy can be whether or not hosts should be able to
talk to each other, or various traffic treatments (QoS). This is something that is well covered
already and I do not wish to cover more.&lt;/p&gt;</description></item><item><title>Keeping Up on Tech</title><link>https://josh-v.com/keeping-up-on-tech/</link><pubDate>Sat, 24 Nov 2018 07:00:00 +0000</pubDate><guid>https://josh-v.com/keeping-up-on-tech/</guid><description>&lt;p&gt;Life always gets busy. That is one thing that you always hear about. I am definitely in that boat as well that things are getting busy. With this in mind, I have never felt better about my ability to learn new things in the field. I do a few things that I feel are probably unique that I should share.&lt;/p&gt;
&lt;p&gt;The first opportunity that has never been more capable of doing is to listen to podcasts. The commuting time to/from work is a tremendous opportunity. I leverage three podcasts as my primary learning mechanism these days.&lt;/p&gt;</description></item><item><title>Getting Started with the Blog</title><link>https://josh-v.com/getting-started-with-the-blog/</link><pubDate>Thu, 22 Nov 2018 07:00:00 +0000</pubDate><guid>https://josh-v.com/getting-started-with-the-blog/</guid><description>&lt;p&gt;Why this post? Because I decided to change the style of how I was hosting my blog. Before I had decided to just host the blog on something that was easy to get to and update. I could have kept on blogging there, but I found making blog posts a little bit more difficult than what I wanted to. I also wanted to learn some of the &lt;code&gt;new&lt;/code&gt; ways of doing things within networking technologies.&lt;/p&gt;</description></item><item><title>Network CI/CD - work in progress (Links to other videos/pages)</title><link>https://josh-v.com/network-cicd/</link><pubDate>Sun, 11 Nov 2018 07:00:00 +0000</pubDate><guid>https://josh-v.com/network-cicd/</guid><description>&lt;p&gt;At DevNet Create 2018 there is a video that was put together related to CI/CD in the NetDevOps world. This is something that is very exciting to see that there has been time put in to putting that together. The video can be seen here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=LinGy8DGIJ8&amp;amp;index=19&amp;amp;list=WL&amp;amp;t=16s" target="_blank" rel="noreferrer"&gt;DevNet Create Video&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gitlab.com/plumbis/cumulus-ci-cd" target="_blank" rel="noreferrer"&gt;Pete Lumbis CI/CD Info&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With tools such as VIRL, EveNG, and GNS3, there should be a methodology to be able to put a network together to do testing. I have not yet put together the full pipeline, but is something that I&amp;rsquo;m very interested in getting built some day.&lt;/p&gt;</description></item><item><title>Ansible Blocks</title><link>https://josh-v.com/ansible-blocks/</link><pubDate>Thu, 07 Jun 2018 07:00:00 +0000</pubDate><guid>https://josh-v.com/ansible-blocks/</guid><description>&lt;p&gt;One of the more interesting features that I have just come across within the Ansible automation
world is that of the &lt;code&gt;block&lt;/code&gt;. I find this very helpful for both error handling, and also grouping
tasks into logical separation.&lt;/p&gt;
&lt;h2 id="ansible-official-link" class="relative group"&gt;Ansible Official Link &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#ansible-official-link" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html" target="_blank" rel="noreferrer"&gt;Ansible Docs: Block&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Blocks allow for logical grouping of tasks and in play error handling. Most of what you can apply
to a single task can be applied at the block level, which also makes it much easier to set data
or directives common to the tasks. This does not mean the directive affects the block itself, but
is inherited by the tasks enclosed by a block. i.e. a when will be applied to the tasks, not the
block itself.&lt;/p&gt;</description></item></channel></rss>