<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python on Problem of Network</title>
    <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/tags/python/</link>
    <description>Recent content in Python on Problem of Network</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Tue, 19 Nov 2024 18:00:00 +0100</lastBuildDate>
    <atom:link href="https://6364c9bf.problemofnetworkdotcom.pages.dev/tags/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Making Use of Vault: Ansible</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-ansible/</link>
      <pubDate>Tue, 19 Nov 2024 18:00:00 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-ansible/</guid>
      <description>&lt;p&gt;As we come towards the end of this mini series, we talked about how to &lt;a href=&#34;https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/bootstraping-hashi-vault/&#34;&gt;bootstrap&lt;/a&gt; a hashicorp vault for non-prod use, what &lt;a href=&#34;https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/hashi-vault-primitives/&#34;&gt;primitives&lt;/a&gt; vault uses for secrets management, and how to talk to vault from &lt;a href=&#34;https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-python/&#34;&gt;python&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Here we will dig into how you can access vault content within an Ansible workflow, ensuring you never more have the pain of managing secrets with &lt;code&gt;ansible-vault&lt;/code&gt;, or worse, storing them plain text in a repo somewhere.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making Use of Vault: Python</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-python/</link>
      <pubDate>Tue, 19 Nov 2024 09:00:00 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-python/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s remarkably easy to get sucked into hardcoding things that probably should live outside your code.&lt;/p&gt;&#xA;&lt;p&gt;It is clear to many of us that storing secrets anywhere that isn&amp;rsquo;t vault (or something like it), is a terrible practice. It is also true that the best laid plans of mice and men &lt;em&gt;aft gan aglais&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In other words, the problem is rarely that we don&amp;rsquo;t want to do secure coding, its that we lack the time, talent, or awareness to do this right. Don&amp;rsquo;t dwell on that too much either - its just how the world works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hashi Vault Primitives</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/hashi-vault-primitives/</link>
      <pubDate>Mon, 18 Nov 2024 20:00:00 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/hashi-vault-primitives/</guid>
      <description>&lt;h2 id=&#34;some-vault-primitives&#34;&gt;Some Vault Primitives&lt;/h2&gt;&#xA;&lt;p&gt;Pretty much everywhere you go in vault you will find you need a few building blocks to make &lt;em&gt;anything&lt;/em&gt; work.&lt;/p&gt;&#xA;&lt;h3 id=&#34;env-vars&#34;&gt;Env Vars&lt;/h3&gt;&#xA;&lt;p&gt;Regardless of how you choose to talk to vault (CLI/WebAPI/SDK), you will find that the most common way to &amp;ldquo;encode&amp;rdquo; the vault settings is in an Environment variable. This is a nod towards its &amp;ldquo;cloud native&amp;rdquo; upbringing, where config files are the devil or something.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bootstrapping Hashi Vault</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/bootstrapping-hashi-vault/</link>
      <pubDate>Mon, 18 Nov 2024 18:00:00 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/bootstrapping-hashi-vault/</guid>
      <description>&lt;p&gt;Recently I have spent a reasonable amount of time in Hashicorp vault. As part of a mini series on how to make better use of it in Network Automation, I started writing this as a &amp;ldquo;intro&amp;rdquo; to a post on the subject.&lt;/p&gt;&#xA;&lt;p&gt;As per usual with me, it ended up being so long that it had to be its own post. So. Here you are.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Some of you might have opinions about Hashicorp and their licence changes.&#xA;I do not (either professionally nor personally), compete with Hashicorp,&#xA;and so it is my understanding I can use their products in an opensource&#xA;sense. If you feel differently, feel free to use openbao.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The even-ended number problem in Go and Python</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/even-ended-number-go-vs-python/</link>
      <pubDate>Tue, 20 Oct 2020 10:44:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/even-ended-number-go-vs-python/</guid>
      <description>&lt;p&gt;During the Go Essential Training course on LinkedIn, the instructor sets up a problem for you to solve. The solution is in the next slide of the course, and mine was ever so slightly different anyways, so I doubt that this needs to come with a spoiler alert, but anyways&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;An even-ended number is one that starts and ends with the same digit. That is to say 1, 11, 121, and 10103921 are all even ended numbers as they all start and end with the same digit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Modern NetDevOps learning plan</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/netdevops-learning-plan/</link>
      <pubDate>Tue, 20 Oct 2020 10:19:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/netdevops-learning-plan/</guid>
      <description>&lt;p&gt;Now that I have &lt;img src=&#34;https://problemofnetwork.com/posts/end-of-solera-years/&#34; alt=&#34;a load of free time&#34;&gt; I have set up a sort of a learning plan to plug some gaps in my knowledge that I always wanted to plug, but didn&amp;rsquo;t have the time to do properly.&lt;/p&gt;&#xA;&lt;p&gt;Mindful that I have an opportunity for learning without external influences on my time, but also that my Daughter only has Kindergarten until lunchtime every day, I really only get the morning before the family time kicks in.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ACI: Controller Upgrades with Python</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-controller-upgrades-python/</link>
      <pubDate>Thu, 28 Jan 2016 01:42:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-controller-upgrades-python/</guid>
      <description>&lt;p&gt;So I bought my ACI bundles so long ago that they&amp;rsquo;re still running 1.0(3f). Right now mainline is 1.2(1k), so i&amp;rsquo;m a bit behind.&lt;/p&gt;&#xA;&lt;p&gt;Using the official Cisco doc I did the first staged upgrade from 1.0 to 1.1 using the Web GUI. I wanted to see what happened in a visual sense.&lt;/p&gt;&#xA;&lt;p&gt;Basically you setup a connection between the APIC and a host that has staged the firmware files, then you setup a policy defining what versions the fabric should be on, and when that should be made active. For me it was 1.1(4f) and now basically.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ACI: Initial Design Considerations</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-initial-design-considerations/index.md/</link>
      <pubDate>Mon, 18 Jan 2016 11:49:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-initial-design-considerations/index.md/</guid>
      <description>&lt;p&gt;ACI brings with it many different constructs for operating networks, some of which have analogous equivalence with classical networking, some of which are literally bat-poop crazy.&lt;/p&gt;&#xA;&lt;p&gt;As per usual, you can find lots of resources on how to structure ACI fabrics elsewhere, i&amp;rsquo;m not going to waste time on what you &lt;em&gt;can&lt;/em&gt; do and focus on what I am going to do (roughly).&lt;/p&gt;&#xA;&lt;p&gt;The below Image was unceremoniously stolen from Cisco themselves, in the critical read &lt;a href=&#34;http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/1-x/aci-fundamentals/b_ACI-Fundamentals/b_ACI-Fundamentals_chapter_010001.html&#34;&gt;ACI Fundamentals&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The ACI Adventure Begins</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-adventure-begins/</link>
      <pubDate>Sat, 09 Jan 2016 18:21:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-adventure-begins/</guid>
      <description>&lt;p&gt;Starting yesterday I began to deploy our Nexus 9000 ACI solution into our Datacentre. Scary yet fun times are ahead.&lt;/p&gt;&#xA;&lt;p&gt;Over the course of the project I will do my best to chronicle anonymised info that talks about what we did and how we did it.  Some of that may be of use to another ACI hopeful, whereas some will be pretty specific to my environment.  One thing I won&amp;rsquo;t be doing is reinventing the blogging wheel, and I will chose to refer to others that helped me, rather than rehash the same subjects over and over again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CallManager APIs for fun and profit: Part 4 - Python End to End</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part4/</link>
      <pubDate>Mon, 29 Jun 2015 00:41:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part4/</guid>
      <description>&lt;p&gt;So by now you can use SoapUI and Python to read info out, and can utilise SoapUI Test Cases to validate, and deliver changes to the CallManager system.  Again, please do ensure you have reviewed parts 1-3 before entering into this post.  Its entirely contextualised within the series.&lt;/p&gt;&#xA;&lt;p&gt;Up until now what we have been doing is quite focused on a single object being added or sense checked.  In this, the final post in this mini series we will be looking at an end to end python script that can be used to add a new end user to the system, with pre and post validation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco Live 2015</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/cisco-live-2015/</link>
      <pubDate>Thu, 11 Jun 2015 19:55:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/cisco-live-2015/</guid>
      <description>&lt;p&gt;This week is a first for me.  I&amp;rsquo;m at Cisco Live in San Diego.  It&amp;rsquo;s been pretty awesome so far I have to say!&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Full Disclosure, I was brought here by Cisco to talk to Analysts about ACI. However, I should also point out my only session was closed door feedback on why we chose the solution, and how its helped us to date.  Since we are only at the early stages, it was a short conversation.  I thank Cisco for their hospitality, and for allowing me to access Conference Level sessions that my explorer level pass would not normally allow.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CallManager APIs for fun and profit: Part 3 - Changes</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part3/</link>
      <pubDate>Mon, 01 Jun 2015 10:41:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part3/</guid>
      <description>&lt;p&gt;In this the third part of my mini series on using the CUCM API, we start to get further into the Ju-Ju, and check web app changes via the API, before then going on to make a change via the API itself.&lt;/p&gt;&#xA;&lt;p&gt;As before if you haven&amp;rsquo;t gone through the previous two posts then please, head back to the start and we will see you back here shortly.&lt;/p&gt;&#xA;&lt;h2 id=&#34;whats-your-motivation-today&#34;&gt;Whats your motivation today?&lt;/h2&gt;&#xA;&lt;p&gt;There are two reasons why you might want to use an API in your day to day changes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CallManager APIs for fun and profit: Part 2 - Python</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part2/</link>
      <pubDate>Sun, 31 May 2015 18:33:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part2/</guid>
      <description>&lt;p&gt;In this part 2 of my API adventure, I will be looking at repeating what we did Part 1 via SoapUI, but this time in python using the suds library.  If you haven&amp;rsquo;t read that yet, then really, please go back and do that. This will not be wildly useful otherwise.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-soap-y-with-python-suds&#34;&gt;Getting SOAP-y with Python suds&lt;/h2&gt;&#xA;&lt;p&gt;Yeah I went there&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;So, we have a process that allows us to programatically look stuff up. Only its not very repeatable, and therefore not much use yet.  With this post I will take you through the creation of a python script that mimics what we did previously - finding things, and showing them to you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ciscoconfparse Wetdream</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/ciscoconfparse-wetdream/</link>
      <pubDate>Sat, 30 May 2015 03:07:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/ciscoconfparse-wetdream/</guid>
      <description>&lt;p&gt;Ick,  I know.&lt;/p&gt;&#xA;&lt;p&gt;Python has long been the language of choice for engineers looking to make their day go that little bit quicker or easier.  With deepening skill levels, more and more complex repetitive tasks can be disected and segmented into functions and reuable code, such that a competent scripting engineer can go from blank page to automated process in a matter of hours in most cases.  It is for this reason that I sit here to write this - an advocacy for ALL Cisco engineers to down tools and spend however long you need to get good at this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CallManager APIs for fun and profit: Part 1 - SoapUI</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part1/</link>
      <pubDate>Fri, 29 May 2015 16:13:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part1/</guid>
      <description>&lt;p&gt;This is one of those posts that I will constantly refer back to&amp;hellip; ;)&lt;/p&gt;&#xA;&lt;p&gt;In my day job it&amp;rsquo;s clear to me that we need to automate more and more of the dumb day to day stuff.  One of those things is Leavers and Starters on our phone system.&lt;/p&gt;&#xA;&lt;p&gt;We employ Cisco CallManager, much like the rest of the world, and if you have ever spent any time with it, you will know that its VASTLY over-complicated to manage.  A single extension on someones&amp;rsquo; desk requires (at least):&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
