Cloud Resume Challenge
Published: 2022-09-07 13:29:33


## A little about Me:

Hello, My name is Melanie and I am a Cloud Engineer & Infrastructure enthusiast keen on the best practices in DevOps.
I am an accomplished and results driven IT engineering professional for over a decade that has made the transition to Cloud Architecture.

### The Challenge:

I was very excited to start the challenge for a few reasons. Firstly, I have been meaning to create a personal website for a while now. Secondly, I recently passed the Azure Administrator - AZ104 certification exam. And finally, my favourite way to learn anything new is to build something.

As part of my journey through learning and working in Cloud, I came across the Cloud Resume Challenge online (LinkedIn) by [Forrest Brazeal](https://www.linkedin.com/in/forrestbrazeal/).

> It incorporates many of the skills that real cloud and DevOps engineers use in their daily work.

- Details of this challenge can be found [here](https://cloudresumechallenge.dev/docs/the-challenge/).

It sounds simple on the surface, but the design of the challenge requires you to use multiple Azure services (CDN, Azure CLI, AZCopy, Blob Storage etc..), configure DNS for your custom domain, write some code and implement CI/CD using GitHub. 

### Prerequisites:

- Free Azure account
- Free GitHub account
- A domain from any DNS provider
- A text editor like Visual Code 

### Diagram:

The following **diagram** shows how it all works together:

![Azure Diagram](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kne1zj5pjhbg832es829.png)

### The Frontend:

Before reading on you can view my finished resume [here](http://melaniescloud.tech/) and the repository for the front end can be found on GitHub [here](https://github.com/melanierau/CloudResume/tree/main).

For the frontend, I started by creating a GIT repository to maintain clean source control and utilize my code anywhere I needed to. 

#### Adding and editing content:

A blog site is of course intended to share content with the rest of the world. I quickly put together a “Hello World!” HTML file and put it to one side so that I could get on with making everything work.

#### Azure Subscription:

I then logged into the Azure portal and once I had my Subscription created I was ready to start.

#### Azure CLI:

I used Azure CLI locally to sign in using the az login command to use any CLI commands.

Then I created the resource group by using the following command:
`az group create \
    --name cloudresume_rg \
    --location westeurope`

#### Azure Storage Account:

I choose the Western Europe region, I will use the Standard LRS SKU, and am naming my storage account “cloudresumedevopssa”.
For that I created a storage account by using the following command:

`az storage account create \
    --name cloudresumedevopssa \
    --resource-group cloudresume_rg \
    --location westeurope \
    --sku Standard_LRS`

#### Azure CDN endpoint & profile:

I enabled the static website feature.

`az storage blob service-properties update \
    --account-name cloudresumedevopssa \
    --static-website \
    --404-document 404.html \
    --index-document index.html`

To create a Azure CDN endpoint and add a HTTPS supported custom domain, I'll first had to create a CDN profile. Created it using the following command in Azure CLI:

`az cdn profile create \
    --name cloudresumedevopssa-cdnp \
    --resource-group cloudresume-rg \
    --location westeurope \
    --sku Standard_Microsoft `

#### GitHub actions with AzureCLI:

I choose to use GitHub actions over Azure Devops Pipelines for the reasons below.

Azure DevOps is open-source friendly but does not go nearly as far as GitHub. The service has a significant overlap with GitHub, but it aims to be a comprehensive platform for managing DevOps. 

GitHub is used by government entities across the globe and the majority of leading tech enterprises in business today: Google, Adobe, Twitter, PayPal, Facebook, LinkedIn, Yahoo, and countless others.

Azure CLI extension can be installed by running the command az extension add --name deploy-to-azure, and it supports deployments to Azure Container Instance via the az container app up commands.

First I ran the az extension add command to install the extension:

`az extension add \
  --name deploy-to-azure`

The I ran the az container app up command:

`az container app up \
  --acr https://cloudresumedevopssa.blob.core.windows.net/$web \
  --repository https://github.com/melanierau/azure-resume`

After the command commits the workflow file to the repo, the workflow was triggered.

In GitHub actions it will show when it gets triggered or it's done. I can do this via Azure CLI or if I change code in VSCode via the extension from the marketplace.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2e04t3wywpxj8ghdxajd.png)


### The End of the story:

Thank you Forrest Brazeal for creating this challenge, and for creating the opportunity to meet the other takers of this challenge and network with like-minded individuals.