Skip to content
Feb 28 / thebrotherswisp

The Brothers WISP 131 – MTK Hardware, Snowpocalypse, Demo Strategies

This week we have Greg, Mike, and the dread pirate Nick A. Ready, set, chat.


This week we talk about:
MTK chateau
MTK switches CRxxx line, be sure to have hardware “on” your kit to ensure maximum throughput.
The snowpocalypse was fun in Texas.
Grande lost most fiber service in Texas for about 12 hours.
Migrating Ansible Tower from centos 7 to RHEL 8…”let’s learn everything really fast shall we”
Networking foundations CLI
Demo2win! training for technical demonstrations

Here’s the video:(if you don’t see it, hit refresh)

Feb 24 / Greg

Ansible Tower Survey Textarea To List

I was recently leading an Ansible workshop when someone asked me if you could accept input from a survey in an ansible and use that as a list in a playbook. I worked out a quick solution that I figure may be useful for others too.

I first created a quick survey that would pass a text area to a playbook.

As you can see it passes the survey info over to the playbook as “test_data”. It’s important to remember that the list entries should be one per line.

Next I threw together a quick playbook that will accept the collected info(survey-list.yml):

- name: test message area
  hosts: localhost
  gather_facts: false
  - name: debug stuff
      var: test_data
  - name: run it as a list
      msg: "{{ item }}"
    loop: "{{ test_data.split('\n') }}"

Taking a look at the playbook tasks I’m doing two things.
In the first task I’m using the debug module to just dump the contents of the test_data variable.
In the second task I’m looping through the data and spitting out the results one at a time. Notice that I’m taking the same variable and using the split option to break them up into separate entries based on the new line character ‘\n’.

Here’s the output of the run:

PLAY [test message area] *******************************************************
TASK [debug stuff] *************************************************************
ok: [localhost] => {
    "test_data": "one\ntwo\nthree\nfour"
TASK [run it as a list] ********************************************************
ok: [localhost] => (item=one) => {
    "msg": "one"
ok: [localhost] => (item=two) => {
    "msg": "two"
ok: [localhost] => (item=three) => {
    "msg": "three"
ok: [localhost] => (item=four) => {
    "msg": "four"
PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Notice in the debug stuff task it has all the entries with the “\n” new lines jammed in between them.
The second task shows the output listed in four separate entries.

So now I can successfully iterate over anything provided by the survey text area!

Thanks and happy automating.

Feb 14 / thebrotherswisp

The Brothers WISP 130 – Netonix No Load, Hotel Door Locks, Leaky Feeder Cable

This week we have Greg and Mike…we are two strong, independent people and don’t need nobody else.


This week we talk about:
Arizona Sunshine multiplayer is all kinds of fun
We had a chat with Simon Westlake from Sonar
Some Netonix switches will power down if there’s no load present on them…
Mikrotik V6.49beta11 – LOTs of fixes: crs3xx packet duplication bonding, pwr-line interface linking, switch fixed interface toggling
Mikrotik commands via automation that require interaction…use the execute command
Customer web interface to reboot PoE ports
Speedtest introduces video test – IOS users only for now
Leaky feeder cable
UA-Hotel hotel locks hit the FCC 13MHz and bluetooth
Ubiquiti Talk Conference
Starlink RIPE Atlas

Here’s the video:(if you don’t see it, hit refresh)

Feb 11 / thebrotherswisp

The Brothers WISP – Simon Westlake of Sonar

This special cast has Greg, Mike, Chad Wachs, and Simon Westlake talking about where Sonar is and where they are going. I believe we have some choppy video on this one, so sorry about that. I also think this is session one with a follow up in the future. Please let us know if you have any questions for the next go around.

This week we talk about:
This cast we talk about:
Building for flexibility
Special “casts” giving info(possibly more in the future)
Why they push for calling support
Ideal customer
V2 roadmaps
Feature parity between V1 and V2
What excites Simon right now
Magma LTE Core
Working with Facebook/Microsoft
Twillio integration for text messaging
Graphql API

Here’s the video:(if you don’t see it, hit refresh)

Jan 31 / thebrotherswisp

The Brothers WISP 129 – Uganda Internet Outage, Transoceanic Cables, Facebook Monopoly

This week we have Greg, Mike, and Nick Arellano all try and keep Greg awake. Spoiler alert, I was feeling a little under the weather so I was moving a little slow(sorry errbody).

Cambium ePMP Bundle

This week we talk about:
Nick Buraglio started a new podcast:
Uganda cuts country’s internet prior to election…down for 5 days.
Mimecast is hooking me up with a dev account!
Splunk Phantom gave me a 6 month trial.
Cage Nut Tool
Ubiquiti Security Breach
Solarwinds – my brain wasn’t working so well here, so sorry about that.
AT&T TV Resell?
Transoceanic Cables – Big bandwidth growth
Facebook monopoly

Here’s the video:(if you don’t see it, hit refresh)

Jan 17 / thebrotherswisp

The Brothers WISP 128 – Velocloud SD-WAN And Keeping A Subversive Web Service Online

This week we have Greg, Mike, and Nick A. really using those wrinkles in our brains.

Cambium ePMP Bundle

This week we talk about:
RB3011 port flapping back with 6.48, so watch out.
Mikrotik added IPv6 DHCP option for hotspots
Ubiquiti security breach
VMWare SD-WAN (velocloud) impressions
The Power Of Glove – Greg was in a documentary LOL
What could Parler do to pivot from being blocked my major cloud providers?
How The Pirate Bay operates in the cloud successfully
Death to 2020 netflix special…amazing
CI/CD with VMWare and ansible

Here’s the video:(if you don’t see it, hit refresh)

Jan 14 / Greg

CI/CD With VMWare And Ansible

My colleague and good friend, Jimmy Conner, gave me a demonstration on CI/CD with VMWare, so I did the only logical thing…and copy his presentation. He also contributed some of the playbooks to make it all happen, so big thanks to him!

What is CI/CD and why should I care? I’ll keep this short as I’m sure you are here to see the demo and check out the playbooks. As per wikipedia “CI/CD generally refers to the combined practices of continuous integration and either continuous delivery or continuous deployment.” In short it’s the idea that on your dev side you can do something like make a commit to your git repository, and it will then automatically kick off a series of actions that will take that new code commit and put it into production. Most folks think this is something only done in containers or in the cloud, but it can be utilized in your virtualized environments too(VMWare, Proxmox, etc.). The phrase heard a lot is “treat your servers like cattle, not pets.” It’s the idea that to deliver an update to my app I spin up a new instance(server, vm, container, whatever), do any config necessary to it, test it, add it to the path so it will be used, and last, decommission the old instances.

In this demo I will update an HTML page in my github repo and it will kick off the rollout. The repo holding the playbooks can be found here.

Demo Video

Workflow Overview

In the Ansible Automation Platform(AAP), the user interface(currently known as tower) has the ability to tie multiple job templates together in what’s called a workflow. Here’s the workflow for my example:

I’ll quickly step through it here.
App-test-web-deploy is the playbook that connects to VMWare and creates a linked clone of a Centos8 image. After the image is booted it will create a host entry in my AAP inventory based on the DHCP IP that was pulled. This could be done via statics with something like Infoblox DDI.
Coming off of this template is a green line which indicates “if the template succeeds go here” and a red line that indicates “perform this template if the previous failed.”

Something of note in this playbook is the use of the set_stats module. When you want to set a variable, you usually do it via the standard set_fact module. Keep this in mind. A set_fact only is relevant to the local job template. If you have a workflow and want to use a variable between job templates, you need to use the set_stats module.

  - set_stats:
        newip: "{{ newvm.instance.ipv4 }}"
        newuuid: "{{ newvm.instance.hw_product_uuid }}"
        newvmname: "{{ newname }}"

On fail of any of the operations the app-test-web-deploy template is run which deleted the new VM and removes it from AAP inventory.

On success app-test-nginx-install is run. This is a simple playbook that opens port 80 in the firewall(and restarts it), installs nginx, and disabled SELinux(this is just a lab example after all).

The next template to run is app-test-web-config. This job will install git(this is how the new web app is pulled), it then places the nginx config file on the server, it then wipes the web folder and uses git to pull a fresh copy, and last it restarts nginx.

I’ll now run the app-testp-web-http-test template that will make sure the required files exist, then it will do a test to the web server and ensure the proper page contents are returned.

The app-test-lb-config template is now run. This will (double check that the firewall settings are correct on the LB(the loadbalancer is persistent, but this doesn’t hurt)), it then replaces the nginx config file to include the new server and remove the old. Last it will reboot any necessary services.

As a last step the app-test-final-cleanup job template is run. This will delete the old MyApp VM(the active web app VM), rename the new VM as MyApp(since it is taking over the role), then it will update the AAP inventory with the new IP for MyApp.


It’s realllly satisfying to watch it all move in concert, which I suppose ultimately is the goal of automation to begin with(have everything smoothly lock together). I had fun putting this together, so I hope you find it of use. If you have any questions or comments, please let me know.

Thanks and happy CI/CDing.