Ansible Tower and Netbox are two of the greatest tools in the DevOps toolchain, and the integration is seemingly painless on the surface (and really it isn’t all that bad) but there is a little nuance to it. Both application stacks provide a RESTful API so sending data between the two should be as simple as firing some JSON between them right? Even with Ansible being a YAML focused platform . . .
In the immortal words of the Notepad++ User Manual: Documentation is like sex, when it’s good, it’s very, very good; when it’s bad, it’s better than nothing. https://npp-user-manual.org/ This has never in my life been more apparent than working with the Dynamics 365 Finance and Operations APIs. Providing some truly dreadful documentation and a smattering of documents that lay out the high level framework of how authentication all ties together . . .
Anyone that’s ever spoken to me about tech for more than 30 seconds will know how much I love Ansible and even more Ansible Tower (Red Hat’s REST API and Web Services console) and with good cause; it’s top of class Infrastructure Automation and easily more flexible, scalable and and lightweight than Cloud Formation, Chef, Puppet, Salt or any of it’s contemporaries. On top of that, it’s documentation is second . . .
Netbox is an incredible tool and I’ll happily say I don’t know how I worked before I was introduced to it, scrabbling around in leviathan (non version controlled) spreadsheets and SharePoint pages that try to perform IP address management, or even worse the notes on a scrap of paper or book on someone’s desk. There are other tools on the market, but they cost an arm and a leg for . . .
One of Ansible’s most brilliant features is Privilege Escalation, the ability to enter the context of a more privileged user following an initial connection to either your local or remote node, however a bizarre little caveat of this is something I haven’t been able find documented anywhere and it refers to the use of a system account (by default named awx) on the localhost. What the hell is AWX anyway? . . .