Skip to main content

Totally Terraform (Or, Introducing Terraform DevOps Cloud Engineer Proceedures to A Company) [Updated March 2022]

 Want to share this post easily? Here's a Notion page!

 

I got to teach myself Terraform, but that's what this entire blog is about; Teaching myself things and hoping for work sometimes to make money and being employed by multiple people.

You can be the next one!

Anyway, what do I like about Terraform? A lot. Including all the troubleshooting and digging into new things.

The Numbers on What Was Made:

Project: 1

Resources created: 7

  • Virtual Machine
  • Network Interface
  • Virtual Network
  • Security Rule attached to Security Group
  • Security Group (with outputs)
  • Subnet
  • Public IP address

Many of these resources are attached to each other - The Network Interface is attached to the Virtual Machine, and they’re both in a Security Group which has Security Rules attached to it.

The Virtual Network is attached to the Subnet, and the Public IP address is attached to the Network Security Group. This way, The Virtual Machine has internet access, but also has rules about who can access it.

Variables Used: 3

TLDR? Check out the code on GitHub. There are even tiny bonuses, like bits that can be activated later. As of March 2022, It's been cleaned up to be easily readable, with added outputs.

Likes:

It clearly tells you what an error is! Troubleshooting was mostly a breeze, and since I wasn't getting [too] annoyed, I could more easily learn where the mistakes where. For instance, the first line in the main code ('provider') - the azurerm part is not a random name;

provider "azurerm" is an actual thing that connects to Azure. There is one for each cloud provider.

Variables make it easier to quickly swap out bits of code that may be account-specific over hardcoding. This way, you don’t need to replace us-east-1 multiple times.

You will need at least 3 files - the main code, the variables file, and the place to establish the variables. The main code is usually called [main.tf] for clarity, but it’s not mandatory.

It doesn't tell you all the errors at once. If you fix one, another pops up after terraform plan is ran once more. It makes troubleshooting easier to deal with when it's one problem at a time. You may prefer a long list of errors to deduce, so this is case by case.

Dislikes:

if you're a beginner, it can still be difficult to parse. I had to take some code snippets from the demo I used.

In another instance, it couldn't reference a count variable I had placed under another resource.

Why not? Keep reading below:

Troubleshooting:

Check out my live-post troubleshooting on a specific issue here.

Error: Network Interface “Net-Connection” (Resource Group “Admins”) was not found!

You look at this and think "Well, that's obvious."

Then you look at my code and see both aspects are there. The resource network interface and the variable that says "Admins is my resource group".

So, what's the actual problem?

  • What I initially thought was the problem (it wasn’t)

    My environment was corrupted; It was looking for elements that weren't there, and wasn't trying to create them as it should.

    I had to make a new one with terraform workspace new [name].

    The fix was easy, but the error message was lacking.

It was a phenomenon known as Terraform Drift - When you create things in Terraform and delete them in Azure, Terraform is like "What, where's this resource? HELP ME! I CAN'T CONTINUE."

So while changing the workspace with terraform workspace new [name] did work, I also went into the state file and deleted the no-longer-existent resource which is not good practice, but it's learning practice.

Read my notes about solving the issue here.

Further Research Needed

The documentation I've found is a little unclear sometimes. Some parts of the code, It took more context clues to find out what meant what - and I'm still not 100% sure.

resource "azurerm_virtual_machine" "CloudskilsDevVM"

I'm pretty sure the name of the second part ("CloudskilsDevVM") would be the name, however, the next line in the brackets is

name = "cloudskillsvm"

So what is "CloudskilsDevVM"?

I still haven't figured it out, but my code works. So, whoo! Can't wait to learn more. This will come in handy when I build out Azure Companies.

 

 

Comments

Popular posts from this blog

Connecting IoT Devices to a Registration Server (Packet Tracer, Cisco)

In Packet Tracer, a demo software made by Cisco Systems. It certainly has changed a lot since 2016. It's almost an Olympic feat to even get started with it now, but it does look snazzy. This is for the new CCNA, that integrates, among other things, IoT and Automation, which I've worked on here before. Instructions here . I don't know if this is an aspect of "Let's make sure people are paying attention and not simply following blindly", or an oversight - The instructions indicate a Meraki Server, when a regular one is the working option here. I have to enable the IoT service on this server. Also, we assign the server an IPv4 address from a DHCP pool instead of giving it a static one. For something that handles our IoT business, perhaps that's safer; Getting a new IPv4 address every week or so is a minimal step against an intruder, but it is a step. There are no devices associated with this new server; In an earlier lab (not shown), I attached them to 'H

What Do You Need? [AKA; List of Offered Services / My Next Role] (2020)

UPDATED 2021 I am a trusted outsourced remote consultant for your company.   I enjoy having the flexibility to take on temporary projects from time to time! I start at part-time, temp work for now. If we like each other, we can renegotiate. If anything sounds weird, out there, or unusual - Feel free to e-mail me , because I probably think it's awesome. 3 Services Offered Technical: Cloud Technician     Azure [ See tag ] Subcategories: Infrastructure As Code (Specifically Terraform/Azure and CloudFormation/AWS ) Azure Networking I really like the Azure space, and will continue down that path.  Support [Web: Example Job Description ] [Text : Example Description ]     I help you with adjustments in HTML, CSS, and Javascript.     When you email a business a question and they answer? That's me.   Auditing :  Something doesn't work on your page or in your app. I can find it. [ Here ] [ Example Job Description ]   I really enjoy testing apps and webpage concepts! I have an

The Webpage: Zero Grocery

 I have always liked the idea of a grocer where I can get a small amount of what I need to try a recipe. I don't need 4lbs of sugar for 12 cookies. Some places used to operate like that, buying things in "Stick it in your bag amounts and we'll weigh it." (RIP, Lucky's Market).  Zero Grocery is the next best thing, offering delivery of food, spices, and underground culinary treats to your (California only) doorstep in reusable containers.      You may be thinking that in the times of COVID, people would be hesitant about reusing glass jars strangers have stuck their fingers in. Not so ; [CEO, Zuleyka] Strasner says that customers haven’t been squeamish about reusable packaging during the pandemic. You don't need an account or subscription to browse the goodies , though you will need a zip code in their delivery range to stick them in the basket.  Come with me as I step through my first impressions of the site here - There's a lot to like. This is not a spo