Whitespace Removal
Remaining pages in EN
This commit is contained in:
parent
b51140167c
commit
6693ddc861
@ -17,7 +17,7 @@ metadata:
|
||||
spec:
|
||||
selector:
|
||||
app: elasticsearch
|
||||
#Renderes The service Headless
|
||||
#Renders The service Headless
|
||||
clusterIP: None
|
||||
ports:
|
||||
- port: 9200
|
||||
|
@ -1,13 +1,14 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Introduction - Day 1'
|
||||
title: "#90DaysOfDevOps - Introduction - Day 1"
|
||||
published: true
|
||||
description: 90DaysOfDevOps - Introduction
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048731
|
||||
date: '2022-04-17T10:12:40Z'
|
||||
date: "2022-04-17T10:12:40Z"
|
||||
---
|
||||
|
||||
## Introduction - Day 1
|
||||
|
||||
Day 1 of our 90 days and adventure to learn a good foundational understanding of DevOps and tools that help with a DevOps mindset.
|
||||
|
@ -1,13 +1,14 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Responsibilities of a DevOps Engineer - Day 2'
|
||||
title: "#90DaysOfDevOps - Responsibilities of a DevOps Engineer - Day 2"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Responsibilities of a DevOps Engineer
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048699
|
||||
date: '2022-04-17T21:15:34Z'
|
||||
date: "2022-04-17T21:15:34Z"
|
||||
---
|
||||
|
||||
## Responsibilities of a DevOps Engineer
|
||||
|
||||
Hopefully, you are coming into this off the back of going through the resources and posting on [Day1 of #90DaysOfDevOps](day01.md)
|
||||
@ -59,10 +60,11 @@ This is where we are going to end this day of learning, hopefully, this was usef
|
||||
I am always open to adding additional resources to these readme files as it is here as a learning tool.
|
||||
|
||||
My advice is to watch all of the below and hopefully you also picked something up from the text and explanations above.
|
||||
|
||||
- [What is DevOps? - TechWorld with Nana](https://www.youtube.com/watch?v=0yWAtQ6wYNM)
|
||||
- [What is DevOps? - GitHub YouTube](https://www.youtube.com/watch?v=kBV8gPVZNEE)
|
||||
- [What is DevOps? - IBM YouTube](https://www.youtube.com/watch?v=UbtB4sMaaNM)
|
||||
- [What is DevOps? - AWS ](https://aws.amazon.com/devops/what-is-devops/)
|
||||
- [What is DevOps? - AWS](https://aws.amazon.com/devops/what-is-devops/)
|
||||
- [What is DevOps? - Microsoft](https://docs.microsoft.com/en-us/devops/what-is-devops)
|
||||
|
||||
If you made it this far then you will know if this is where you want to be or not. See you on [Day 3](day03.md).
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Application Focused - Day 3'
|
||||
title: "#90DaysOfDevOps - Application Focused - Day 3"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Application Focused
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048825
|
||||
---
|
||||
|
||||
## DevOps Lifecycle - Application Focused
|
||||
|
||||
As we continue through these next few weeks we are 100% going to come across these titles (Continuous Development, Testing, Deployment, Monitor) over and over again, If you are heading towards the DevOps Engineer role then repeatability will be something you will get used to but constantly enhancing each time is another thing that keeps things interesting.
|
||||
@ -14,6 +15,7 @@ As we continue through these next few weeks we are 100% going to come across the
|
||||
In this hour we are going to take a look at the high-level view of the application from start to finish and then back around again like a constant loop.
|
||||
|
||||
### Development
|
||||
|
||||
Let's take a brand new example of an Application, to start with we have nothing created, maybe as a developer, you have to discuss with your client or end user the requirements and come up with some sort of plan or requirements for your Application. We then need to create from the requirements our brand new application.
|
||||
|
||||
In regards to tooling at this stage, there is no real requirement here other than choosing your IDE and the programming language you wish to use to write your application.
|
||||
@ -27,6 +29,7 @@ We previously mentioned that this application can be written in any language. Im
|
||||
It is also likely that it will not be one developer working on this project although this could be the case even so best practices would require a code repository to store and collaborate on the code, this could be private or public and could be hosted or privately deployed generally speaking you would hear the likes of **GitHub or GitLab** being used as a code repository. Again we will cover these as part of our section on **Git** later on.
|
||||
|
||||
### Testing
|
||||
|
||||
At this stage, we have our requirements and we have our application being developed. But we need to make sure we are testing our code in all the different environments that we have available to us or specifically maybe to the programming language chosen.
|
||||
|
||||
This phase enables QA to test for bugs, more frequently we see containers being used for simulating the test environment which overall can improve on cost overheads of physical or cloud infrastructure.
|
||||
@ -46,6 +49,7 @@ Now you might at this stage be saying "but we don't create applications, we buy
|
||||
I would also suggest just having this above knowledge is very important as you might buy off the shelf software today, but what about tomorrow or down the line... next job maybe?
|
||||
|
||||
### Deployment
|
||||
|
||||
Ok so we have our application built and tested against the requirements of our end user and we now need to go ahead and deploy this application into production for our end users to consume.
|
||||
|
||||
This is the stage where the code is deployed to the production servers, now this is where things get extremely interesting and it is where the rest of our 86 days dives deeper into these areas. Because different applications require different possibly hardware or configurations. This is where **Application Configuration Management** and **Infrastructure as Code** could play a key part in your DevOps lifecycle. It might be that your application is **Containerised** but also available to run on a virtual machine. This then also leads us onto platforms like **Kubernetes** which would be orchestrating those containers and making sure you have the desired state available to your end users.
|
||||
@ -62,7 +66,7 @@ This section is also where we are going to capture that feedback wheel about the
|
||||
|
||||
Reliability is a key factor here as well, at the end of the day we want our Application to be available all the time it is required. This then leads to other **observability, security and data management** areas that should be continuously monitored and feedback can always be used to better enhance, update and release the application continuously.
|
||||
|
||||
Some input from the community here specifically [@_ediri](https://twitter.com/_ediri) mentioned also part of this continuous process we should also have the FinOps teams involved. Apps & Data are running and stored somewhere you should be monitoring this continuously to make sure if things change from a resources point of view your costs are not causing some major financial pain on your Cloud Bills.
|
||||
Some input from the community here specifically [@\_ediri](https://twitter.com/_ediri) mentioned also part of this continuous process we should also have the FinOps teams involved. Apps & Data are running and stored somewhere you should be monitoring this continuously to make sure if things change from a resources point of view your costs are not causing some major financial pain on your Cloud Bills.
|
||||
|
||||
I think it is also a good time to bring up the "DevOps Engineer" mentioned above, albeit there are many DevOps Engineer positions in the wild that people hold, this is not the ideal way of positioning the process of DevOps. What I mean is from speaking to others in the community the title of DevOps Engineer should not be the goal for anyone because really any position should be adopting DevOps processes and the culture explained here. DevOps should be used in many different positions such as Cloud-Native engineer/architect, virtualisation admin, cloud architect/engineer, and infrastructure admin. This is to name a few but the reason for using DevOps Engineer above was really to highlight the scope of the process used by any of the above positions and more.
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - DevOps & Agile - Day 4'
|
||||
title: "#90DaysOfDevOps - DevOps & Agile - Day 4"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - DevOps & Agile
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048700
|
||||
@ -71,11 +71,11 @@ DevOps uses tools for team communication, software development, deployment and i
|
||||
|
||||
The combination of Agile and DevOps brings the following benefits you will get:
|
||||
|
||||
- Flexible management and powerful technology.
|
||||
- Agile practices help DevOps teams to communicate their priorities more efficiently.
|
||||
- The automation cost that you have to pay for your DevOps practices is justified by your agile requirement of deploying quickly and frequently.
|
||||
- It leads to strengthening: the team adopting agile practices will improve collaboration, increase the team's motivation and decrease employee turnover rates.
|
||||
- As a result, you get better product quality.
|
||||
- Flexible management and powerful technology.
|
||||
- Agile practices help DevOps teams to communicate their priorities more efficiently.
|
||||
- The automation cost that you have to pay for your DevOps practices is justified by your agile requirement of deploying quickly and frequently.
|
||||
- It leads to strengthening: the team adopting agile practices will improve collaboration, increase the team's motivation and decrease employee turnover rates.
|
||||
- As a result, you get better product quality.
|
||||
|
||||
Agile allows coming back to previous product development stages to fix errors and prevent the accumulation of technical debt. To adopt agile and DevOps
|
||||
simultaneously just follow 7 steps:
|
||||
@ -92,8 +92,8 @@ What do you think? Do you have different views? I want to hear from Developers,
|
||||
|
||||
### Resources
|
||||
|
||||
- [DevOps for Developers – Day in the Life: DevOps Engineer in 2021](https://www.youtube.com/watch?v=2JymM0YoqGA)
|
||||
- [3 Things I wish I knew as a DevOps Engineer](https://www.youtube.com/watch?v=udRNM7YRdY4)
|
||||
- [How to become a DevOps Engineer feat. Shawn Powers](https://www.youtube.com/watch?v=kDQMjAQNvY4)
|
||||
- [DevOps for Developers – Day in the Life: DevOps Engineer in 2021](https://www.youtube.com/watch?v=2JymM0YoqGA)
|
||||
- [3 Things I wish I knew as a DevOps Engineer](https://www.youtube.com/watch?v=udRNM7YRdY4)
|
||||
- [How to become a DevOps Engineer feat. Shawn Powers](https://www.youtube.com/watch?v=kDQMjAQNvY4)
|
||||
|
||||
If you made it this far then you will know if this is where you want to be or not. See you on [Day 5](day05.md).
|
||||
|
@ -1,70 +1,71 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Plan > Code > Build > Testing > Release > Deploy > Operate > Monitor > - Day 5'
|
||||
title: "#90DaysOfDevOps - Plan > Code > Build > Testing > Release > Deploy > Operate > Monitor > - Day 5"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Plan > Code > Build > Testing > Release > Deploy > Operate > Monitor >
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048830
|
||||
---
|
||||
|
||||
## Plan > Code > Build > Testing > Release > Deploy > Operate > Monitor >
|
||||
|
||||
Today we are going to focus on the individual steps from start to finish and the continuous cycle of an Application in a DevOps world.
|
||||
|
||||

|
||||
|
||||
### Plan:
|
||||
### Plan
|
||||
|
||||
It all starts with the planning process this is where the development team gets together and figures out what types of features and bug fixes they're going to roll out in their next sprint. This is an opportunity as a DevOps Engineer for you to get involved with that and learn what kinds of things are going to be coming your way that you need to be involved with and also influence their decisions or their path and kind of help them work with the infrastructure that you've built or steer them towards something that's going to work better for them in case they're not on that path and so one key thing to point out here is the developers or software engineering team is your customer as a DevOps engineer so this is your opportunity to work with your customer before they go down a bad path.
|
||||
|
||||
### Code:
|
||||
### Code
|
||||
|
||||
Now once that planning session's done they're going to go start writing the code you may or may not be involved a whole lot with this one of the places you may get involved with it, is whenever they're writing code you can help them better understand the infrastructure so if they know what services are available and how to best talk with those services so they're going to do that and then once they're done they'll merge that code into the repository
|
||||
|
||||
### Build:
|
||||
### Build
|
||||
|
||||
This is where we'll kick off the first of our automation processes because we're going to take their code and we're going to build it depending on what language they're using it may be transpiring it or compiling it or it might be creating a docker image from that code either way we're going to go through that process using our ci cd pipeline
|
||||
|
||||
## Testing:
|
||||
## Testing
|
||||
|
||||
Once we've built it we're going to run some tests on it now the development team usually writes the test you may have some input in what tests get written but we need to run those tests and the testing is a way for us to try and minimise introducing problems out into production, it doesn't guarantee that but we want to get as close to a guarantee as we can that were one not introducing new bugs and two not breaking things that used to work
|
||||
|
||||
## Release:
|
||||
## Release
|
||||
|
||||
Once those tests pass we're going to do the release process and depending again on what type of application you're working on this may be a non-step. You know the code may just live in the GitHub repo or the git repository or wherever it lives but it may be the process of taking your compiled code or the docker image that you've built and putting it into a registry or a repository where it's accessible by your production servers for the deployment process
|
||||
|
||||
## Deploy:
|
||||
## Deploy
|
||||
|
||||
which is the thing that we do next because deployment is like the end game of this whole thing because deployments are when we put the code into production and it's not until we do that that our business realizes the value from all the time effort and hard work that you and the software engineering team have put into this product up to this point.
|
||||
|
||||
## Operate:
|
||||
## Operate
|
||||
|
||||
Once it's deployed we are going to operate it and operate it may involve something like you start getting calls from your customers that they're all annoyed that the site's running slow or their application is running slow right so you need to figure out why that is and then possibly build auto-scaling you know to handle increase the number of servers available during peak periods and decrease the number of servers during off-peak periods either way that's all operational type metrics, another operational thing that you do is include like a feedback loop from production back to your ops team letting you know about key events that happened in production such as a deployment back one step on the deployment thing this may or may not get automated depending on your environment the goal is to always automate it when possible there are some environments where you possibly need to do a few steps before you're ready to do that but ideally you want to deploy automatically as part of your automation process but if you're doing that it might be a good idea to include in your operational steps some type of notification so that your ops team knows that a deployment has happened
|
||||
|
||||
## Monitor:
|
||||
## Monitor
|
||||
|
||||
All of the above parts lead to the final step because you need to have monitoring, especially around operational issues auto-scaling troubleshooting like you don't know
|
||||
there's a problem if you don't have monitoring in place to tell you that there's a problem so some of the things you might build monitoring for are memory utilization CPU utilization disk space, API endpoint, response time, how quickly that endpoint is responding and a big part of that as well is logs. Logs give developers the ability to see what is happening without having to access production systems.
|
||||
there's a problem if you don't have monitoring in place to tell you that there's a problem so some of the things you might build monitoring for are memory utilization CPU utilization disk space, API endpoint, response time, how quickly that endpoint is responding and a big part of that as well is logs. Logs give developers the ability to see what is happening without having to access production systems.
|
||||
|
||||
## Rince & Repeat:
|
||||
## Rinse & Repeat
|
||||
|
||||
Once that's in place you go right back to the beginning to the planning stage and go through the whole thing again
|
||||
|
||||
## Continuous:
|
||||
## Continuous
|
||||
|
||||
Many tools help us achieve the above continuous process, all this code and the ultimate goal of being completely automated, cloud infrastructure or any environment is often described as Continuous Integration/ Continuous Delivery/Continous Deployment or “CI/CD” for short. We will spend a whole week on CI/CD later on in the 90 Days with some examples and walkthroughs to grasp the fundamentals.
|
||||
|
||||
### Continuous Delivery:
|
||||
### Continuous Delivery
|
||||
|
||||
Continuous Delivery = Plan > Code > Build > Test
|
||||
|
||||
### Continuous Integration:
|
||||
### Continuous Integration
|
||||
|
||||
This is effectively the outcome of the Continuous Delivery phases above plus the outcome of the Release phase. This is the case for both failure and success but this is fed back into continuous delivery or moved to Continuous Deployment.
|
||||
|
||||
Continuous Integration = Plan > Code > Build > Test > Release
|
||||
|
||||
### Continuous Deployment:
|
||||
### Continuous Deployment
|
||||
|
||||
If you have a successful release from your continuous integration then move to Continuous Deployment which brings in the following phases
|
||||
|
||||
@ -74,10 +75,10 @@ You can see these three Continuous notions above as the simple collection of pha
|
||||
|
||||
This last bit was a bit of a recap for me on Day 3 but think this makes things clearer for me.
|
||||
|
||||
### Resources:
|
||||
### Resources
|
||||
|
||||
- [DevOps for Developers – Software or DevOps Engineer?](https://www.youtube.com/watch?v=a0-uE3rOyeU)
|
||||
- [Techworld with Nana -DevOps Roadmap 2022 - How to become a DevOps Engineer? What is DevOps? ](https://www.youtube.com/watch?v=9pZ2xmsSDdo&t=125s)
|
||||
- [Techworld with Nana -DevOps Roadmap 2022 - How to become a DevOps Engineer? What is DevOps?](https://www.youtube.com/watch?v=9pZ2xmsSDdo&t=125s)
|
||||
- [How to become a DevOps Engineer in 2021 - DevOps Roadmap](https://www.youtube.com/watch?v=5pxbp6FyTfk)
|
||||
|
||||
If you made it this far then you will know if this is where you want to be or not.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - DevOps - The real stories - Day 6'
|
||||
title: "#90DaysOfDevOps - DevOps - The real stories - Day 6"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - DevOps - The real stories
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048855
|
||||
---
|
||||
|
||||
## DevOps - The real stories
|
||||
|
||||
DevOps to begin with was seen to be out of reach for a lot of us as we didn't have an environment or requirement anything like a Netflix or fortune 500 but think now that is beginning to sway into the normal when adopting a DevOps practice within any type of business.
|
||||
@ -20,11 +21,13 @@ I wanted to take this Day to look at successful companies that have adopted a De
|
||||
I mentioned Netflix above and will touch on them again as it is a very good model and advanced to what we generally see today even still but will also mention some other big name brands that are succeeding it seems.
|
||||
|
||||
## Amazon
|
||||
|
||||
In 2010 Amazon moved their physical server footprint to Amazon Web Services (AWS) cloud this allowed them to save resources by scaling capacity up and down in very small increments. We also know that this AWS cloud would go on and make a huge amount of revenue itself whilst still running the Amazon retail branch of the company.
|
||||
|
||||
Amazon adopted in 2011 (According to the resource below) a continued deployment process where their developers could deploy code whenever they want and to whatever servers they needed. This enabled Amazon to achieve deploying new software to production servers on average every 11.6 seconds!
|
||||
|
||||
## Netflix
|
||||
|
||||
Who doesn't use Netflix? a huge quality streaming service with by all accounts at least personally a great user experience.
|
||||
|
||||
Why is that user experience so great? Well, the ability to deliver a service with no recollected memory for me at least of glitches requires speed, flexibility, and attention to quality.
|
||||
@ -36,13 +39,13 @@ Continuous Monitoring is in place so that if the deployment of the images fails,
|
||||
There is a great talk listed below that goes into more about the DOs and DONTs that Netflix lives and dies by within their teams.
|
||||
|
||||
## Etsy
|
||||
|
||||
As with many of us and many companies, there was a real struggle around slow and painful deployments. In the same vein, we might have also experienced working in companies that have lots of siloes and teams that are not working well together.
|
||||
|
||||
From what I can make out at least from reading about Amazon and Netflix, Etsy might have adopted the letting developers deploy their code around the end of 2009 which might have been before the other two were mentioned. (interesting!)
|
||||
|
||||
An interesting takeaway I read here was that they realised that when developers feel responsible for deployment they also would take responsibility for application performance, uptime and other goals.
|
||||
|
||||
|
||||
A learning culture is a key part of DevOps, even failure can be a success if lessons are learned. (not sure where this quote came from but it kind of makes sense!)
|
||||
|
||||
I have added some other stories where DevOps has changed the game within some of these massively successful companies.
|
||||
|
@ -1,17 +1,18 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Big Picture: Learning a Programming Language - Day 7'
|
||||
title: "#90DaysOfDevOps - The Big Picture: Learning a Programming Language - Day 7"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Big Picture DevOps & Learning a Programming Language
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048856
|
||||
---
|
||||
|
||||
## The Big Picture: DevOps & Learning a Programming Language
|
||||
|
||||
I think it is fair to say to be successful in the long term as a DevOps engineer you've got to know at least one programming language at a foundational level. I want to take this first session of this section to explore why this is such a critical skill to have, and hopefully, by the end of this week or section, you are going to have a better understanding of the why, how and what to do to progress with your learning journey.
|
||||
|
||||
I think if I was to ask out on social do you need to have programming skills for DevOps related roles, the answer will be most likely a hard yes? Let me know if you think otherwise? Ok but then a bigger question and this is where you won't get such a clear answer which programming language? The most common answer I have seen here has been Python or increasingly more often, we're seeing Golang or Go should be the language that you learn.
|
||||
I think if I was to ask out on social do you need to have programming skills for DevOps related roles, the answer will be most likely a hard yes? Let me know if you think otherwise? Ok but then a bigger question and this is where you won't get such a clear answer which programming language? The most common answer I have seen here has been Python or increasingly more often, we're seeing Golang or Go should be the language that you learn.
|
||||
|
||||
To be successful in DevOps you have to have a good knowledge of programming skills is my takeaway from that at least. But we have to understand why we need it to choose the right path.
|
||||
|
||||
@ -38,13 +39,14 @@ As I have also mentioned some of the most known DevOps tools and platforms are w
|
||||
What are some of the characteristics of Go that make it great for DevOps?
|
||||
|
||||
## Build and Deployment of Go Programs
|
||||
An advantage of using a language like Python that is interpreted in a DevOps role is that you don’t need to compile a python program before running it. Especially for smaller automation tasks, you don’t want to be slowed down by a build process that requires compilation even though, Go is a compiled programming language, **Go compiles directly into machine code**. Go is known also for fast compilation times.
|
||||
|
||||
An advantage of using a language like Python that is interpreted in a DevOps role is that you don’t need to compile a python program before running it. Especially for smaller automation tasks, you don’t want to be slowed down by a build process that requires compilation even though, Go is a compiled programming language, **Go compiles directly into machine code**. Go is known also for fast compilation times.
|
||||
|
||||
## Go vs Python for DevOps
|
||||
|
||||
Go Programs are statically linked, this means that when you compile a go program everything is included in a single binary executable, and no external dependencies will be required that would need to be installed on the remote machine, this makes the deployment of go programs easy, compared to python program that uses external libraries you have to make sure that all those libraries are installed on the remote machine that you wish to run on.
|
||||
|
||||
Go is a platform-independent language, which means you can produce binary executables for *all the operating systems, Linux, Windows, macOS etc and very easy to do so. With Python, it is not as easy to create these binary executables for particular operating systems.
|
||||
Go is a platform-independent language, which means you can produce binary executables for \*all the operating systems, Linux, Windows, macOS etc and very easy to do so. With Python, it is not as easy to create these binary executables for particular operating systems.
|
||||
|
||||
Go is a very performant language, it has fast compilation and fast run time with lower resource usage like CPU and memory especially compared to python, numerous optimisations have been implemented in the Go language that makes it so performant. (Resources below)
|
||||
|
||||
@ -61,7 +63,7 @@ I will say that once you have or at least I am told as I am not many pages into
|
||||
- [Jake Wright - Learn Go in 12 minutes](https://www.youtube.com/watch?v=C8LgvuEBraI&t=312s)
|
||||
- [Techworld with Nana - Golang full course - 3 hours 24 mins](https://www.youtube.com/watch?v=yyUHQIec83I)
|
||||
- [**NOT FREE** Nigel Poulton Pluralsight - Go Fundamentals - 3 hours 26 mins](https://www.pluralsight.com/courses/go-fundamentals)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
|
||||
|
||||
Now for the next 6 days of this topic, I intend to work through some of the resources listed above and document my notes for each day. You will notice that they are generally around 3 hours as a full course, I wanted to share my complete list so that if you have time you should move ahead and work through each one if time permits, I will be sticking to my learning hour each day.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Setting up your DevOps environment for Go & Hello World - Day 8'
|
||||
title: "#90DaysOfDevOps - Setting up your DevOps environment for Go & Hello World - Day 8"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Setting up your DevOps environment for Go & Hello World
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048857
|
||||
---
|
||||
|
||||
## Setting up your DevOps environment for Go & Hello World
|
||||
|
||||
Before we get into some of the fundamentals of Go we should get Go installed on our workstation and do what every "learning programming 101" module teaches us which is to create the Hello World app. As this one is going to be walking through the steps to get Go installed on your workstation we are going to attempt to document the process in pictures so people can easily follow along.
|
||||
@ -15,7 +16,7 @@ First of all, let's head on over to [go.dev/dl](https://go.dev/dl/) and you will
|
||||
|
||||

|
||||
|
||||
If we made it this far you probably know which workstation operating system you are running so select the appropriate download and then we can get installing. I am using Windows for this walkthrough, basically, from this next screen, we can leave all the defaults in place for now. ***(I will note that at the time of writing this was the latest version so screenshots might be out of date)***
|
||||
If we made it this far you probably know which workstation operating system you are running so select the appropriate download and then we can get installing. I am using Windows for this walkthrough, basically, from this next screen, we can leave all the defaults in place for now. **_(I will note that at the time of writing this was the latest version so screenshots might be out of date)_**
|
||||
|
||||

|
||||
|
||||
@ -72,11 +73,13 @@ func main() {
|
||||
fmt.Println("Hello #90DaysOfDevOps")
|
||||
}
|
||||
```
|
||||
|
||||
Now I appreciate that the above might make no sense at all, but we will cover more about functions, packages and more in later days. For now, let's run our app. Back in the terminal and in our Hello folder we can now check that all is working. Using the command below we can check to see if our generic learning program is working.
|
||||
|
||||
```
|
||||
go run main.go
|
||||
```
|
||||
|
||||

|
||||
|
||||
It doesn't end there though, what if we now want to take our program and run it on other Windows machines? We can do that by building our binary using the following command
|
||||
@ -84,6 +87,7 @@ It doesn't end there though, what if we now want to take our program and run it
|
||||
```
|
||||
go build main.go
|
||||
```
|
||||
|
||||

|
||||
|
||||
If we run that, we would see the same output:
|
||||
@ -100,7 +104,7 @@ Hello #90DaysOfDevOps
|
||||
- [Jake Wright - Learn Go in 12 minutes](https://www.youtube.com/watch?v=C8LgvuEBraI&t=312s)
|
||||
- [Techworld with Nana - Golang full course - 3 hours 24 mins](https://www.youtube.com/watch?v=yyUHQIec83I)
|
||||
- [**NOT FREE** Nigel Poulton Pluralsight - Go Fundamentals - 3 hours 26 mins](https://www.pluralsight.com/courses/go-fundamentals)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
|
||||
|
||||
See you on [Day 9](day09.md).
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Let''s explain the Hello World code - Day 9'
|
||||
title: "#90DaysOfDevOps - Let's explain the Hello World code - Day 9"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Let's explain the Hello World code
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1099682
|
||||
---
|
||||
|
||||
## Let's explain the Hello World code
|
||||
|
||||
### How Go works
|
||||
@ -16,6 +17,7 @@ On [Day 8](day08.md) we walked through getting Go installed on your workstation
|
||||
In this section, we are going to take a deeper look into the code and understand a few more things about the Go language.
|
||||
|
||||
### What is Compiling?
|
||||
|
||||
Before we get into the [6 lines of the Hello World code](Go/hello.go) we need to have a bit of an understanding of compiling.
|
||||
|
||||
Programming languages that we commonly use such as Python, Java, Go and C++ are high-level languages. Meaning they are human-readable but when a machine is trying to execute a program it needs to be in a form that a machine can understand. We have to translate our human-readable code to machine code which is called compiling.
|
||||
@ -25,6 +27,7 @@ Programming languages that we commonly use such as Python, Java, Go and C++ are
|
||||
From the above you can see what we did on [Day 8](day08.md) here, we created a simple Hello World main.go and we then used the command `go build main.go` to compile our executable.
|
||||
|
||||
### What are packages?
|
||||
|
||||
A package is a collection of source files in the same directory that are compiled together. We can simplify this further, a package is a bunch of .go files in the same directory. Remember our Hello folder from Day 8? If and when you get into more complex Go programs you might find that you have folder1 folder2 and folder3 containing different.go files that make up your program with multiple packages.
|
||||
|
||||
We use packages so we can reuse other people's code, we don't have to write everything from scratch. Maybe we are wanting a calculator as part of our program, you could probably find an existing Go Package that contains the mathematical functions that you could import into your code saving you a lot of time and effort in the long run.
|
||||
@ -32,6 +35,7 @@ We use packages so we can reuse other people's code, we don't have to write ever
|
||||
Go encourages you to organise your code in packages so that it is easy to reuse and maintain source code.
|
||||
|
||||
### Hello #90DaysOfDevOps Line by Line
|
||||
|
||||
Now let's take a look at our Hello #90DaysOfDevOps main.go file and walk through the lines.
|
||||
|
||||

|
||||
@ -72,7 +76,7 @@ the `Println()` that we have here is a way in which to write standard output to
|
||||
- [Jake Wright - Learn Go in 12 minutes](https://www.youtube.com/watch?v=C8LgvuEBraI&t=312s)
|
||||
- [Techworld with Nana - Golang full course - 3 hours 24 mins](https://www.youtube.com/watch?v=yyUHQIec83I)
|
||||
- [**NOT FREE** Nigel Poulton Pluralsight - Go Fundamentals - 3 hours 26 mins](https://www.pluralsight.com/courses/go-fundamentals)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
|
||||
|
||||
See you on [Day 10](day10.md).
|
||||
|
@ -1,13 +1,15 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Go Workspace - Day 10'
|
||||
title: "#90DaysOfDevOps - The Go Workspace - Day 10"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Go Workspace
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048701
|
||||
---
|
||||
|
||||
### The Go Workspace
|
||||
|
||||
On [Day 8](day08.md) we briefly covered the Go workspace to get Go up and running to get to the demo of `Hello #90DaysOfDevOps` But we should explain a little more about the Go workspace.
|
||||
|
||||
Remember we chose the defaults and we then went through and created our Go folder in the GOPATH that was already defined but in reality, this GOPATH can be changed to be wherever you want it to be.
|
||||
@ -17,11 +19,13 @@ If you run
|
||||
```
|
||||
echo $GOPATH
|
||||
```
|
||||
|
||||
The output should be similar to mine (with a different username may be) which is:
|
||||
|
||||
```
|
||||
/home/michael/projects/go
|
||||
```
|
||||
|
||||
Then here, we created 3 directories. **src**, **pkg** and **bin**
|
||||
|
||||

|
||||
@ -45,6 +49,7 @@ Our Hello #90DaysOfDevOps is not a complex program so here is an example of a mo
|
||||
This page also goes into some great detail about why and how the layout is like this it also goes a little deeper on other folders we have not mentioned [GoChronicles](https://gochronicles.com/project-structure/)
|
||||
|
||||
### Compiling & running code
|
||||
|
||||
On [Day 9](day09.md) we also covered a brief introduction to compiling code, but we can go a little deeper here.
|
||||
|
||||
To run our code we first must **compile** it. There are three ways to do this within Go.
|
||||
@ -72,8 +77,8 @@ The ones we want to learn more about are the build, install and run.
|
||||

|
||||
|
||||
- `go run` - This command compiles and runs the main package comprised of the .go files specified on the command line. The command is compiled to a temporary folder.
|
||||
- `go build` - To compile packages and dependencies, compile the package in the current directory. If the `main` package, will place the executable in the current directory if not then it will place the executable in the `pkg` folder. `go build` also enables you to build an executable file for any Go Supported OS platform.
|
||||
- `go install` - The same as go build but will place the executable in the `bin` folder
|
||||
- `go build` - To compile packages and dependencies, compile the package in the current directory. If the `main` package, will place the executable in the current directory if not then it will place the executable in the `pkg` folder. `go build` also enables you to build an executable file for any Go Supported OS platform.
|
||||
- `go install` - The same as go build but will place the executable in the `bin` folder
|
||||
|
||||
We have run through go build and go run but feel free to run through them again here if you wish, `go install` as stated above puts the executable in our bin folder.
|
||||
|
||||
@ -88,7 +93,7 @@ Hopefully, if you are following along you are watching one of the playlists or v
|
||||
- [Jake Wright - Learn Go in 12 minutes](https://www.youtube.com/watch?v=C8LgvuEBraI&t=312s)
|
||||
- [Techworld with Nana - Golang full course - 3 hours 24 mins](https://www.youtube.com/watch?v=yyUHQIec83I)
|
||||
- [**NOT FREE** Nigel Poulton Pluralsight - Go Fundamentals - 3 hours 26 mins](https://www.pluralsight.com/courses/go-fundamentals)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
|
||||
|
||||
See you on [Day 11](day11.md).
|
||||
|
@ -1,8 +1,8 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Variables & Constants in Go - Day 11'
|
||||
title: "#90DaysOfDevOps - Variables & Constants in Go - Day 11"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Variables & Constants in Go
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048862
|
||||
@ -15,6 +15,7 @@ On [Day8](day08.md) we set our environment up, on [Day9](day09.md) we walked thr
|
||||
Today we are going to take a look into Variables, Constants and Data Types whilst writing a new program.
|
||||
|
||||
## Variables & Constants in Go
|
||||
|
||||
Let's start by planning our application, I think it would be a good idea to work on a program that tells us how many days we have remained in our #90DaysOfDevOps challenge.
|
||||
|
||||
The first thing to consider here is that as we are building our app and we are welcoming our attendees and we are giving the user feedback on the number of days they have completed we might use the term #90DaysOfDevOps many times throughout the program. This is a great use case to make #90DaysOfDevOps a variable within our program.
|
||||
@ -30,6 +31,7 @@ Remember to make sure that your variable names are descriptive. If you declare a
|
||||
```
|
||||
var challenge = "#90DaysOfDevOps"
|
||||
```
|
||||
|
||||
With the above set and used as we will see in the next code snippet you can see from the output below that we have used a variable.
|
||||
|
||||
```
|
||||
@ -42,6 +44,7 @@ func main() {
|
||||
fmt.Println("Welcome to", challenge, "")
|
||||
}
|
||||
```
|
||||
|
||||
You can find the above code snippet in [day11_example1.go](Go/day11_example1.go)
|
||||
|
||||
You will then see from the below that we built our code with the above example and we got the output shown below.
|
||||
@ -65,6 +68,7 @@ func main() {
|
||||
fmt.Println("This is a", daystotal, "challenge")
|
||||
}
|
||||
```
|
||||
|
||||
You can find the above code snippet in [day11_example2.go](Go/day11_example2.go)
|
||||
|
||||
If we then go through that `go build` process again and run you will see below the outcome.
|
||||
@ -90,6 +94,7 @@ func main() {
|
||||
fmt.Println("Great work")
|
||||
}
|
||||
```
|
||||
|
||||
You can find the above code snippet in [day11_example3.go](Go/day11_example3.go)
|
||||
|
||||
Let's run through that `go build` process again or you could just use `go run`
|
||||
@ -109,6 +114,7 @@ func main() {
|
||||
```
|
||||
|
||||
## Data Types
|
||||
|
||||
In the above examples, we have not defined the type of variables, this is because we can give it a value here and Go is smart enough to know what that type is or at least can infer what it is based on the value you have stored. However, if we want a user to input this will require a specific type.
|
||||
|
||||
We have used Strings and Integers in our code so far. Integers for the number of days and strings are for the name of the challenge.
|
||||
@ -148,6 +154,7 @@ Because Go implies variables where a value is given we can print out those value
|
||||
```
|
||||
fmt.Printf("challenge is %T, daystotal is %T, dayscomplete is %T\n", conference, daystotal, dayscomplete)
|
||||
```
|
||||
|
||||
There are many different types of integer and float types the links above will cover these in detail.
|
||||
|
||||
- **int** = whole numbers
|
||||
@ -161,7 +168,7 @@ There are many different types of integer and float types the links above will c
|
||||
- [Jake Wright - Learn Go in 12 minutes](https://www.youtube.com/watch?v=C8LgvuEBraI&t=312s)
|
||||
- [Techworld with Nana - Golang full course - 3 hours 24 mins](https://www.youtube.com/watch?v=yyUHQIec83I)
|
||||
- [**NOT FREE** Nigel Poulton Pluralsight - Go Fundamentals - 3 hours 26 mins](https://www.pluralsight.com/courses/go-fundamentals)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
|
||||
|
||||
Next up we are going to start adding some user input functionality to our program so that we are asked how many days have been completed.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Getting user input with Pointers and a finished program - Day 12'
|
||||
title: "#90DaysOfDevOps - Getting user input with Pointers and a finished program - Day 12"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Getting user input with Pointers and a finished program
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048864
|
||||
---
|
||||
|
||||
## Getting user input with Pointers and a finished program
|
||||
|
||||
Yesterday ([Day 11](day11.md)), we created our first Go program that was self-contained and the parts we wanted to get user input for were created as variables within our code and given values, we now want to ask the user for their input to give the variable the value for the end message.
|
||||
@ -36,6 +37,7 @@ This is instead of assigning the value of a variable we want to ask the user for
|
||||
```
|
||||
fmt.Scan(&TwitterName)
|
||||
```
|
||||
|
||||
Notice that we also use `&` before the variable. This is known as a pointer which we will cover in the next section.
|
||||
|
||||
In our code [day12_example2.go](Go/day12_example2.go) you can see that we are asking the user to input two variables, `TwitterName` and `DaysCompleted`
|
||||
@ -51,6 +53,7 @@ For us to do that we have created a variable called `remainingDays` and we have
|
||||
```
|
||||
remainingDays = remainingDays - DaysCompleted
|
||||
```
|
||||
|
||||
You can see how our finished program looks here [day12_example2.go](Go/day12_example3.go).
|
||||
|
||||
If we now run this program you can see that simple calculation is made based on the user input and the value of the `remainingDays`
|
||||
@ -76,7 +79,7 @@ Below is running this code.
|
||||
- [Jake Wright - Learn Go in 12 minutes](https://www.youtube.com/watch?v=C8LgvuEBraI&t=312s)
|
||||
- [Techworld with Nana - Golang full course - 3 hours 24 mins](https://www.youtube.com/watch?v=yyUHQIec83I)
|
||||
- [**NOT FREE** Nigel Poulton Pluralsight - Go Fundamentals - 3 hours 26 mins](https://www.pluralsight.com/courses/go-fundamentals)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
|
||||
|
||||
See you on [Day 13](day13.md).
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Tweet your progress with our new App - Day 13'
|
||||
title: "#90DaysOfDevOps - Tweet your progress with our new App - Day 13"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Tweet your progress with our new App
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048865
|
||||
---
|
||||
|
||||
## Tweet your progress with our new App
|
||||
|
||||
On the final day of looking into this programming language, we have only just touched the surface here of the language but it is at that start that I think we need to get interested and excited and want to dive more into it.
|
||||
@ -14,6 +15,7 @@ On the final day of looking into this programming language, we have only just to
|
||||
Over the last few days, we have taken a small idea for an application and we have added functionality to it, in this session I want to take advantage of those packages we mentioned and create the functionality for our app to not only give you the update of your progress on screen but also send a tweet with the details of the challenge and your status.
|
||||
|
||||
## Adding the ability to tweet your progress
|
||||
|
||||
The first thing we need to do is set up our developer API access with Twitter for this to work.
|
||||
|
||||
Head to the [Twitter Developer Platform](https://developer.twitter.com) and sign in with your Twitter handle and details. Once in you should see something like the below without the app that I already have created.
|
||||
@ -55,6 +57,7 @@ To test this before putting this into our main application, I created a new dire
|
||||
We now need those keys, tokens and secrets we gathered from the Twitter developer portal. We are going to set these in our environment variables. This will depend on the OS you are running:
|
||||
|
||||
Windows
|
||||
|
||||
```
|
||||
set CONSUMER_KEY
|
||||
set CONSUMER_SECRET
|
||||
@ -63,12 +66,14 @@ set ACCESS_TOKEN_SECRET
|
||||
```
|
||||
|
||||
Linux / macOS
|
||||
|
||||
```
|
||||
export CONSUMER_KEY
|
||||
export CONSUMER_SECRET
|
||||
export ACCESS_TOKEN
|
||||
export ACCESS_TOKEN_SECRET
|
||||
```
|
||||
|
||||
At this stage, you can take a look at [day13_example2](Go/day13_example2.go) at the code but you will see here that we are using a struct to define our keys, secrets and tokens.
|
||||
|
||||
We then have a `func` to parse those credentials and make that connection to the Twitter API
|
||||
@ -152,6 +157,7 @@ func main() {
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
The above will either give you an error based on what is happening or it will succeed and you will have a tweet sent with the message outlined in the code.
|
||||
|
||||
## Pairing the two together - Go-Twitter-Bot + Our App
|
||||
@ -261,6 +267,7 @@ func main() {
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
The outcome of this should be a tweet but if you did not supply your environment variables then you should get an error like the one below.
|
||||
|
||||

|
||||
@ -280,6 +287,7 @@ I next want to cover the question, "How do you compile for multiple Operating Sy
|
||||
```
|
||||
go tool dist list
|
||||
```
|
||||
|
||||
Using our `go build` commands so far is great and it will use the `GOOS` and `GOARCH` environment variables to determine the host machine and what the build should be built for. But we can also create other binaries by using the code below as an example.
|
||||
|
||||
```
|
||||
@ -301,7 +309,7 @@ This is what I have used to create the releases you can now see on the [reposito
|
||||
- [Jake Wright - Learn Go in 12 minutes](https://www.youtube.com/watch?v=C8LgvuEBraI&t=312s)
|
||||
- [Techworld with Nana - Golang full course - 3 hours 24 mins](https://www.youtube.com/watch?v=yyUHQIec83I)
|
||||
- [**NOT FREE** Nigel Poulton Pluralsight - Go Fundamentals - 3 hours 26 mins](https://www.pluralsight.com/courses/go-fundamentals)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
|
||||
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
|
||||
- [A great repo full of all things DevOps & exercises](https://github.com/bregman-arie/devops-exercises)
|
||||
- [GoByExample - Example based learning](https://gobyexample.com/)
|
||||
|
@ -1,13 +1,15 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Big Picture: DevOps and Linux - Day 14'
|
||||
title: "#90DaysOfDevOps - The Big Picture: DevOps and Linux - Day 14"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Big Picture DevOps and Linux
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049033
|
||||
---
|
||||
|
||||
## The Big Picture: DevOps and Linux
|
||||
|
||||
Linux and DevOps share very similar cultures and perspectives; both are focused on customization and scalability. Both of these aspects of Linux are of particular importance for DevOps.
|
||||
|
||||
A lot of technologies start on Linux, especially if they are related to software development or managing infrastructure.
|
||||
@ -19,47 +21,35 @@ From a DevOps perspective or any operations role perspective, you are going to c
|
||||
I have been using Linux daily for several years but my go to desktop machine has always been either macOS or Windows. However, when I moved into the Cloud Native role I am in now I took the plunge to make sure that my laptop was fully Linux based and my daily driver, whilst I still needed Windows for work-based applications and a lot of my audio and video gear does not run on Linux I was forcing myself to run a Linux desktop full time to get a better grasp of a lot of the things we are going to touch on over the next 7 days.
|
||||
|
||||
## Getting Started
|
||||
|
||||
I am not suggesting you do the same as me by any stretch as there are easier options which are less destructive but I will say that taking that full-time step forces you to learn faster how to make things work on Linux.
|
||||
|
||||
For the majority of these 7 days, I am going to deploy a Virtual Machine in Virtual Box on my Windows machine. I am also going to deploy a desktop version of a Linux distribution, whereas a lot of the Linux servers you will be administering will likely be servers that come with no GUI and everything is shell-based. However, as I said at the start a lot of the tools that we covered throughout this whole 90 days started on Linux I would also strongly encourage you to dive into running that Linux Desktop for that learning experience as well.
|
||||
|
||||
|
||||
For the rest of this post, we are going to concentrate on getting a Ubuntu Desktop virtual machine up and running in our Virtual Box environment. Now we could just download [Virtual Box](https://www.virtualbox.org/) and grab the latest [Ubuntu ISO](https://ubuntu.com/download) from the sites linked and go ahead and build out our desktop environment but that wouldn't be very DevOps of us, would it?
|
||||
|
||||
|
||||
Another good reason to use most Linux distributions is that they are free and open-source. We are also choosing Ubuntu as it is probably the most widely used distribution deployed not thinking about mobile devices and enterprise RedHat Enterprise servers. I might be wrong there but with CentOS and the history there I bet Ubuntu is high on the list and it's super simple.
|
||||
|
||||
|
||||
## Introducing HashiCorp Vagrant
|
||||
|
||||
|
||||
Vagrant is a CLI utility that manages the lifecycle of your virtual machines. We can use vagrant to spin up and down virtual machines across many different platforms including vSphere, Hyper-v, Virtual Box and also Docker. It does have other providers but we will stick with Virtual Box here so we are good to go.
|
||||
|
||||
|
||||
The first thing we need to do is get Vagrant installed on our machine, when you go to the downloads page you will see all the operating systems listed for your choice. [HashiCorp Vagrant](https://www.vagrantup.com/downloads) I am using Windows so I grabbed the binary for my system and went ahead and installed this on my system.
|
||||
|
||||
|
||||
Next up we also need to get [Virtual Box](https://www.virtualbox.org/wiki/Downloads) installed. Again, this can also be installed on many different operating systems and a good reason to choose this and vagrant is that if you are running Windows, macOS, or Linux then we have you covered here.
|
||||
|
||||
|
||||
Both installations are pretty straightforward and both have great communitites around them so feel free to reach out if you have issues and I can try and assist too.
|
||||
|
||||
|
||||
## Our first VAGRANTFILE
|
||||
|
||||
|
||||
The VAGRANTFILE describes the type of machine we want to deploy. It also defines the configuration and provisioning for this machine.
|
||||
|
||||
|
||||
When it comes to saving these and organizing your VAGRANTFILEs I tend to put them in their folders in my workspace. You can see below how this looks on my system. Hopefully following this you will play around with Vagrant and see the ease of spinning up different systems, it is also great for that rabbit hole known as distro hopping for Linux Desktops.
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
Let's take a look at that VAGRANTFILE and see what we are building.
|
||||
|
||||
|
||||
```
|
||||
|
||||
Vagrant.configure("2") do |config|
|
||||
@ -82,10 +72,8 @@ end
|
||||
|
||||
This is a very simple VAGRANTFILE overall. We are saying that we want a specific "box", a box being possibly either a public image or private build of the system you are looking for. You can find a long list of "boxes" publicly available here in the [public catalogue of Vagrant boxes](https://app.vagrantup.com/boxes/search)
|
||||
|
||||
|
||||
Next line we're saying that we want to use a specific provider and in this case it's `VirtualBox`. We also define our machine's memory to `8GB` and the number of CPUs to `4`. My experience tells me that you may want to also add the following line if you experience display issues. This will set the video memory to what you want, I would ramp this right up to `128MB` but it depends on your system.
|
||||
|
||||
|
||||
```
|
||||
|
||||
v.customize ["modifyvm", :id, "--vram", ""]
|
||||
@ -94,42 +82,30 @@ v.customize ["modifyvm", :id, "--vram", ""]
|
||||
|
||||
I have also placed a copy of this specific vagrant file in the [Linux Folder](Linux/VAGRANTFILE)
|
||||
|
||||
|
||||
## Provisioning our Linux Desktop
|
||||
|
||||
|
||||
We are now ready to get our first machine up and running, in our workstation's terminal. In my case I am using PowerShell on my Windows machine. Navigate to your projects folder and where you will find your VAGRANTFILE. Once there you can type the command `vagrant up` and if everything's allright you will see something like this.
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
Another thing to add here is that the network will be set to `NAT` on your virtual machine. At this stage we don't need to know about NAT and I plan to have a whole session talking about it in the Networking session. Know that it is the easy button when it comes to getting a machine on your home network, it is also the default networking mode on Virtual Box. You can find out more in the [Virtual Box documentation](https://www.virtualbox.org/manual/ch06.html#network_nat)
|
||||
|
||||
|
||||
Once `vagrant up` is complete we can now use `vagrant ssh` to jump straight into the terminal of our new VM.
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
This is where we will do most of our exploring over the next few days but I also want to dive into some customizations for your developer workstation that I have done and it makes your life much simpler when running this as your daily driver, and of course, are you really in DevOps unless you have a cool nonstandard terminal?
|
||||
|
||||
|
||||
But just to confirm in Virtual Box you should see the login prompt when you select your VM.
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
Oh and if you made it this far and you have been asking "WHAT IS THE USERNAME & PASSWORD?"
|
||||
|
||||
|
||||
- Username = vagrant
|
||||
|
||||
- Password = vagrant
|
||||
|
||||
|
||||
Tomorrow we are going to get into some of the commands and what they do, The terminal is going to be the place to make everything happen.
|
||||
|
||||
## Resources
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Linux Commands for DevOps (Actually everyone) - Day 15'
|
||||
title: "#90DaysOfDevOps - Linux Commands for DevOps (Actually everyone) - Day 15"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Linux Commands for DevOps (Actually everyone)
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048834
|
||||
---
|
||||
|
||||
## Linux Commands for DevOps (Actually everyone)
|
||||
|
||||
I mentioned [yesterday](day14.md) that we are going to be spending a lot of time in the terminal with some commands to get stuff done.
|
||||
@ -103,13 +104,17 @@ You are also able to use `history | grep "Command` to search for something speci
|
||||
On servers to trace back when was a command executed, it can be useful to append the date and time to each command in the history file.
|
||||
|
||||
The following system variable controls this behaviour:
|
||||
|
||||
```
|
||||
HISTTIMEFORMAT="%d-%m-%Y %T "
|
||||
```
|
||||
|
||||
You can easily add to your bash_profile:
|
||||
|
||||
```
|
||||
echo 'export HISTTIMEFORMAT="%d-%m-%Y %T "' >> ~/.bash_profile
|
||||
```
|
||||
|
||||
So as useful to allow the history file to grow bigger:
|
||||
|
||||
```
|
||||
@ -142,7 +147,7 @@ A full list:
|
||||
- 0 = None `---`
|
||||
- 1 = Execute only `--X`
|
||||
- 2 = Write only `-W-`
|
||||
- 3 = Write & Exectute `-WX`
|
||||
- 3 = Write & Execute `-WX`
|
||||
- 4 = Read Only `R--`
|
||||
- 5 = Read & Execute `R-X`
|
||||
- 6 = Read & Write `RW-`
|
||||
|
@ -1,15 +1,16 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Managing your Linux System, Filesystem & Storage - Day 16'
|
||||
title: "#90DaysOfDevOps - Managing your Linux System, Filesystem & Storage - Day 16"
|
||||
published: false
|
||||
description: '90DaysOfDevOps - Managing your Linux System, Filesystem & Storage'
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
description: "90DaysOfDevOps - Managing your Linux System, Filesystem & Storage"
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048702
|
||||
---
|
||||
|
||||
## Managing your Linux System, Filesystem & Storage
|
||||
|
||||
So far we have had a brief overview of Linux and DevOps and then we got our lab environment set up using vagant [(Day 14)](day14.md), we then touched on a small portion of commands that will be in your daily toolkit when in the terminal and getting things done [(Day 15)](day15.md).
|
||||
So far we have had a brief overview of Linux and DevOps and then we got our lab environment set up using Vagrant [(Day 14)](day14.md), we then touched on a small portion of commands that will be in your daily toolkit when in the terminal and getting things done [(Day 15)](day15.md).
|
||||
|
||||
Here we are going to look into three key areas of looking after your Linux systems with updates, installing software, understanding what system folders are used for and we will also take a look at storage.
|
||||
|
||||
@ -33,7 +34,7 @@ If we type `figlet` in our terminal you are going to see that we do not have it
|
||||
|
||||

|
||||
|
||||
You will see from the above though that it does give us some `apt` install options that we could try. This is because in the default repositories there is a program called figlet. Let's try `sudo apt install figlet`
|
||||
You will see from the above though that it does give us some `apt` install options that we could try. This is because in the default repositories there is a program called figlet. Let's try `sudo apt install figlet`
|
||||
|
||||

|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Text Editors - nano vs vim - Day 17'
|
||||
title: "#90DaysOfDevOps - Text Editors - nano vs vim - Day 17"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Text Editors - nano vs vim
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048703
|
||||
---
|
||||
|
||||
## Text Editors - nano vs vim
|
||||
|
||||
The majority of your Linux systems are going to be servers and these are not going to have a GUI. I also mentioned in the last session that Linux is mostly made up of configuration files, to make changes you are going to need to be able to edit those configuration files to change anything on the system.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - SSH & Web Server - Day 18'
|
||||
title: "#90DaysOfDevOps - SSH & Web Server - Day 18"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - SSH & Web Server
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048733
|
||||
---
|
||||
|
||||
## SSH & Web Server
|
||||
|
||||
As we have mentioned throughout you are going to most likely be managing lots of remote Linux servers, because of this, you will need to make sure that your connectivity to these remote servers is secure. In this section, we want to cover some of the basics of SSH that everyone should know that will help you with that secure tunnel to your remote systems.
|
||||
@ -121,6 +122,7 @@ You might also see this referred to as a LAMP stack.
|
||||
- **P**HP
|
||||
|
||||
### Apache2
|
||||
|
||||
Apache2 is an open-source HTTP server. We can install apache2 with the following command.
|
||||
|
||||
`sudo apt-get install apache2`
|
||||
@ -132,9 +134,11 @@ Then using the bridged network address from the SSH walkthrough open a browser a
|
||||

|
||||
|
||||
### mySQL
|
||||
|
||||
MySQL is a database in which we will be storing our data for our simple website. To get MySQL installed we should use the following command `sudo apt-get install mysql-server`
|
||||
|
||||
### PHP
|
||||
|
||||
PHP is a server-side scripting language, we will use this to interact with a MySQL database. The final installation is to get PHP and dependencies installed using `sudo apt-get install php libapache2-mod-php php-mysql`
|
||||
|
||||
The first configuration change we want to make out of the box apache is using index.html and we want it to use index.php instead.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Automate tasks with bash scripts - Day 19'
|
||||
title: "#90DaysOfDevOps - Automate tasks with bash scripts - Day 19"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Automate tasks with bash scripts
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048774
|
||||
---
|
||||
|
||||
## Automate tasks with bash scripts
|
||||
|
||||
The shell that we are going to use today is the bash but we will cover another shell tomorrow when we dive into ZSH.
|
||||
@ -58,6 +59,7 @@ cd 90DaysOfDevOps
|
||||
touch Day19
|
||||
ls
|
||||
```
|
||||
|
||||
You can then save this and exit your text editor, if we run our script with `./90DaysOfDevOps.sh` you should get a permission denied message. You can check the permissions of this file using the `ls -al` command and you can see highlighted we do not have executable rights on this file.
|
||||
|
||||

|
||||
@ -73,6 +75,7 @@ Now we can run our script again using `./90DaysOfDevOps.sh` after running the sc
|
||||
Pretty basic stuff but you can start to see hopefully how this could be used to call on other tools as part of ways to make your life easier and automate things.
|
||||
|
||||
### Variables, Conditionals
|
||||
|
||||
A lot of this section is a repeat of what we covered when we were learning Golang but I think it's worth us diving in here again.
|
||||
|
||||
- ### Variables
|
||||
@ -138,6 +141,7 @@ else
|
||||
echo "You have entered the wrong amount of days"
|
||||
fi
|
||||
```
|
||||
|
||||
You can also see from the above that we are running some comparisons or checking values against each other to move on to the next stage. We have different options here worth noting.
|
||||
|
||||
- `eq` - if the two values are equal will return TRUE
|
||||
@ -181,6 +185,7 @@ I found this amazing repository on GitHub that has what seems to be an endless a
|
||||
**Scenario**: We have our company called "90DaysOfDevOps" and we have been running a while and now it is time to expand the team from 1 person to lots more over the coming weeks, I am the only one so far that knows the onboarding process so we want to reduce that bottleneck by automating some of these tasks.
|
||||
|
||||
**Requirements**:
|
||||
|
||||
- A user can be passed in as a command line argument.
|
||||
- A user is created with the name of the command line argument.
|
||||
- A password can be parsed as a command line argument.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Dev workstation setup - All the pretty things - Day 20'
|
||||
title: "#90DaysOfDevOps - Dev workstation setup - All the pretty things - Day 20"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Dev workstation setup - All the pretty things
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048734
|
||||
---
|
||||
|
||||
## Dev workstation setup - All the pretty things
|
||||
|
||||
Not to be confused with us setting Linux servers up this way but I wanted to also show off the choice and flexibility that we have within the Linux desktop.
|
||||
@ -28,6 +29,7 @@ We can also see our default bash shell below,
|
||||
A lot of this comes down to dotfiles something we will cover in this final Linux session of the series.
|
||||
|
||||
### dotfiles
|
||||
|
||||
First up I want to dig into dotfiles, I have said on a previous day that Linux is made up of configuration files. These dotfiles are configuration files for your Linux system and applications.
|
||||
|
||||
I will also add that dotfiles are not just used to customise and make your desktop look pretty, there are also dotfile changes and configurations that will help you with productivity.
|
||||
@ -45,6 +47,7 @@ We are going to be changing our shell, so we will later be seeing a new `.zshrc`
|
||||
But now you know if we refer to dotfiles you know they are configuration files. We can use them to add aliases to our command prompt as well as paths to different locations. Some people publish their dotfiles so they are publicly available. You will find mine here on my GitHub [MichaelCade/dotfiles](https://github.com/MichaelCade/dotfiles) here you will find my custom `.zshrc` file, my terminal of choice is terminator which also has some configuration files in the folder and then also some background options.
|
||||
|
||||
### ZSH
|
||||
|
||||
As I mentioned throughout our interactions so far we have been using a bash shell the default shell with Ubuntu. ZSH is very similar but it does have some benefits over bash.
|
||||
|
||||
Zsh has features like interactive Tab completion, automated file searching, regex integration, advanced shorthand for defining command scope, and a rich theme engine.
|
||||
@ -87,17 +90,17 @@ When you have run the above command you should see some output like the below.
|
||||
|
||||

|
||||
|
||||
Now we can move on to start putting a theme in for our experience, there are well over 100 bundled with Oh My ZSH but my go-to for all of my applications and everything is the Dracula theme.
|
||||
Now we can move on to start putting a theme in for our experience, there are well over 100 bundled with Oh My ZSH but my go-to for all of my applications and everything is the Dracula theme.
|
||||
|
||||
I also want to add that these two plugins are a must when using Oh My ZSH.
|
||||
I also want to add that these two plugins are a must when using Oh My ZSH.
|
||||
|
||||
`git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions`
|
||||
`git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions`
|
||||
|
||||
`git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting`
|
||||
`git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting`
|
||||
|
||||
`nano ~/.zshrc`
|
||||
`nano ~/.zshrc`
|
||||
|
||||
edit the plugins to now include `plugins=(git zsh-autosuggestions zsh-syntax-highlighting)`
|
||||
edit the plugins to now include `plugins=(git zsh-autosuggestions zsh-syntax-highlighting)`
|
||||
|
||||
## Gnome Extensions
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Big Picture: DevOps and Networking - Day 21'
|
||||
title: "#90DaysOfDevOps - The Big Picture: DevOps and Networking - Day 21"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Big Picture DevOps and Networking
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048761
|
||||
---
|
||||
|
||||
## The Big Picture: DevOps and Networking
|
||||
|
||||
Welcome to Day 21! We are going to be getting into Networking over the next 7 days, Networking and DevOps are the overarching themes but we will need to get into some of the networking fundamentals as well.
|
||||
@ -23,7 +24,7 @@ But if you are not a network engineer then we probably need to get foundational
|
||||
|
||||
But in regards to those terms, we can think of NetDevOps or Network DevOps as applying the DevOps Principles and Practices to the network, applying version control and automation tools to the network creation, testing, monitoring, and deployments.
|
||||
|
||||
If we think of Network DevOps as having to require automation, we mentioned before about DevOps breaking down the siloes between teams. If the networking teams do not change to a similar model and process then they become the bottleneck or even the failure overall.
|
||||
If we think of Network DevOps as having to require automation, we mentioned before about DevOps breaking down the silos between teams. If the networking teams do not change to a similar model and process then they become the bottleneck or even the failure overall.
|
||||
|
||||
Using the automation principles around provisioning, configuration, testing, version control and deployment is a great start. Automation is overall going to enable speed of deployment, stability of the networking infrastructure and consistent improvement as well as the process being shared across multiple environments once they have been tested. Such as a fully tested Network Policy that has been fully tested on one environment can be used quickly in another location because of the nature of this being in code vs a manually authored process which it might have been before.
|
||||
A really good viewpoint and outline of this thinking can be found here. [Network DevOps](https://www.thousandeyes.com/learning/techtorials/network-devops)
|
||||
@ -48,7 +49,7 @@ A logical group of hosts which require similar connectivity.
|
||||
|
||||

|
||||
|
||||
**Switches** facilitate communication ***within*** a network. A switch forwards data packets between hosts. A switch sends packets directly to hosts.
|
||||
**Switches** facilitate communication **_within_** a network. A switch forwards data packets between hosts. A switch sends packets directly to hosts.
|
||||
|
||||
- Network: A Grouping of hosts which require similar connectivity.
|
||||
- Hosts on a Network share the same IP address space.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The OSI Model - The 7 Layers - Day 22'
|
||||
title: "#90DaysOfDevOps - The OSI Model - The 7 Layers - Day 22"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The OSI Model - The 7 Layers
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049037
|
||||
---
|
||||
|
||||
## The OSI Model - The 7 Layers
|
||||
|
||||
The overall purpose of networking as an industry is to allow two hosts to share data. Before networking if I want to get data from this host to this host I'd have to plug something into this host walk it over to the other host and plug it into the other host.
|
||||
@ -24,11 +25,13 @@ The OSI Model (Open Systems Interconnection Model) is a framework used to descri
|
||||

|
||||
|
||||
### Physical
|
||||
|
||||
Layer 1 in the OSI model and this is known as physical, the premise of being able to get data from one host to another through a means be it physical cable or we could also consider Wi-Fi in this layer as well. We might also see some more legacy hardware seen here around hubs and repeaters to transport the data from one host to another.
|
||||
|
||||

|
||||
|
||||
### Data Link
|
||||
|
||||
Layer 2, the data link enables a node to node transfer where data is packaged into frames. There is also a level of error correcting that might have occurred at the physical layer. This is also where we introduce or first see MAC addresses.
|
||||
|
||||
This is where we see the first mention of switches that we covered on our first day of networking on [Day 21](day21.md)
|
||||
@ -36,6 +39,7 @@ This is where we see the first mention of switches that we covered on our first
|
||||

|
||||
|
||||
### Network
|
||||
|
||||
You have likely heard the term layer 3 switches or layer 2 switches. In our OSI model Layer 3, the Network has a goal of an end to end delivery, this is where we see our IP addresses also mentioned in the first-day overview.
|
||||
|
||||
Routers and hosts exist at layer 3, remember the router is the ability to route between multiple networks. Anything with an IP could be considered Layer 3.
|
||||
@ -55,11 +59,13 @@ MAC Addresses - Layer 2 = Hop to Hop Delivery
|
||||
Now there is a network protocol that we will get into but not today called ARP(Address Resolution Protocol) which links our Layer3 and Layer2 addresses.
|
||||
|
||||
### Transport
|
||||
|
||||
Service to Service delivery, Layer 4 is there to distinguish data streams. In the same way that Layer 3 and Layer 2 both had their addressing schemes, in Layer 4 we have ports.
|
||||
|
||||

|
||||
|
||||
### Session, Presentation, Application
|
||||
|
||||
The distinction between Layers 5,6,7 is or had become somewhat vague.
|
||||
|
||||
It is worth looking at the [TCP IP Model](https://www.geeksforgeeks.org/tcp-ip-model/) to get a more recent understanding.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Network Protocols - Day 23'
|
||||
title: "#90DaysOfDevOps - Network Protocols - Day 23"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Network Protocols
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048704
|
||||
---
|
||||
|
||||
## Network Protocols
|
||||
|
||||
A set of rules and messages that form a standard. An Internet Standard.
|
||||
@ -39,7 +40,7 @@ HTTP is the foundation of the internet and browsing content. Giving us the abili
|
||||
|
||||
- SSL - Secure Sockets Layer | TLS - Transport Layer Security
|
||||
|
||||
TLS has taken over from SSL, TLS is a [Cryptographic Protocol]() that provides secure communications over a network. It can and will be found in the mail, Instant Messaging and other applications but most commonly it is used to secure HTTPS.
|
||||
TLS has taken over from SSL, TLS is a **Cryptographic Protocol** that provides secure communications over a network. It can and will be found in the mail, Instant Messaging and other applications but most commonly it is used to secure HTTPS.
|
||||
|
||||

|
||||
|
||||
@ -80,7 +81,7 @@ Then we have DNS as we just covered to help us convert complicated public IP add
|
||||
|
||||
As I said each host requires these 4 things, if you have 1000 or 10,000 hosts then that is going to take you a very long time to determine each one of these individually. This is where DHCP comes in and allows you to determine a scope for your network and then this protocol will distribute to all available hosts in your network.
|
||||
|
||||
Another example is you head into a coffee shop, grab a coffee and sit down with your laptop or your phone let's call that your host. You connect your host to the coffee shop wifi and you gain access to the internet, messages and mail start pinging through and you can navigate web pages and social media. When you connected to the coffee shop wifi your machine would have picked up a DHCP address either from a dedicated DHCP server or most likely from the router also handling DHCP.
|
||||
Another example is you head into a coffee shop, grab a coffee and sit down with your laptop or your phone let's call that your host. You connect your host to the coffee shop WiFi and you gain access to the internet, messages and mail start pinging through and you can navigate web pages and social media. When you connected to the coffee shop WiFi your machine would have picked up a DHCP address either from a dedicated DHCP server or most likely from the router also handling DHCP.
|
||||
|
||||

|
||||
|
||||
|
@ -1,17 +1,19 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Network Automation - Day 24'
|
||||
title: "#90DaysOfDevOps - Network Automation - Day 24"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Network Automation
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048805
|
||||
---
|
||||
|
||||
## Network Automation
|
||||
|
||||
### Basics of network automation
|
||||
|
||||
Primary drivers for Network Automation
|
||||
|
||||
- Achieve Agility
|
||||
- Reduce Cost
|
||||
- Eliminate Errors
|
||||
@ -41,12 +43,12 @@ We should then divide tasks and analyse how different network functions work and
|
||||
|
||||
- The infrastructure/Network team receives change tickets at multiple layers to deploy applications.
|
||||
- Based on Network services, divide them into different areas and understand how they interact with each other.
|
||||
- Application Optimisation
|
||||
- ADC (Application Delivery Controller)
|
||||
- Firewall
|
||||
- DDI (DNS, DHCP, IPAM etc)
|
||||
- Routing
|
||||
- Others
|
||||
- Application Optimisation
|
||||
- ADC (Application Delivery Controller)
|
||||
- Firewall
|
||||
- DDI (DNS, DHCP, IPAM etc)
|
||||
- Routing
|
||||
- Others
|
||||
- Identify various dependencies to address business and cultural differences and bring in cross-team collaboration.
|
||||
|
||||
Reusable policies, define and simplify reusable service tasks, processes and input/outputs.
|
||||
@ -116,8 +118,8 @@ Language | Scripting - Something we have not covered here is Python as a languag
|
||||
Analyse APIs - Postman is a great tool for analysing RESTful APIs. Helps to build, test and modify APIs.
|
||||
|
||||
- POST >>> To create resources objects.
|
||||
- GET >>> To retrieve a resources.
|
||||
- PUT >>> To create or replace the resources.
|
||||
- GET >>> To retrieve a resources.
|
||||
- PUT >>> To create or replace the resources.
|
||||
- PATCH >>> To create or update the resources object.
|
||||
- Delete >>> To delete a resources
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Python for Network Automation - Day 25'
|
||||
title: "#90DaysOfDevOps - Python for Network Automation - Day 25"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Python for Network Automation
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049038
|
||||
---
|
||||
|
||||
## Python for Network Automation
|
||||
|
||||
Python is the standard language used for automated network operations.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Building our Lab - Day 26'
|
||||
title: "#90DaysOfDevOps - Building our Lab - Day 26"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Building our Lab
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048762
|
||||
---
|
||||
|
||||
## Building our Lab
|
||||
|
||||
We are going to continue our setup of our emulated network using EVE-NG and then hopefully get some devices deployed and start thinking about how we can automate the configuration of these devices. On [Day 25](day25.md) we covered the installation of EVE-NG onto our machine using VMware Workstation.
|
||||
@ -43,13 +44,13 @@ For our lab, we need Cisco vIOS L2 (switches) and Cisco vIOS (router)
|
||||
|
||||
Inside the EVE-NG web interface, we are going to create our new network topology. We will have four switches and one router that will act as our gateway to outside networks.
|
||||
|
||||
| Node | IP Address |
|
||||
| ----------- | ----------- |
|
||||
| Router | 10.10.88.110|
|
||||
| Switch1 | 10.10.88.111|
|
||||
| Switch2 | 10.10.88.112|
|
||||
| Switch3 | 10.10.88.113|
|
||||
| Switch4 | 10.10.88.114|
|
||||
| Node | IP Address |
|
||||
| ------- | ------------ |
|
||||
| Router | 10.10.88.110 |
|
||||
| Switch1 | 10.10.88.111 |
|
||||
| Switch2 | 10.10.88.112 |
|
||||
| Switch3 | 10.10.88.113 |
|
||||
| Switch4 | 10.10.88.114 |
|
||||
|
||||
#### Adding our Nodes to EVE-NG
|
||||
|
||||
@ -96,13 +97,13 @@ Once we have our lab up and running you will be able to console into each device
|
||||
|
||||
I will leave my configuration in the Networking folder of the repository for reference.
|
||||
|
||||
| Node | Configuration |
|
||||
| ----------- | ----------- |
|
||||
| Router | [R1](Networking/R1) |
|
||||
| Switch1 | [SW1](Networking/SW1) |
|
||||
| Switch2 | [SW2](Networking/SW2) |
|
||||
| Switch3 | [SW3](Networking/SW3) |
|
||||
| Switch4 | [SW4](Networking/SW4) |
|
||||
| Node | Configuration |
|
||||
| ------- | --------------------- |
|
||||
| Router | [R1](Networking/R1) |
|
||||
| Switch1 | [SW1](Networking/SW1) |
|
||||
| Switch2 | [SW2](Networking/SW2) |
|
||||
| Switch3 | [SW3](Networking/SW3) |
|
||||
| Switch4 | [SW4](Networking/SW4) |
|
||||
|
||||
## Resources
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Getting Hands-On with Python & Network - Day 27'
|
||||
title: "#90DaysOfDevOps - Getting Hands-On with Python & Network - Day 27"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Getting Hands-On with Python & Network
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048735
|
||||
---
|
||||
|
||||
## Getting Hands-On with Python & Network
|
||||
|
||||
In this final section of Networking fundamentals, we are going to cover some automation tasks and tools with our lab environment created on [Day 26](day26.md)
|
||||
@ -40,13 +41,13 @@ sh ip int br
|
||||
|
||||
The final step gives us the DHCP address from our home network. My device network list is as follows:
|
||||
|
||||
| Node | IP Address | Home Network IP |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| Router | 10.10.88.110| 192.168.169.115 |
|
||||
| Switch1 | 10.10.88.111| 192.168.169.178 |
|
||||
| Switch2 | 10.10.88.112| 192.168.169.193 |
|
||||
| Switch3 | 10.10.88.113| 192.168.169.125 |
|
||||
| Switch4 | 10.10.88.114| 192.168.169.197 |
|
||||
| Node | IP Address | Home Network IP |
|
||||
| ------- | ------------ | --------------- |
|
||||
| Router | 10.10.88.110 | 192.168.169.115 |
|
||||
| Switch1 | 10.10.88.111 | 192.168.169.178 |
|
||||
| Switch2 | 10.10.88.112 | 192.168.169.193 |
|
||||
| Switch3 | 10.10.88.113 | 192.168.169.125 |
|
||||
| Switch4 | 10.10.88.114 | 192.168.169.197 |
|
||||
|
||||
### SSH to a network device
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Big Picture: DevOps & The Cloud - Day 28'
|
||||
title: "#90DaysOfDevOps - The Big Picture: DevOps & The Cloud - Day 28"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Big Picture DevOps & The Cloud
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048737
|
||||
---
|
||||
|
||||
## The Big Picture: DevOps & The Cloud
|
||||
|
||||
When it comes to cloud computing and what is offered, it goes very nicely with the DevOps ethos and processes. We can think of Cloud Computing as bringing the technology and services whilst DevOps as we have mentioned many times before is about the process and process improvement.
|
||||
@ -46,7 +47,7 @@ Next up we have the public cloud, most people would think of this in a few diffe
|
||||
Some will also see the public cloud as a much wider offering that includes those hyper scalers but also the thousands of MSPs all over the world as well. For this post, we are going to consider Public Cloud including hyper scalers and MSPs, although later on, we will specifically dive into one or more of the hyper scalers to get that foundational knowledge.
|
||||
|
||||

|
||||
*thousands more companies could land on this, I am merely picking from local, regional, telco and global brands I have worked with and am aware of.*
|
||||
_thousands more companies could land on this, I am merely picking from local, regional, telco and global brands I have worked with and am aware of._
|
||||
|
||||
We mentioned in the SaaS section that Cloud removed the responsibility or the burden of having to administer parts of a system. If SaaS we see a lot of the abstraction layers removed i.e the physical systems, network, storage, operating system, and even application to some degree. When it comes to the cloud there are various levels of abstraction we can remove or keep depending on your requirements.
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Microsoft Azure Fundamentals - Day 29'
|
||||
title: "#90DaysOfDevOps - Microsoft Azure Fundamentals - Day 29"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Microsoft Azure Fundamentals
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048705
|
||||
---
|
||||
|
||||
## Microsoft Azure Fundamentals
|
||||
|
||||
Before we get going, the winner of the Twitter poll was Microsoft Azure, hence the title of the page. It was close and also quite interesting to see the results come in over the 24 hours.
|
||||
@ -37,7 +38,7 @@ The best way to get started and follow along is by clicking the link, which will
|
||||
I linked the interactive map above, but we can see the image below the breadth of regions being offered in the Microsoft Azure platform worldwide.
|
||||
|
||||

|
||||
*image taken from [Microsoft Docs - 01/05/2021](https://docs.microsoft.com/en-us/azure/networking/microsoft-global-network)*
|
||||
_image taken from [Microsoft Docs - 01/05/2021](https://docs.microsoft.com/en-us/azure/networking/microsoft-global-network)_
|
||||
|
||||
You will also see several "sovereign" clouds meaning they are not linked or able to speak to the other regions, for example, these would be associated with governments such as the `AzureUSGovernment` also `AzureChinaCloud` and others.
|
||||
|
||||
@ -77,13 +78,15 @@ Subscriptions belong to these management groups so you could have many subscript
|
||||
|
||||
### Resource Manager and Resource Groups
|
||||
|
||||
**Azure Resource Manager**
|
||||
#### Azure Resource Manager
|
||||
|
||||
- JSON based API that is built on resource providers.
|
||||
- Resources belong to a resource group and share a common life cycle.
|
||||
- Parallelism
|
||||
- JSON-Based deployments are declarative, idempotent and understand dependencies between resources to govern creation and order.
|
||||
|
||||
**Resource Groups**
|
||||
#### Resource Groups
|
||||
|
||||
- Every Azure Resource Manager resource exists in one and only one resource group!
|
||||
- Resource groups are created in a region that can contain resources from outside the region.
|
||||
- Resources can be moved between resource groups
|
||||
|
@ -1,18 +1,17 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Microsoft Azure Security Models - Day 30'
|
||||
title: "#90DaysOfDevOps - Microsoft Azure Security Models - Day 30"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Microsoft Azure Security Models
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049039
|
||||
---
|
||||
|
||||
## Microsoft Azure Security Models
|
||||
|
||||
Following on from the Microsoft Azure Overview, we are going to start with Azure Security and see where this can help in our day to day. For the most part, I have found the built-in roles have been sufficient but knowing that we can create and work with many different areas of authentication and configurations. I have found Microsoft Azure to be quite advanced with its Active Directory background compared to other public clouds.
|
||||
|
||||
## Microsoft Azure Security Models
|
||||
|
||||
This is one area in which Microsoft Azure seemingly works differently from other public cloud providers, in Azure there is ALWAYS Azure AD.
|
||||
|
||||
### Directory Services
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Microsoft Azure Compute Models - Day 31'
|
||||
title: "#90DaysOfDevOps - Microsoft Azure Compute Models - Day 31"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Microsoft Azure Compute Models
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049040
|
||||
---
|
||||
|
||||
## Microsoft Azure Compute Models
|
||||
|
||||
Following on from covering the basics around security models within Microsoft Azure yesterday today we are going to look into the various compute services available to us in Azure.
|
||||
@ -34,9 +35,9 @@ Most likely the starting point for anyone in the public cloud.
|
||||
- Provides a VM from a variety of series and sizes with different capabilities (Sometimes an overwhelming) [Sizes for Virtual machines in Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/sizes)
|
||||
- There are many different options and focuses for VMs from high performance, and low latency to high memory options VMs.
|
||||
- We also have a burstable VM type which can be found under the B-Series. This is great for workloads where you can have a low CPU requirement for the most part but require that maybe once a month performance spike requirement.
|
||||
- Virtual Machines are placed on a virtual network that can provide connectivity to any network.
|
||||
- Windows and Linux guest OS support.
|
||||
- There are also Azure-tuned kernels when it comes to specific Linux distributions. [Azure Tuned Kernals](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/endorsed-distros#azure-tuned-kernels)
|
||||
- Virtual Machines are placed on a virtual network that can provide connectivity to any network.
|
||||
- Windows and Linux guest OS support.
|
||||
- There are also Azure-tuned kernels when it comes to specific Linux distributions. [Azure Tuned Kernals](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/endorsed-distros#azure-tuned-kernels)
|
||||
|
||||
### Templating
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Microsoft Azure Storage Models - Day 32'
|
||||
title: "#90DaysOfDevOps - Microsoft Azure Storage Models - Day 32"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Microsoft Azure Storage Models
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048775
|
||||
---
|
||||
|
||||
## Microsoft Azure Storage Models
|
||||
|
||||
### Storage Services
|
||||
@ -34,11 +35,8 @@ Even the default redundancy option gives us 3 copies of our data.
|
||||
Summary of the above link down below:
|
||||
|
||||
- **Locally-redundant storage** - replicates your data three times within a single data centre in the primary region.
|
||||
|
||||
- **Geo-redundant storage** - copies your data synchronously three times within a single physical location in the primary region using LRS.
|
||||
|
||||
- **Zone-redundant storage** - replicates your Azure Storage data synchronously across three Azure availability zones in the primary region.
|
||||
|
||||
- **Geo-zone-redundant storage** - combines the high availability provided by redundancy across availability zones with protection from regional outages provided by geo-replication. Data in a GZRS storage account is copied across three Azure availability zones in the primary region and is also replicated to a second geographic region for protection from regional disasters.
|
||||
|
||||

|
||||
@ -58,17 +56,20 @@ There are lots more advanced options available for your storage account but for
|
||||
Storage access can be achieved in a few different ways.
|
||||
|
||||
Authenticated access via:
|
||||
|
||||
- A shared key for full control.
|
||||
- Shared Access Signature for delegated, granular access.
|
||||
- Azure Active Directory (Where Available)
|
||||
|
||||
Public Access:
|
||||
|
||||
- Public access can also be granted to enable anonymous access including via HTTP.
|
||||
- An example of this could be to host basic content and files in a block blob so a browser can view and download this data.
|
||||
|
||||
If you are accessing your storage from another Azure service, traffic stays within Azure.
|
||||
|
||||
When it comes to storage performance we have two different types:
|
||||
|
||||
- **Standard** - Maximum number of IOPS
|
||||
- **Premium** - Guaranteed number of IOPS
|
||||
|
||||
@ -168,11 +169,11 @@ Without getting into the weeds about caching systems such as Redis I wanted to i
|
||||
Azure Cache for Redis provides an in-memory data store based on the Redis software.
|
||||
|
||||
- It is an implementation of the open-source Redis Cache.
|
||||
- A hosted, secure Redis cache instance.
|
||||
- Different tiers are available
|
||||
- Application must be updated to leverage the cache.
|
||||
- Aimed for an application that has high read requirements compared to writes.
|
||||
- Key-Value store based.
|
||||
- A hosted, secure Redis cache instance.
|
||||
- Different tiers are available
|
||||
- Application must be updated to leverage the cache.
|
||||
- Aimed for an application that has high read requirements compared to writes.
|
||||
- Key-Value store based.
|
||||
|
||||

|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Microsoft Azure Networking Models + Azure Management - Day 33'
|
||||
title: "#90DaysOfDevOps - Microsoft Azure Networking Models + Azure Management - Day 33"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Microsoft Azure Networking Models + Azure Management
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048706
|
||||
---
|
||||
|
||||
## Microsoft Azure Networking Models + Azure Management
|
||||
|
||||
As if today marks the anniversary of Microsoft Azure and its 12th Birthday! (1st February 2022) Anyway, we are going to cover the networking models within Microsoft Azure and some of the management options for Azure. So far we have only used the Azure portal but we have mentioned other areas that can be used to drive and create our resources within the platform.
|
||||
@ -51,11 +52,11 @@ We also have Virtual Network Peering. This enables virtual networks across tenan
|
||||
- Lower priority number means high priority.
|
||||
- Most logic is built by IP Addresses but some tags and labels can also be used.
|
||||
|
||||
| Description | Priority | Source Address | Source Port | Destination Address | Destination Port | Action |
|
||||
| ----------- | ---------| -------------- | ----------- | ------------------- | ---------------- | ------ |
|
||||
| Inbound 443 | 1005 | * | * | * | 443 | Allow |
|
||||
| ILB | 1010 | Azure LoadBalancer | * | * | 10000 | Allow |
|
||||
| Deny All Inbound | 4000 | * | * | * | * | DENY |
|
||||
| Description | Priority | Source Address | Source Port | Destination Address | Destination Port | Action |
|
||||
| ---------------- | -------- | ------------------ | ----------- | ------------------- | ---------------- | ------ |
|
||||
| Inbound 443 | 1005 | \* | \* | \* | 443 | Allow |
|
||||
| ILB | 1010 | Azure LoadBalancer | \* | \* | 10000 | Allow |
|
||||
| Deny All Inbound | 4000 | \* | \* | \* | \* | DENY |
|
||||
|
||||
We also have Application Security Groups (ASGs)
|
||||
|
||||
@ -65,12 +66,12 @@ We also have Application Security Groups (ASGs)
|
||||
|
||||
The ASGs can then be used in rules that are part of Network Security Groups to control the flow of communication and can still use NSG features like service tags.
|
||||
|
||||
| Action| Name | Source | Destination | Port |
|
||||
| ------| ------------------ | ---------- | ----------- | ------------ |
|
||||
| Allow | AllowInternettoWeb | Internet | WebServers | 443(HTTPS) |
|
||||
| Allow | AllowWebToApp | WebServers | AppServers | 443(HTTPS) |
|
||||
| Allow | AllowAppToDB | AppServers | DbServers | 1443 (MSSQL) |
|
||||
| Deny | DenyAllinbound | Any | Any | Any |
|
||||
| Action | Name | Source | Destination | Port |
|
||||
| ------ | ------------------ | ---------- | ----------- | ------------ |
|
||||
| Allow | AllowInternettoWeb | Internet | WebServers | 443(HTTPS) |
|
||||
| Allow | AllowWebToApp | WebServers | AppServers | 443(HTTPS) |
|
||||
| Allow | AllowAppToDB | AppServers | DbServers | 1443 (MSSQL) |
|
||||
| Deny | DenyAllinbound | Any | Any | Any |
|
||||
|
||||
### Load Balancing
|
||||
|
||||
@ -137,13 +138,13 @@ When you select to use the cloud shell it is spinning up a machine, these machin
|
||||
|
||||

|
||||
|
||||
- Cloud Shell runs on a temporary host provided on a per-session, per-user basis
|
||||
- Cloud Shell times out after 20 minutes without interactive activity
|
||||
- Cloud Shell requires an Azure file share to be mounted
|
||||
- Cloud Shell uses the same Azure file share for both Bash and PowerShell
|
||||
- Cloud Shell is assigned one machine per user account
|
||||
- Cloud Shell persists $HOME using a 5-GB image held in your file share
|
||||
- Permissions are set as a regular Linux user in Bash
|
||||
- Cloud Shell runs on a temporary host provided on a per-session, per-user basis
|
||||
- Cloud Shell times out after 20 minutes without interactive activity
|
||||
- Cloud Shell requires an Azure file share to be mounted
|
||||
- Cloud Shell uses the same Azure file share for both Bash and PowerShell
|
||||
- Cloud Shell is assigned one machine per user account
|
||||
- Cloud Shell persists $HOME using a 5-GB image held in your file share
|
||||
- Permissions are set as a regular Linux user in Bash
|
||||
|
||||
The above was copied from [Cloud Shell Overview](https://docs.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Microsoft Azure Hands-On Scenarios - Day 34'
|
||||
title: "#90DaysOfDevOps - Microsoft Azure Hands-On Scenarios - Day 34"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Microsoft Azure Hands-On Scenarios
|
||||
tags: 'DevOps, 90daysofdevops, learning'
|
||||
tags: "DevOps, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048763
|
||||
---
|
||||
|
||||
## Microsoft Azure Hands-On Scenarios
|
||||
|
||||
The last 6 days have been focused on Microsoft Azure and the public cloud in general, a lot of this foundation had to contain a lot of theory to understand the building blocks of Azure but also this will nicely translate to the other major cloud providers as well.
|
||||
@ -20,6 +21,7 @@ There are some here such as Containers and Kubernetes that we have not covered i
|
||||
In previous posts, we have created most of Modules 1,2 and 3.
|
||||
|
||||
### Virtual Networking
|
||||
|
||||
Following [Module 04](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_04-Implement_Virtual_Networking.html):
|
||||
|
||||
I went through the above and changed a few namings for #90DaysOfDevOps. I also instead of using the Cloud Shell went ahead and logged in with my new user created on previous days with the Azure CLI on my Windows machine.
|
||||
@ -27,27 +29,27 @@ I went through the above and changed a few namings for #90DaysOfDevOps. I also i
|
||||
You can do this using the `az login` which will open a browser and let you authenticate to your account.
|
||||
|
||||
I have then created a PowerShell script and some references from the module to use to build out some of the tasks below. You can find the associated files in this folder.
|
||||
(Cloud\01VirtualNetworking)
|
||||
(Cloud\01VirtualNetworking)
|
||||
|
||||
Please make sure you change the file location in the script to suit your environment.
|
||||
Please make sure you change the file location in the script to suit your environment.
|
||||
|
||||
At this first stage, we have no virtual network or virtual machines created in our environment, I only have a cloud shell storage location configured in my resource group.
|
||||
|
||||
I first of all run my [PowerShell script](Cloud/01VirtualNetworking/Module4_90DaysOfDevOps.ps1)
|
||||
|
||||

|
||||

|
||||
|
||||
- Task 1: Create and configure a virtual network
|
||||
|
||||

|
||||

|
||||
|
||||
- Task 2: Deploy virtual machines into the virtual network
|
||||
|
||||

|
||||

|
||||
|
||||
- Task 3: Configure private and public IP addresses of Azure VMs
|
||||
|
||||

|
||||

|
||||
|
||||
- Task 4: Configure network security groups
|
||||
|
||||
@ -60,12 +62,13 @@ I first of all run my [PowerShell script](Cloud/01VirtualNetworking/Module4_90Da
|
||||

|
||||
|
||||
### Network Traffic Management
|
||||
|
||||
Following [Module 06](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_06-Implement_Network_Traffic_Management.html):
|
||||
|
||||
Next walkthrough, from the last one we have gone into our resource group and deleted our resources, if you had not set up the user account like me to only have access to that one resource group you could follow the module changing the name to `90Days*` this will delete all resources and resource group. This will be my process for each of the following labs.
|
||||
|
||||
For this lab, I have also created a PowerShell script and some references from the module to use to build out some of the tasks below. You can find the associated files in this folder.
|
||||
(Cloud\02TrafficManagement)
|
||||
(Cloud\02TrafficManagement)
|
||||
|
||||
- Task 1: Provision of the lab environment
|
||||
|
||||
@ -85,7 +88,7 @@ For this my 90DaysOfDevOps group did not have access to the Network Watcher beca
|
||||

|
||||

|
||||
|
||||
^ This is expected since the two spoke virtual networks do not peer with each other (virtual network peering is not transitive).
|
||||
^ This is expected since the two spoke virtual networks do not peer with each other (virtual network peering is not transitive).
|
||||
|
||||
- Task 4: Configure routing in the hub and spoke topology
|
||||
|
||||
@ -109,10 +112,11 @@ I then was able to go back into my michael.cade@90DaysOfDevOps.com account and c
|
||||

|
||||
|
||||
### Azure Storage
|
||||
|
||||
Following [Module 07](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_07-Manage_Azure_Storage.html):
|
||||
|
||||
For this lab, I have also created a PowerShell script and some references from the module to use to build out some of the tasks below. You can find the associated files in this folder.
|
||||
(Cloud\03Storage)
|
||||
(Cloud\03Storage)
|
||||
|
||||
- Task 1: Provision of the lab environment
|
||||
|
||||
@ -150,6 +154,7 @@ On the run command, this would not work with michael.cade@90DaysOfDevOps.com so
|
||||

|
||||
|
||||
### Serverless (Implement Web Apps)
|
||||
|
||||
Following [Module 09a](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_09a-Implement_Web_Apps.html):
|
||||
|
||||
- Task 1: Create an Azure web app
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Big Picture: Git - Version Control - Day 35'
|
||||
title: "#90DaysOfDevOps - The Big Picture: Git - Version Control - Day 35"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Big Picture Git - Version Control
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049041
|
||||
---
|
||||
|
||||
## The Big Picture: Git - Version Control
|
||||
|
||||
Before we get into git, we need to understand what version control is and why? In this opener for Git, we will take a look at what version control is, and the basics of git.
|
||||
@ -127,7 +128,6 @@ This might have seemed a jump around but hopefully, you can see without really k
|
||||
|
||||
Next up we will be getting git installed and set up on your local machine and diving a little deeper into some other use cases and commands that we can achieve in Git.
|
||||
|
||||
|
||||
## Resources
|
||||
|
||||
- [What is Version Control?](https://www.youtube.com/watch?v=Yc8sCSeMhi4)
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Installing & Configuring Git - Day 36'
|
||||
title: "#90DaysOfDevOps - Installing & Configuring Git - Day 36"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Installing & Configuring Git
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048738
|
||||
---
|
||||
|
||||
## Installing & Configuring Git
|
||||
|
||||
Git is an open source, cross-platform tool for version control. If you are like me, using Ubuntu or most Linux environments you might find that you already have git installed but we are going to run through the install and configuration.
|
||||
@ -73,6 +74,7 @@ sudo apt-get update
|
||||
sudo apt-get install git -y
|
||||
git --version
|
||||
```
|
||||
|
||||
### Configuring Git
|
||||
|
||||
When we first use git we have to define some settings,
|
||||
|
127
Days/day37.md
127
Days/day37.md
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Gitting to know Git - Day 37'
|
||||
title: "#90DaysOfDevOps - Gitting to know Git - Day 37"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Gitting to know Git
|
||||
tags: 'DevOps, 90daysofdevops, learning'
|
||||
tags: "DevOps, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048707
|
||||
---
|
||||
|
||||
## Gitting to know Git
|
||||
|
||||
Apologies for the terrible puns in the title and throughout. I am surely not the first person to turn Git into a dad joke!
|
||||
@ -19,7 +20,7 @@ Now we are going to run through some of the commands and use cases that we will
|
||||
|
||||
There are going to be times when you just cannot remember or just don't know the command you need to get things done with git. You are going to need help.
|
||||
|
||||
Google or any search engine is likely to be your first port of call when searching for help.
|
||||
Google or any search engine is likely to be your first port of call when searching for help.
|
||||
|
||||
Secondly, the next place is going to be the official git site and the documentation. [git-scm.com/docs](http://git-scm.com/docs) Here you will find not only a solid reference to all the commands available but also lots of different resources.
|
||||
|
||||
@ -54,11 +55,9 @@ I want to briefly cover the ecosystem around git but not deep dive into some of
|
||||
Almost all modern development tools support Git.
|
||||
|
||||
- Developer tools - We have already mentioned visual studio code but you will find git plugins and integrations into sublime text and other text editors and IDEs.
|
||||
|
||||
- Team tools - Also mentioned around tools like Jenkins from a CI/CD point of view, Slack from a messaging framework and Jira for project management and issue tracking.
|
||||
|
||||
- Cloud Providers - All the large cloud providers support git, Microsoft Azure, Amazon AWS, and Google Cloud Platform.
|
||||
|
||||
- Git-Based services - Then we have GitHub, GitLab and BitBucket which we will cover in more detail later on. I have heard of these services as the social network for code!
|
||||
|
||||
### The Git Cheatsheet
|
||||
@ -69,95 +68,95 @@ I have taken these from [atlassian](https://www.atlassian.com/git/tutorials/atla
|
||||
|
||||
### Git Basics
|
||||
|
||||
| Command | Example | Description |
|
||||
| --------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git init | `git init <directory>` | Create an empty git repository in the specified directory. |
|
||||
| git clone | `git clone <repo>` | Clone repository located at <repo> onto local machine. |
|
||||
| git config | `git config user.name` | Define author name to be used for all commits in current repository `system`, `global`, `local` flag to set config options. |
|
||||
| git add | `git add <directory>` | Stage all changes in <directory> for the next commit. We can also add <files> and <.> for everything. |
|
||||
| git commit -m | `git commit -m "<message>"` | Commit the staged snapshot, use <message> to detail what is being committed. |
|
||||
| git status | `git status` | List files that are staged, unstaged and untracked. |
|
||||
| git log | `git log` | Display all commit history using the default format. There are additional options with this command. |
|
||||
| git diff | `git diff` | Show unstaged changes between your index and working directory. |
|
||||
| Command | Example | Description |
|
||||
| ------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git init | `git init <directory>` | Create an empty git repository in the specified directory. |
|
||||
| git clone | `git clone <repo>` | Clone repository located at <repo> onto local machine. |
|
||||
| git config | `git config user.name` | Define author name to be used for all commits in current repository `system`, `global`, `local` flag to set config options. |
|
||||
| git add | `git add <directory>` | Stage all changes in <directory> for the next commit. We can also add <files> and <.> for everything. |
|
||||
| git commit -m | `git commit -m "<message>"` | Commit the staged snapshot, use <message> to detail what is being committed. |
|
||||
| git status | `git status` | List files that are staged, unstaged and untracked. |
|
||||
| git log | `git log` | Display all commit history using the default format. There are additional options with this command. |
|
||||
| git diff | `git diff` | Show unstaged changes between your index and working directory. |
|
||||
|
||||
### Git Undoing Changes
|
||||
|
||||
| Command | Example | Description |
|
||||
| --------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git revert | `git revert <commit>` | Create a new commit that undoes all of the changes made in <commit> then apply it to the current branch. |
|
||||
| git reset | `git reset <file>` | Remove <file> from the staging area, but leave the working directory unchanged. This unstaged a file without overwriting any changes. |
|
||||
| git clean | `git clean -n` | Shows which files would be removed from the working directory. Use `-f` in place of `-n` to execute the clean. |
|
||||
| Command | Example | Description |
|
||||
| ---------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git revert | `git revert <commit>` | Create a new commit that undoes all of the changes made in <commit> then apply it to the current branch. |
|
||||
| git reset | `git reset <file>` | Remove <file> from the staging area, but leave the working directory unchanged. This unstaged a file without overwriting any changes. |
|
||||
| git clean | `git clean -n` | Shows which files would be removed from the working directory. Use `-f` in place of `-n` to execute the clean. |
|
||||
|
||||
### Git Rewriting History
|
||||
|
||||
| Command | Example | Description |
|
||||
| --------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git commit | `git commit --amend` | Replace the last commit with the staged changes and the last commit combined. Use with nothing staged to edit the last commit’s message. |
|
||||
| git rebase | `git rebase <base>` | Rebase the current branch onto <base>. <base> can be a commit ID, branch name, a tag, or a relative reference to HEAD. |
|
||||
| git reflog | `git reflog` | Show a log of changes to the local repository’s HEAD. Add --relative-date flag to show date info or --all to show all refs. |
|
||||
| Command | Example | Description |
|
||||
| ---------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git commit | `git commit --amend` | Replace the last commit with the staged changes and the last commit combined. Use with nothing staged to edit the last commit’s message. |
|
||||
| git rebase | `git rebase <base>` | Rebase the current branch onto <base>. <base> can be a commit ID, branch name, a tag, or a relative reference to HEAD. |
|
||||
| git reflog | `git reflog` | Show a log of changes to the local repository’s HEAD. Add --relative-date flag to show date info or --all to show all refs. |
|
||||
|
||||
### Git Branches
|
||||
|
||||
| Command | Example | Description |
|
||||
| --------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git branch | `git branch` | List all of the branches in your repo. Add a <branch> argument to create a new branch with the name <branch>. |
|
||||
| git checkout | `git checkout -b <branch>` | Create and check out a new branch named <branch>. Drop the -b flag to checkout an existing branch. |
|
||||
| git merge | `git merge <branch>` | Merge <branch> into the current branch. |
|
||||
| Command | Example | Description |
|
||||
| ------------ | -------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| git branch | `git branch` | List all of the branches in your repo. Add a <branch> argument to create a new branch with the name <branch>. |
|
||||
| git checkout | `git checkout -b <branch>` | Create and check out a new branch named <branch>. Drop the -b flag to checkout an existing branch. |
|
||||
| git merge | `git merge <branch>` | Merge <branch> into the current branch. |
|
||||
|
||||
### Git Remote Repositories
|
||||
|
||||
| Command | Example | Description |
|
||||
| --------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git remote add | `git remote add <name> <url>` | Create a new connection to a remote repo. After adding a remote, you can use <name> as a shortcut for <url> in other commands. |
|
||||
| git fetch | `git fetch <remote> <branch>` | Fetches a specific <branch>, from the repo. Leave off <branch> to fetch all remote refs. |
|
||||
| git pull | `git pull <remote>` | Fetch the specified remote’s copy of current branch and immediately merge it into the local copy. |
|
||||
| git push | `git push <remote> <branch>` | Push the branch to <remote>, along with necessary commits and objects. Creates named branch in the remote repo if it doesn’t exist. |
|
||||
| Command | Example | Description |
|
||||
| -------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git remote add | `git remote add <name> <url>` | Create a new connection to a remote repo. After adding a remote, you can use <name> as a shortcut for <url> in other commands. |
|
||||
| git fetch | `git fetch <remote> <branch>` | Fetches a specific <branch>, from the repo. Leave off <branch> to fetch all remote refs. |
|
||||
| git pull | `git pull <remote>` | Fetch the specified remote’s copy of current branch and immediately merge it into the local copy. |
|
||||
| git push | `git push <remote> <branch>` | Push the branch to <remote>, along with necessary commits and objects. Creates named branch in the remote repo if it doesn’t exist. |
|
||||
|
||||
### Git Diff
|
||||
|
||||
| Command | Example | Description |
|
||||
| --------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git diff HEAD | `git diff HEAD` | Show the difference between the working directory and the last commit. |
|
||||
| git diff --cached | `git diff --cached` | Show difference between staged changes and last commit |
|
||||
| Command | Example | Description |
|
||||
| ----------------- | ------------------- | ---------------------------------------------------------------------- |
|
||||
| git diff HEAD | `git diff HEAD` | Show the difference between the working directory and the last commit. |
|
||||
| git diff --cached | `git diff --cached` | Show difference between staged changes and last commit |
|
||||
|
||||
### Git Config
|
||||
|
||||
| Command | Example | Description |
|
||||
| ----------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git config --global user.name <name> | `git config --global user.name <name>` | Define the author name to be used for all commits by the current user. |
|
||||
| git config --global user.email <email> | `git config --global user.email <email>` | Define author email to be used for all commits by the current user. |
|
||||
| git config --global alias <alias-name> <git-command> | `git config --global alias <alias-name> <git-command>` | Create shortcut for a git command . |
|
||||
| git config --system core.editor <editor> | `git config --system core.editor <editor>` | Set the text editor to be used by commands for all users on the machine. <editor> arg should be the comamnd that launches the desired editor. |
|
||||
| git config --global --edit | `git config --global --edit ` | Open the global configuration file in a text editor for manual editing. |
|
||||
| Command | Example | Description |
|
||||
| ---------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git config --global user.name <name> | `git config --global user.name <name>` | Define the author name to be used for all commits by the current user. |
|
||||
| git config --global user.email <email> | `git config --global user.email <email>` | Define author email to be used for all commits by the current user. |
|
||||
| git config --global alias <alias-name> <git-command> | `git config --global alias <alias-name> <git-command>` | Create shortcut for a git command . |
|
||||
| git config --system core.editor <editor> | `git config --system core.editor <editor>` | Set the text editor to be used by commands for all users on the machine. <editor> arg should be the comamnd that launches the desired editor. |
|
||||
| git config --global --edit | `git config --global --edit ` | Open the global configuration file in a text editor for manual editing. |
|
||||
|
||||
### Git Rebase
|
||||
|
||||
| Command | Example | Description |
|
||||
| ------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git rebase -i <base> | `git rebase -i <base>` | Interactively rebase current branch onto <base>. Launches editor to enter commands for how each commit will be transferred to the new base. |
|
||||
| Command | Example | Description |
|
||||
| -------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git rebase -i <base> | `git rebase -i <base>` | Interactively rebase current branch onto <base>. Launches editor to enter commands for how each commit will be transferred to the new base. |
|
||||
|
||||
### Git Pull
|
||||
|
||||
| Command | Example | Description |
|
||||
| ------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git pull --rebase <remote> | `git pull --rebase <remote>` | Fetch the remote’s copy of current branch and rebases it into the local copy. Uses git rebase instead of the merge to integrate the branches. |
|
||||
| Command | Example | Description |
|
||||
| -------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git pull --rebase <remote> | `git pull --rebase <remote>` | Fetch the remote’s copy of current branch and rebases it into the local copy. Uses git rebase instead of the merge to integrate the branches. |
|
||||
|
||||
### Git Reset
|
||||
|
||||
| Command | Example | Description |
|
||||
| ------------------------- | --------------------------| --------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git reset | `git reset ` | Reset the staging area to match the most recent commit but leave the working directory unchanged. |
|
||||
| git reset --hard | `git reset --hard` | Reset staging area and working directory to match most recent commit and overwrites all changes in the working directory |
|
||||
| git reset <commit> | `git reset <commit>` | Move the current branch tip backwards to <commit>, reset the staging area to match, but leave the working directory alone |
|
||||
| git reset --hard <commit> | `git reset --hard <commit>` | Same as previous, but resets both the staging area & working directory to match. Deletes uncommitted changes, and all commits after <commit>. |
|
||||
| Command | Example | Description |
|
||||
| ------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git reset | `git reset ` | Reset the staging area to match the most recent commit but leave the working directory unchanged. |
|
||||
| git reset --hard | `git reset --hard` | Reset staging area and working directory to match most recent commit and overwrites all changes in the working directory |
|
||||
| git reset <commit> | `git reset <commit>` | Move the current branch tip backwards to <commit>, reset the staging area to match, but leave the working directory alone |
|
||||
| git reset --hard <commit> | `git reset --hard <commit>` | Same as previous, but resets both the staging area & working directory to match. Deletes uncommitted changes, and all commits after <commit>. |
|
||||
|
||||
### Git Push
|
||||
|
||||
| Command | Example | Description |
|
||||
| ------------------------- | --------------------------| --------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git push <remote> --force | `git push <remote> --force` | Forces the git push even if it results in a non-fast-forward merge. Do not use the --force flag unless you’re sure you know what you’re doing. |
|
||||
| git push <remote> --all | `git push <remote> --all` | Push all of your local branches to the specified remote. |
|
||||
| git push <remote> --tags | `git push <remote> --tags` | Tags aren’t automatically pushed when you push a branch or use the --all flag. The --tags flag sends all of your local tags to the remote repo. |
|
||||
| Command | Example | Description |
|
||||
| ------------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| git push <remote> --force | `git push <remote> --force` | Forces the git push even if it results in a non-fast-forward merge. Do not use the --force flag unless you’re sure you know what you’re doing. |
|
||||
| git push <remote> --all | `git push <remote> --all` | Push all of your local branches to the specified remote. |
|
||||
| git push <remote> --tags | `git push <remote> --tags` | Tags aren’t automatically pushed when you push a branch or use the --all flag. The --tags flag sends all of your local tags to the remote repo. |
|
||||
|
||||
## Resources
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Staging & Changing - Day 38'
|
||||
title: "#90DaysOfDevOps - Staging & Changing - Day 38"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Staging & Changing
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049042
|
||||
---
|
||||
|
||||
## Staging & Changing
|
||||
|
||||
We have already covered some of the basics but putting things into a walkthrough makes it better for me to learn and understand how and why we are doing it this way. Before we get into any git-based services such as GitHub, git has its powers that we can take advantage of on our local workstation.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Viewing, unstaging, discarding & restoring - Day 39'
|
||||
title: "#90DaysOfDevOps - Viewing, unstaging, discarding & restoring - Day 39"
|
||||
published: false
|
||||
description: '90DaysOfDevOps - Viewing, unstaging, discarding & restoring'
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
description: "90DaysOfDevOps - Viewing, unstaging, discarding & restoring"
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048827
|
||||
---
|
||||
|
||||
## Viewing, unstaging, discarding & restoring
|
||||
|
||||
Continuing from where we finished yesterday around some of the commands that we have with git and how to leverage git with your projects. Remember we have not touched GitHub or any other git-based services yet this is all to help you keep control of your projects locally at the moment, but they will all become useful when we start to integrate into those tools.
|
||||
@ -188,6 +189,7 @@ As an alternate option, we can rebase the feature branch onto the main branch us
|
||||
git checkout feature
|
||||
git rebase main
|
||||
```
|
||||
|
||||
This moves the feature branch (the entire feature branch) effectively incorporating all of the new commits in the main. But, instead of using a merge commit, rebasing re-writes the project history by creating brand new commits for each commit in the original branch.
|
||||
|
||||

|
||||
|
@ -1,13 +1,15 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Social Network for code - Day 40'
|
||||
title: "#90DaysOfDevOps - Social Network for code - Day 40"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Social Network for code
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049044
|
||||
---
|
||||
|
||||
## Social Network for code
|
||||
|
||||
Exploring GitHub | GitLab | BitBucket
|
||||
|
||||
Today I want to cover some of the git-based services that we have likely all heard of and expect we also use daily.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Open Source Workflow - Day 41'
|
||||
title: "#90DaysOfDevOps - The Open Source Workflow - Day 41"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Open Source Workflow
|
||||
tags: 'DevOps, 90daysofdevops, learning'
|
||||
tags: "DevOps, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048806
|
||||
---
|
||||
|
||||
## The Open Source Workflow
|
||||
|
||||
Hopefully, through the last 7 sections of Git, we have a better understanding of what git is and then how a git-based service such as GitHub integrates with git to provide a source code repository but also a way in which the wider community can collaborate on code and projects together.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Big Picture: Containers - Day 42'
|
||||
title: "#90DaysOfDevOps - The Big Picture: Containers - Day 42"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Big Picture Containers
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048826
|
||||
---
|
||||
|
||||
## The Big Picture: Containers
|
||||
|
||||
We are now starting the next section and this section is going to be focused on containers in particular we are going to be looking into Docker getting into some of the key areas to understand more about Containers.
|
||||
@ -64,14 +65,14 @@ If we think about Docker as a tool, the reason that it took off, is because of t
|
||||
|
||||
We can split the above into 3 areas of the complexity of the software that containers and images do help with these.
|
||||
|
||||
| Distribution | Installation | Operation |
|
||||
| ------------ | ------------ | ----------------- |
|
||||
| Find | Install | Start |
|
||||
| Download | Configuration| Security |
|
||||
| License | Uninstall | Ports |
|
||||
| Package | Dependencies | Resource Conflicts |
|
||||
| Trust | Platform | Auto-Restart |
|
||||
| Find | Libraries | Updates |
|
||||
| Distribution | Installation | Operation |
|
||||
| ------------ | ------------- | ------------------ |
|
||||
| Find | Install | Start |
|
||||
| Download | Configuration | Security |
|
||||
| License | Uninstall | Ports |
|
||||
| Package | Dependencies | Resource Conflicts |
|
||||
| Trust | Platform | Auto-Restart |
|
||||
| Find | Libraries | Updates |
|
||||
|
||||
Containers and images are going to help us remove some of these challenges that we have with possibly other software and applications.
|
||||
|
||||
@ -98,7 +99,7 @@ a container that you can move.
|
||||
### The advantages of these containers
|
||||
|
||||
- Containers help package all the dependencies within the container and
|
||||
isolate it.
|
||||
isolate it.
|
||||
|
||||
- It is easy to manage the containers
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - What is Docker & Getting installed - Day 43'
|
||||
title: "#90DaysOfDevOps - What is Docker & Getting installed - Day 43"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - What is Docker & Getting installed
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048739
|
||||
---
|
||||
|
||||
## What is Docker & Getting installed
|
||||
|
||||
In the previous post, I mentioned Docker at least once and that is because Docker is innovative in making containers popular even though they have been around for such a long time.
|
||||
@ -30,6 +31,7 @@ Docker Engine is an open-source containerization technology for building and con
|
||||
The above was taken from the official Docker documentation and the specific [Docker Engine Overview](https://docs.docker.com/engine/)
|
||||
|
||||
### Docker Desktop
|
||||
|
||||
We have a docker desktop for both Windows and macOS systems. An easy-to-install, lightweight docker development environment. A native OS application that leverages virtualisation capabilities on the host operating system.
|
||||
|
||||
It’s the best solution if you want to build, debug, test, package, and ship Dockerized applications on Windows or macOS.
|
||||
@ -39,9 +41,11 @@ On Windows, we can also take advantage of WSL2 and Microsoft Hyper-V. We will co
|
||||
Because of the integration with hypervisor capabilities on the host operating system docker provides the ability to run your containers with Linux Operating systems.
|
||||
|
||||
### Docker Compose
|
||||
|
||||
Docker compose is a tool that allows you to run more complex apps over multiple containers. With the benefit of being able to use a single file and command to spin up your application.
|
||||
|
||||
### Docker Hub
|
||||
|
||||
A centralised resource for working with Docker and its components. Most commonly known as a registry to host docker images. But there are a lot of additional services here which can be used in part with automation or integrated into GitHub as well as security scanning.
|
||||
|
||||
### Dockerfile
|
||||
@ -58,7 +62,6 @@ Take note before you go ahead and install at the system requirements, [Install D
|
||||
|
||||
I will run through the Docker Desktop installation for Windows on another Windows Machine and log the process down below.
|
||||
|
||||
|
||||
## Resources
|
||||
|
||||
- [TechWorld with Nana - Docker Tutorial for Beginners](https://www.youtube.com/watch?v=3c-iBn73dDE)
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Docker Images & Hands-On with Docker Desktop - Day 44'
|
||||
title: "#90DaysOfDevOps - Docker Images & Hands-On with Docker Desktop - Day 44"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Docker Images & Hands-On with Docker Desktop
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048708
|
||||
---
|
||||
|
||||
## Docker Images & Hands-On with Docker Desktop
|
||||
|
||||
We now have Docker Desktop installed on our system. (If you are running Linux then you still have options but no GUI but docker does work on Linux.)[Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/) (Other distributions also available.)
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Docker Compose - Day 46'
|
||||
title: "#90DaysOfDevOps - Docker Compose - Day 46"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Docker Compose
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048740
|
||||
---
|
||||
|
||||
## Docker Compose
|
||||
|
||||
The ability to run one container could be great if you have a self-contained image that has everything you need for your single use case, where things get interesting is when you are looking to build multiple applications between different container images. For example, if I had a website front end but required a backend database I could put everything in one container but better and more efficient would be to have its container for the database.
|
||||
@ -22,6 +23,7 @@ In this first example we are going to:
|
||||
- Shutdown and Clean up
|
||||
|
||||
### Install Docker Compose
|
||||
|
||||
As mentioned Docker Compose is a tool, If you are on macOS or Windows then compose is included in your Docker Desktop installation. However, you might be wanting to run your containers on a Windows server host or Linux server and in which case you can install using these instructions [Install Docker Compose](https://docs.docker.com/compose/install/)
|
||||
|
||||
To confirm we have `docker-compose` installed on our system we can open a terminal and simply type the above command.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Docker Networking & Security - Day 47'
|
||||
title: "#90DaysOfDevOps - Docker Networking & Security - Day 47"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Docker Networking & Security
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049078
|
||||
---
|
||||
|
||||
## Docker Networking & Security
|
||||
|
||||
During this container session so far we have made things happen but we have not looked at how things have worked behind the scenes either from a networking point of view also we have not touched on security, that is the plan for this session.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Alternatives to Docker - Day 48'
|
||||
title: "#90DaysOfDevOps - Alternatives to Docker - Day 48"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Alternatives to Docker
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048807
|
||||
---
|
||||
|
||||
## Alternatives to Docker
|
||||
|
||||
I did say at the very beginning of this section that we were going to be using Docker, simply because resource wise there is so much and the community is very big, but also this was really where the indents to making containers popular came from. I would encourage you to go and watch some of the history around Docker and how it came to be, I found it very useful.
|
||||
@ -25,14 +26,14 @@ Podman can be run under WSL2 although not as sleek as the experience with Docker
|
||||
|
||||
My Ubuntu on WSL2 is the 20.04 release. Following the next steps will enable you to install Podman on your WSL instance.
|
||||
|
||||
```
|
||||
```Shell
|
||||
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/ /" |
|
||||
sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
|
||||
```
|
||||
|
||||
Add the GPG Key
|
||||
|
||||
```
|
||||
```Shell
|
||||
curl -L "https://download.opensuse.org/repositories/devel:/kubic:\
|
||||
/libcontainers:/stable/xUbuntu_20.04/Release.key" | sudo apt-key add -
|
||||
```
|
||||
@ -99,8 +100,6 @@ We could also mention toolings and options around Rancher, and VirtualBox but we
|
||||
- Create teams and assign roles and permissions to team members.
|
||||
- Know what is running in each environment using the tool’s dashboard.
|
||||
|
||||
|
||||
|
||||
## Resources
|
||||
|
||||
- [TechWorld with Nana - Docker Tutorial for Beginners](https://www.youtube.com/watch?v=3c-iBn73dDE)
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Big Picture: Kubernetes - Day 49'
|
||||
title: "#90DaysOfDevOps - The Big Picture: Kubernetes - Day 49"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Big Picture Kubernetes
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049049
|
||||
---
|
||||
|
||||
## The Big Picture: Kubernetes
|
||||
|
||||
In the last section we covered Containers, Containers fall short when it comes to scale and orchestration alone. The best we can do is use docker-compose to bring up multiple containers together. When it comes to Kubernetes which is a Container Orchestrator, this gives us the ability to scale up and down in an automated way or based on a load of your applications and services.
|
||||
@ -23,7 +24,7 @@ The first thing you should read if you are new to Kubernetes is the official doc
|
||||
|
||||
But the community, free learning resources and documentation are amazing. [Kubernetes.io](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/)
|
||||
|
||||
*Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.*
|
||||
_Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available._
|
||||
|
||||
Important things to note from the above quote, Kubernetes is Open-Source with a rich history that goes back to Google who donated the project to the Cloud Native Computing Foundation (CNCF) and it has now been progressed by the open-source community as well as large enterprise vendors contributing to making Kubernetes what it is today.
|
||||
|
||||
@ -50,7 +51,6 @@ It also has many other responsibilities:
|
||||
- Cluster management federates hosts into one target.
|
||||
|
||||
- Schedule management distributes containers across nodes through the scheduler.
|
||||
|
||||
- Service discovery knows where containers are located and distributes client requests across them.
|
||||
|
||||
- Replication ensures that the right number of nodes and containers are available for the requested workload.
|
||||
@ -67,20 +67,21 @@ The key paradigm of Kubernetes is its declarative model. You provide the state t
|
||||
|
||||
### Node
|
||||
|
||||
**Control Plane**
|
||||
#### Control Plane
|
||||
|
||||
Every Kubernetes cluster requires a Control Plane node, the control plane's components make global decisions about the cluster (for example, scheduling), as well as detecting and responding to cluster events.
|
||||
|
||||

|
||||
|
||||
**Worker Node**
|
||||
A worker machine that runs Kubernetes workloads. It can be a physical (bare metal) machine or a virtual machine (VM). Each node can host one or more pods. Kubernetes nodes are managed by a control plane
|
||||
#### Worker Node
|
||||
|
||||
A worker machine that runs Kubernetes workloads. It can be a physical (bare metal) machine or a virtual machine (VM). Each node can host one or more pods. Kubernetes nodes are managed by a control plane
|
||||
|
||||

|
||||
|
||||
There are other node types but I won't be covering them here.
|
||||
|
||||
**kubelet**
|
||||
#### kubelet
|
||||
|
||||
An agent that runs on each node in the cluster. It makes sure that containers are running in a Pod.
|
||||
|
||||
@ -88,7 +89,7 @@ The kubelet takes a set of PodSpecs that are provided through various mechanisms
|
||||
|
||||

|
||||
|
||||
**kube-proxy**
|
||||
#### kube-proxy
|
||||
|
||||
kube-proxy is a network proxy that runs on each node in your cluster, implementing part of the Kubernetes Service concept.
|
||||
|
||||
@ -98,7 +99,7 @@ kube-proxy uses the operating system packet filtering layer if there is one and
|
||||
|
||||

|
||||
|
||||
**Container runtime**
|
||||
#### Container runtime
|
||||
|
||||
The container runtime is the software that is responsible for running containers.
|
||||
|
||||
@ -112,25 +113,25 @@ A cluster is a group of nodes, where a node can be a physical machine or a virtu
|
||||
|
||||
Our control plane which can be made highly available will contain some unique roles compared to the worker nodes, the most important will be the kube API server, this is where any communication will take place to get information or push information to our Kubernetes cluster.
|
||||
|
||||
**Kube API-Server**
|
||||
#### Kube API-Server
|
||||
|
||||
The Kubernetes API server validates and configures data for the API objects which include pods, services, replication controllers, and others. The API Server services REST operations and provide the frontend to the cluster's shared state through which all other components interact.
|
||||
|
||||
**Scheduler**
|
||||
#### Scheduler
|
||||
|
||||
The Kubernetes scheduler is a control plane process which assigns Pods to Nodes. The scheduler determines which Nodes are valid placements for each Pod in the scheduling queue according to constraints and available resources. The scheduler then ranks each valid Node and binds the Pod to a suitable Node.
|
||||
|
||||
**Controller Manager**
|
||||
#### Controller Manager
|
||||
|
||||
The Kubernetes controller manager is a daemon that embeds the core control loops shipped with Kubernetes. In applications of robotics and automation, a control loop is a non-terminating loop that regulates the state of the system. In Kubernetes, a controller is a control loop that watches the shared state of the cluster through the apiserver and makes changes attempting to move the current state towards the desired state.
|
||||
|
||||
**etcd**
|
||||
#### etcd
|
||||
|
||||
Consistent and highly-available key value store used as Kubernetes' backing store for all cluster data.
|
||||
|
||||

|
||||
|
||||
**kubectl**
|
||||
#### kubectl
|
||||
|
||||
To manage this from a CLI point of view we have kubectl, kubectl interacts with the API server.
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Choosing your Kubernetes platform - Day 50'
|
||||
title: "#90DaysOfDevOps - Choosing your Kubernetes platform - Day 50"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Choosing your Kubernetes platform
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049046
|
||||
---
|
||||
|
||||
## Choosing your Kubernetes platform
|
||||
|
||||
I wanted to use this session to break down some of the platforms or maybe distributions is a better term to use here, one thing that has been a challenge in the Kubernetes world is removing complexity.
|
||||
@ -34,6 +35,7 @@ My first ever Kubernetes cluster was built based on Virtualisation using Microso
|
||||
There are several options when it comes to running a local Kubernetes cluster on your desktop or laptop. This as previously said gives developers the ability to see what their app will look like without having to have multiple costly or complex clusters. Personally, this has been one that I have used a lot and in particular, I have been using minikube. It has some great functionality and adds-ons which changes the way you get something up and running.
|
||||
|
||||
### Kubernetes Managed Services
|
||||
|
||||
I have mentioned virtualisation, and this can be achieved with hypervisors locally but we know from previous sections we could also leverage VMs in the public cloud to act as our nodes. What I am talking about here with Kubernetes managed services are the offerings we see from the large hyperscalers but also from MSPs removing layers of management and control away from the end user, this could be removing the control plane from the end user this is what happens with Amazon EKS, Microsoft AKS and Google Kubernetes Engine. (GKE)
|
||||
|
||||
### Overwhelming choice
|
||||
|
@ -1,19 +1,20 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Deploying your first Kubernetes Cluster - Day 51'
|
||||
title: "#90DaysOfDevOps - Deploying your first Kubernetes Cluster - Day 51"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Deploying your first Kubernetes Cluster
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048778
|
||||
---
|
||||
|
||||
## Deploying your first Kubernetes Cluster
|
||||
|
||||
In this post we are going get a Kubernetes cluster up and running on our local machine using minikube, this will give us a baseline Kubernetes cluster for the rest of the Kubernetes section, although we will look at deploying a Kubernetes cluster also in VirtualBox later on. The reason for choosing this method vs spinning a managed Kubernetes cluster up in the public cloud is that this is going to cost money even with the free tier, I shared some blogs though if you would like to spin up that environment in the previous section [Day 50](day50.md).
|
||||
|
||||
### What is Minikube?
|
||||
|
||||
*“minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows. We proudly focus on helping application developers and new Kubernetes users.”*
|
||||
> “minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows. We proudly focus on helping application developers and new Kubernetes users.”
|
||||
|
||||
You might not fit into the above but I have found minikube is a great little tool if you just want to test something out in a Kubernetes fashion, you can easily deploy and app and they have some amazing add ons which I will also cover.
|
||||
|
||||
@ -83,56 +84,56 @@ kubectl interacts with the API server found on the Control Plane node which we b
|
||||
|
||||
Along with the official documentation, I have also found myself with this page open all the time when looking for kubectl commands. [Unofficial Kubernetes](https://unofficial-kubernetes.readthedocs.io/en/latest/)
|
||||
|
||||
|Listing Resources | |
|
||||
| ------------------------------ | ----------------------------------------- |
|
||||
|kubectl get nodes |List all nodes in cluster |
|
||||
|kubectl get namespaces |List all namespaces in cluster |
|
||||
|kubectl get pods |List all pods in default namespace cluster |
|
||||
|kubectl get pods -n name |List all pods in "name" namespace |
|
||||
| Listing Resources | |
|
||||
| ------------------------ | ------------------------------------------ |
|
||||
| kubectl get nodes | List all nodes in cluster |
|
||||
| kubectl get namespaces | List all namespaces in cluster |
|
||||
| kubectl get pods | List all pods in default namespace cluster |
|
||||
| kubectl get pods -n name | List all pods in "name" namespace |
|
||||
|
||||
|Creating Resources | |
|
||||
| ------------------------------ | ----------------------------------------- |
|
||||
|kubectl create namespace name |Create a namespace called "name" |
|
||||
|kubectl create -f [filename] |Create a resource from a JSON or YAML file:|
|
||||
| Creating Resources | |
|
||||
| ----------------------------- | ------------------------------------------- |
|
||||
| kubectl create namespace name | Create a namespace called "name" |
|
||||
| kubectl create -f [filename] | Create a resource from a JSON or YAML file: |
|
||||
|
||||
|Editing Resources | |
|
||||
| ------------------------------ | ----------------------------------------- |
|
||||
|kubectl edit svc/servicename |To edit a service |
|
||||
| Editing Resources | |
|
||||
| ---------------------------- | ----------------- |
|
||||
| kubectl edit svc/servicename | To edit a service |
|
||||
|
||||
|More detail on Resources | |
|
||||
| ------------------------------ | ------------------------------------------------------ |
|
||||
|kubectl describe nodes | display the state of any number of resources in detail,|
|
||||
| More detail on Resources | |
|
||||
| ------------------------ | ------------------------------------------------------- |
|
||||
| kubectl describe nodes | display the state of any number of resources in detail, |
|
||||
|
||||
|Delete Resources | |
|
||||
| ------------------------------ | ------------------------------------------------------ |
|
||||
|kubectl delete pod | Remove resources, this can be from stdin or file |
|
||||
| Delete Resources | |
|
||||
| ------------------ | ------------------------------------------------ |
|
||||
| kubectl delete pod | Remove resources, this can be from stdin or file |
|
||||
|
||||
You will find yourself wanting to know the short names for some of the kubectl commands, for example `-n` is the short name for `namespace` which makes it easier to type a command but also if you are scripting anything you can have much tidier code.
|
||||
|
||||
| Short name | Full name |
|
||||
| -------------------- | ---------------------------- |
|
||||
| csr | certificatesigningrequests |
|
||||
| cs | componentstatuses |
|
||||
| cm | configmaps |
|
||||
| ds | daemonsets |
|
||||
| deploy | deployments |
|
||||
| ep | endpoints |
|
||||
| ev | events |
|
||||
| hpa | horizontalpodautoscalers |
|
||||
| ing | ingresses |
|
||||
| limits | limitranges |
|
||||
| ns | namespaces |
|
||||
| no | nodes |
|
||||
| pvc | persistentvolumeclaims |
|
||||
| pv | persistentvolumes |
|
||||
| po | pods |
|
||||
| pdb | poddisruptionbudgets |
|
||||
| psp | podsecuritypolicies |
|
||||
| rs | replicasets |
|
||||
| rc | replicationcontrollers |
|
||||
| quota | resourcequotas |
|
||||
| sa | serviceaccounts |
|
||||
| svc | services |
|
||||
| Short name | Full name |
|
||||
| ---------- | -------------------------- |
|
||||
| csr | certificatesigningrequests |
|
||||
| cs | componentstatuses |
|
||||
| cm | configmaps |
|
||||
| ds | daemonsets |
|
||||
| deploy | deployments |
|
||||
| ep | endpoints |
|
||||
| ev | events |
|
||||
| hpa | horizontalpodautoscalers |
|
||||
| ing | ingresses |
|
||||
| limits | limitranges |
|
||||
| ns | namespaces |
|
||||
| no | nodes |
|
||||
| pvc | persistentvolumeclaims |
|
||||
| pv | persistentvolumes |
|
||||
| po | pods |
|
||||
| pdb | poddisruptionbudgets |
|
||||
| psp | podsecuritypolicies |
|
||||
| rs | replicasets |
|
||||
| rc | replicationcontrollers |
|
||||
| quota | resourcequotas |
|
||||
| sa | serviceaccounts |
|
||||
| svc | services |
|
||||
|
||||
The final thing to add here is that I created another project around minikube to help me quickly spin up demo environments to display data services and protecting those workloads with Kasten K10, [Project Pace](https://github.com/MichaelCade/project_pace) can be found there and would love your feedback or interaction, it also displays or includes some automated ways of deploying your minikube clusters and creating different data services applications.
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Setting up a multinode Kubernetes Cluster - Day 52'
|
||||
title: "#90DaysOfDevOps - Setting up a multinode Kubernetes Cluster - Day 52"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Setting up a multinode Kubernetes Cluster
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049050
|
||||
---
|
||||
|
||||
## Setting up a multinode Kubernetes Cluster
|
||||
|
||||
I wanted this title to be "Setting up a multinode Kubernetes cluster with Vagrant" but thought it might be a little too long!
|
||||
@ -29,7 +30,7 @@ When you are in your directory then you can simply run `vagrant up` and if all i
|
||||
|
||||

|
||||
|
||||
In the terminal you are going to see a number of steps taking place, but in the meantime let's take a look at what we are actually building here.
|
||||
In the terminal you are going to see a number of steps taking place, but in the meantime let's take a look at what we are actually building here.
|
||||
|
||||

|
||||
|
||||
@ -98,7 +99,8 @@ Vagrant.configure("2") do |config|
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
```
|
||||
|
||||
Lets break down those scripts that are being ran. We have three scripts listed in the above VAGRANTFILE to run on specific nodes.
|
||||
|
||||
`master.vm.provision "shell", path: "scripts/common.sh"`
|
||||
@ -115,11 +117,11 @@ This is simply going to take the config created by the master and join our nodes
|
||||
|
||||
### Access to the Kubernetes cluster
|
||||
|
||||
Now we have two clusters deployed we have our minikube cluster that we deployed in the previous section and we have the new 3 node cluster we just deployed to VirtualBox.
|
||||
Now we have two clusters deployed we have our minikube cluster that we deployed in the previous section and we have the new 3 node cluster we just deployed to VirtualBox.
|
||||
|
||||
Also in that config file that you will also have access to on the machine you ran vagrant from consists of how we can gain access to our cluster from our workstation.
|
||||
Also in that config file that you will also have access to on the machine you ran vagrant from consists of how we can gain access to our cluster from our workstation.
|
||||
|
||||
Before we show that let me touch on the context.
|
||||
Before we show that let me touch on the context.
|
||||
|
||||

|
||||
|
||||
|
@ -1,19 +1,20 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Rancher Overview - Hands On - Day 53'
|
||||
title: "#90DaysOfDevOps - Rancher Overview - Hands On - Day 53"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Rancher Overview - Hands On
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048742
|
||||
---
|
||||
|
||||
## Rancher Overview - Hands On
|
||||
|
||||
In this section we are going to take a look at Rancher, so far everything we have done has been in the cli and using kubectl but we have a few really good UIs and multi cluster management tools to give our operations teams good visibility into our cluster management.
|
||||
In this section we are going to take a look at Rancher, so far everything we have done has been in the cli and using kubectl but we have a few really good UIs and multi cluster management tools to give our operations teams good visibility into our cluster management.
|
||||
|
||||
Rancher is according to their [site](https://rancher.com/)
|
||||
|
||||
*Rancher is a complete software stack for teams adopting containers. It addresses the operational and security challenges of managing multiple Kubernetes clusters across any infrastructure, while providing DevOps teams with integrated tools for running containerized workloads.*
|
||||
> Rancher is a complete software stack for teams adopting containers. It addresses the operational and security challenges of managing multiple Kubernetes clusters across any infrastructure, while providing DevOps teams with integrated tools for running containerized workloads.
|
||||
|
||||
Rancher enables us to deploy production grade Kubernetes clusters from pretty much any location and then provides centralised authentication, access control and observability. I mentioned in a previous section that there is almost an overwhelming choice when it comes to Kubernetes and where you should or could run them, looking at Rancher it really doesn't matter where they are.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Kubernetes Application Deployment - Day 54'
|
||||
title: "#90DaysOfDevOps - Kubernetes Application Deployment - Day 54"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Kubernetes Application Deployment
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
@ -7,6 +7,7 @@ cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048764
|
||||
---
|
||||
|
||||
## Kubernetes Application Deployment
|
||||
|
||||
Now we finally get to actually deploying some applications into our clusters, some would say this is the reason Kubernetes exists, for Application delivery.
|
||||
@ -31,7 +32,7 @@ In the first demo we want to define everything we do with YAML, we could have a
|
||||
|
||||
We could create the following as one YAML file or we could break this down for each aspect of our application, i.e this could be separate files for namespace, deployment and service creation but in this file below we separate these by using `---` in one file. You can find this file located [here](Kubernetes) (File name:- nginx-stateless-demo.yaml)
|
||||
|
||||
```
|
||||
```Yaml
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
@ -74,6 +75,7 @@ spec:
|
||||
port: 80
|
||||
targetPort: 80
|
||||
```
|
||||
|
||||
### Checking our cluster
|
||||
|
||||
Before we deploy anything we should just make sure that we have no existing namespaces called `nginx` we can do this by running the `kubectl get namespace` command and as you can see below we do not have a namespace called `nginx`
|
||||
@ -128,7 +130,6 @@ We can equally use this method to scale our application down back to 1 again if
|
||||
|
||||
Hopefully here you can see the use case not only are things super fast to spin up and down but we have the ability to quickly scale up and down our applications. If this was a web server we could scale up during busy times and down when load is quiet.
|
||||
|
||||
|
||||
### Exposing our app
|
||||
|
||||
But how do we access our web server?
|
||||
@ -183,7 +184,7 @@ It is super simple to get Helm up and running or installed. Simply. You can find
|
||||
|
||||
Or you can use an installer script, the benefit here is that the latest version of the helm will be downloaded and installed.
|
||||
|
||||
```
|
||||
```Shell
|
||||
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
|
||||
|
||||
chmod 700 get_helm.sh
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - State and Ingress in Kubernetes - Day 55'
|
||||
title: "#90DaysOfDevOps - State and Ingress in Kubernetes - Day 55"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - State and Ingress in Kubernetes
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
@ -7,7 +7,9 @@ cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048779
|
||||
---
|
||||
|
||||
## State and Ingress in Kubernetes
|
||||
|
||||
In this closing section of Kubernetes, we are going to take a look at State and ingress.
|
||||
|
||||
Everything we have said so far is about stateless, stateless is really where our applications do not care which network it is using and does not need any permanent storage. Whereas stateful apps, databases for example for such an application to function correctly, you’ll need to ensure that pods can reach each other through a unique identity that does not change (hostnames, IPs...etc.). Examples of stateful applications include MySQL clusters, Redis, Kafka, MongoDB and others. Basically though any application that stores data.
|
||||
@ -37,20 +39,20 @@ Each pod in a StatefulSet would have access to its own persistent volume and rep
|
||||
|
||||
TLDR; StatefulSets vs Deployments
|
||||
|
||||
- Predicatable pod name = `mongo-0`
|
||||
- Predictable pod name = `mongo-0`
|
||||
- Fixed individual DNS name
|
||||
- Pod Identity - Retain State, Retain Role
|
||||
- Replicating stateful apps is complex
|
||||
- There are lots of things you must do:
|
||||
- Configure cloning and data synchronisation.
|
||||
- Make remote shared storage available.
|
||||
- Management & backup
|
||||
- Configure cloning and data synchronisation.
|
||||
- Make remote shared storage available.
|
||||
- Management & backup
|
||||
|
||||
### Persistant Volumes | Claims | StorageClass
|
||||
|
||||
How to persist data in Kubernetes?
|
||||
|
||||
We mentioned above when we have a stateful application, we have to store the state somewhere and this is where the need for a volume comes in, out of the box Kubernetes does not provide persistance out of the box.
|
||||
We mentioned above when we have a stateful application, we have to store the state somewhere and this is where the need for a volume comes in, out of the box Kubernetes does not provide persistence out of the box.
|
||||
|
||||
We require a storage layer that does not depend on the pod lifecycle. This storage should be available and accessible from all of our Kubernetes nodes. The storage should also be outside of the Kubernetes cluster to be able to survive even if the Kubernetes cluster crashes.
|
||||
|
||||
@ -83,6 +85,7 @@ PVCs are created by the user or application developer
|
||||
We also have two other types of volumes that we will not get into detail on but worth mentioning:
|
||||
|
||||
### ConfigMaps | Secrets
|
||||
|
||||
- Configuration file for your pod.
|
||||
- Certificate file for your pod.
|
||||
|
||||
@ -95,7 +98,6 @@ We also have two other types of volumes that we will not get into detail on but
|
||||
- Abstracts underlying storage provider
|
||||
- Define parameters for that storage
|
||||
|
||||
|
||||
### Walkthrough time
|
||||
|
||||
In the session yesterday we walked through creating a stateless application, here we want to do the same but we want to use our minikube cluster to deploy a stateful workload.
|
||||
@ -148,7 +150,7 @@ We also have our persistent volume and persistent volume claim by running `kubec
|
||||
|
||||
Because we are using Minikube as mentioned in the stateless application we have a few hurdles to get over when it comes to accessing our application, If however we had access to ingress or a load balancer within our cluster the service is set up to automatically get an IP from that to gain access externally. (you can see this above in the image of all components in the pacman namespace).
|
||||
|
||||
For this demo we are going to use the port forward method to access our application. By opening a new terminal and running the following `kubectl port-forward svc/pacman 9090:80 -n pacman` command, opening a browser we will now have access to our application. If you are running this in AWS or specific locations then this will also report on the cloud and zone as well as the host which equals your pod within Kubernetes, again you can look back and see this pod name in our screenshots above.
|
||||
For this demo we are going to use the port forward method to access our application. By opening a new terminal and running the following `kubectl port-forward svc/pacman 9090:80 -n pacman` command, opening a browser we will now have access to our application. If you are running this in AWS or specific locations then this will also report on the cloud and zone as well as the host which equals your pod within Kubernetes, again you can look back and see this pod name in our screenshots above.
|
||||
|
||||

|
||||
|
||||
@ -168,8 +170,8 @@ With the deployment we can scale this up using the commands that we covered in t
|
||||
|
||||

|
||||
|
||||
|
||||
### Ingress explained
|
||||
|
||||
Before we wrap things up with Kubernetes I also wanted to touch on a huge aspect of Kubernetes and that is ingress.
|
||||
|
||||
### What is ingress?
|
||||
@ -183,6 +185,7 @@ Ingress gives us a better way of exposing our applications, this allows us to de
|
||||
For ingress we would create a forward request to the internal service of our application.
|
||||
|
||||
### When do you need ingress?
|
||||
|
||||
If you are using a cloud provider, a managed Kubernetes offering they most likely will have their own ingress option for your cluster or they provide you with their own load balancer option. You don't have to implement this yourself, one of the benefits of managed Kubernetes.
|
||||
|
||||
If you are running your own cluster then you will need to configure an entrypoint.
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - The Big Picture: IaC - Day 56'
|
||||
title: "#90DaysOfDevOps - The Big Picture: IaC - Day 56"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - The Big Picture IaC
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
@ -7,6 +7,7 @@ cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048709
|
||||
---
|
||||
|
||||
## The Big Picture: IaC
|
||||
|
||||
Humans make mistakes! Automation is the way to go!
|
||||
@ -58,6 +59,7 @@ With Infrastructure as Code we have the ability to automate all these tasks end
|
||||
This can be used in almost all platforms, virtualisation, cloud based workloads and also cloud-native infrastructure such as Kubernetes and containers.
|
||||
|
||||
### Infrastructure Provisioning
|
||||
|
||||
Not all IaC cover all of the below, You will find that the tool we are going to be using during this section only really covers the the first 2 areas of below; Terraform is that tool we will be covering and this allows us to start from nothing and define in code what our infrastructure should look like and then deploy that, it will also enable us to manage that infrastructure and also initially deploy an application but at that point it is going to lose track of the application which is where the next section comes in and something like Ansible as a configuration management tool might work better on that front.
|
||||
|
||||
Without jumping ahead tools like chef, puppet and ansible are best suited to deal with the initial application setup and then to manage those applications and their configuration.
|
||||
@ -86,20 +88,24 @@ Initial installation & configuration of software
|
||||
Declarative vs procedural
|
||||
|
||||
Procedural
|
||||
|
||||
- Step by step instruction
|
||||
- Create a server > Add a server > Make this change
|
||||
|
||||
Declartive
|
||||
Declarative
|
||||
|
||||
- declare end result
|
||||
- 2 Servers
|
||||
|
||||
Mutable (pets) vs Immutable (cattle)
|
||||
|
||||
Mutable
|
||||
|
||||
- Change instead of replace
|
||||
- Generally long lived
|
||||
|
||||
Immutable
|
||||
|
||||
- Replace instead of change
|
||||
- Possibly short lived
|
||||
|
||||
@ -110,15 +116,16 @@ We are going to be mostly using terraform and getting hands on as this is the be
|
||||
Next up we will start looking into Terraform with a 101 before we get some hands on get using.
|
||||
|
||||
## Resources
|
||||
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
- [KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!](https://www.youtube.com/watch?v=YcJ9IeukJL8&list=WL&index=16&t=11s)
|
||||
- [KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!](https://www.youtube.com/watch?v=YcJ9IeukJL8&list=WL&index=16&t=11s)
|
||||
- [Terraform Simple Projects](https://terraform.joshuajebaraj.com/)
|
||||
- [Terraform Tutorial - The Best Project Ideas](https://www.youtube.com/watch?v=oA-pPa0vfks)
|
||||
- [Awesome Terraform](https://github.com/shuaibiyy/awesome-terraform)
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - An intro to Terraform - Day 57'
|
||||
title: "#90DaysOfDevOps - An intro to Terraform - Day 57"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - An intro to Terraform
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048710
|
||||
---
|
||||
|
||||
## An intro to Terraform
|
||||
|
||||
"Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently"
|
||||
@ -39,8 +40,7 @@ We are going to cover the high level here but for more details and loads of reso
|
||||
|
||||
### Write
|
||||
|
||||
Terraform allows us to create declaritive configuration files that will build our environments. The files are written using the HashiCorp Configuration Language (HCL) which allows for concise descriptions of resources using blocks, arguments, and expressions. We will of course be looking into these in detail in deploying VMs, Containers and within Kubernetes.
|
||||
|
||||
Terraform allows us to create declarative configuration files that will build our environments. The files are written using the HashiCorp Configuration Language (HCL) which allows for concise descriptions of resources using blocks, arguments, and expressions. We will of course be looking into these in detail in deploying VMs, Containers and within Kubernetes.
|
||||
|
||||
### Plan
|
||||
|
||||
@ -52,9 +52,7 @@ Obviously once you are happy you can go ahead and apply this configuration to th
|
||||
|
||||
Another thing to mention is that there are also modules available, and this is similar to container images in that these modules have been created and shared in public so you do not have to create it again and again just re use the best practice of deploying a specific infrastructure resource the same way everywhere. You can find the modules available [here](https://registry.terraform.io/browse/modules)
|
||||
|
||||
|
||||
The Terraform workflow looks like this: (*taken from the terraform site*)
|
||||
|
||||
The Terraform workflow looks like this: (_taken from the terraform site_)
|
||||
|
||||

|
||||
|
||||
@ -68,7 +66,6 @@ During this challenge we have used Vagrant which happens to be another Hashicorp
|
||||
|
||||
A great comparison of the two tools can be found here on the official [Hashicorp site](https://www.vagrantup.com/intro/vs/terraform)
|
||||
|
||||
|
||||
## Terraform Installation
|
||||
|
||||
There is really not much to the installation of Terraform.
|
||||
@ -77,7 +74,6 @@ Terraform is cross platform and you can see below on my Linux machine we have se
|
||||
|
||||

|
||||
|
||||
|
||||
Using `arkade` to install Terraform, arkade is a handy little tool for getting your required tools, apps and clis onto your system. A simple `arkade get terraform` will allow for an update of terraform if available or this same command will also install the Terraform CLI
|
||||
|
||||

|
||||
@ -85,15 +81,16 @@ Using `arkade` to install Terraform, arkade is a handy little tool for getting y
|
||||
We are going to get into more around HCL and then also start using Terraform to create some infrastructure resources in various different platforms.
|
||||
|
||||
## Resources
|
||||
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
- [KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!](https://www.youtube.com/watch?v=YcJ9IeukJL8&list=WL&index=16&t=11s)
|
||||
- [KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!](https://www.youtube.com/watch?v=YcJ9IeukJL8&list=WL&index=16&t=11s)
|
||||
- [Terraform Simple Projects](https://terraform.joshuajebaraj.com/)
|
||||
- [Terraform Tutorial - The Best Project Ideas](https://www.youtube.com/watch?v=oA-pPa0vfks)
|
||||
- [Awesome Terraform](https://github.com/shuaibiyy/awesome-terraform)
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - HashiCorp Configuration Language (HCL) - Day 58'
|
||||
title: "#90DaysOfDevOps - HashiCorp Configuration Language (HCL) - Day 58"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - HashiCorp Configuration Language (HCL)
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
@ -7,6 +7,7 @@ cover_image: null
|
||||
canonical_url: null
|
||||
id: 1048741
|
||||
---
|
||||
|
||||
## HashiCorp Configuration Language (HCL)
|
||||
|
||||
Before we start making stuff with Terraform we have to dive a little into HashiCorp Configuration Language (HCL). So far during our challenge we have looked at a few different scripting and programming languages and here is another one. We touched on the [Go programming language](day07.md) then [bash scripts](day19.md) we even touched on a little python when it came to [network automation](day27.md)
|
||||
@ -23,7 +24,6 @@ There are two important aspects to Terraform, we have the code which we are goin
|
||||
|
||||
Let's take a look at a Terraform `.tf` file to see how they are made up. The first example we will walk through will in fact be code to deploy resources to AWS, this would then also require the AWS CLI to be installed on your system and configured for your account.
|
||||
|
||||
|
||||
### Providers
|
||||
|
||||
At the top of our `.tf` file structure, generally called `main.tf` at least until we make things more complex. Here we will define the providers that we have mentioned before. Our source of the aws provider as you can see is `hashicorp/aws` this means the provider is maintained or has been published by hashicorp themselves. By default you will reference providers that are available from the [Terraform Registry](https://registry.terraform.io/), you also have the ability to write your own providers, and use these locally, or self-publish to the Terraform Registry.
|
||||
@ -38,6 +38,7 @@ terraform {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
We might also add in a region as well here to determine which AWS region we would like to provision to we can do this by adding the following:
|
||||
|
||||
```
|
||||
@ -46,15 +47,14 @@ provider "aws" {
|
||||
}
|
||||
```
|
||||
|
||||
### Resources
|
||||
### Terraform Resources
|
||||
|
||||
- Another important component of a terraform config file which describes one or more infrastructure objects like EC2, Load Balancer, VPC, etc.
|
||||
|
||||
- A resource block declares a resource of a given type ("aws_instance") with a given local name ("90daysofdevops").
|
||||
- A resource block declares a resource of a given type ("aws_instance") with a given local name ("90daysofdevops").
|
||||
|
||||
- The resource type and name together serve as an identifier for a given resource.
|
||||
|
||||
|
||||
```
|
||||
resource "aws_instance" "90daysofdevops" {
|
||||
ami = data.aws_ami.instance_id.id
|
||||
@ -123,6 +123,7 @@ resource "aws_instance" "90daysofdevops" {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The above code will go and deploy a very simple web server as an ec2 instance in AWS, the great thing about this and any other configuration like this is that we can repeat this and we will get the same output every single time. Other than the chance that I have messed up the code there is no human interaction with the above.
|
||||
|
||||
We can take a look at a super simple example, one that you will likely never use but let's humour it anyway. Like with all good scripting and programming language we should start with a hello-world scenario.
|
||||
@ -140,6 +141,7 @@ output "hello_world" {
|
||||
value = "Hello, 90DaysOfDevOps from Terraform"
|
||||
}
|
||||
```
|
||||
|
||||
You will find this file in the IAC folder under hello-world, but out of the box this is not going to simply work there are some commans we need to run in order to use our terraform code.
|
||||
|
||||
In your terminal navigate to your folder where the main.tf has been created, this could be from this repository or you could create a new one using the code above.
|
||||
@ -199,7 +201,7 @@ The pros for storing state in a remote location is that we get:
|
||||
- Automation
|
||||
- However it could bring increase complexity
|
||||
|
||||
```
|
||||
```JSON
|
||||
{
|
||||
"version": 4,
|
||||
"terraform_version": "1.1.6",
|
||||
@ -215,17 +217,17 @@ The pros for storing state in a remote location is that we get:
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Resources
|
||||
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
- [KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!](https://www.youtube.com/watch?v=YcJ9IeukJL8&list=WL&index=16&t=11s)
|
||||
- [KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!](https://www.youtube.com/watch?v=YcJ9IeukJL8&list=WL&index=16&t=11s)
|
||||
- [Terraform Simple Projects](https://terraform.joshuajebaraj.com/)
|
||||
- [Terraform Tutorial - The Best Project Ideas](https://www.youtube.com/watch?v=oA-pPa0vfks)
|
||||
- [Awesome Terraform](https://github.com/shuaibiyy/awesome-terraform)
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
title: '#90DaysOfDevOps - Create a VM with Terraform & Variables - Day 59'
|
||||
title: "#90DaysOfDevOps - Create a VM with Terraform & Variables - Day 59"
|
||||
published: false
|
||||
description: 90DaysOfDevOps - Create a VM with Terraform & Variables
|
||||
tags: 'devops, 90daysofdevops, learning'
|
||||
tags: "devops, 90daysofdevops, learning"
|
||||
cover_image: null
|
||||
canonical_url: null
|
||||
id: 1049051
|
||||
---
|
||||
|
||||
## Create a VM with Terraform & Variables
|
||||
|
||||
In this session we are going to be creating a VM or two VMs using terraform inside VirtualBox. This is not the normal, VirtualBox is a workstation virtualisation option and really this would not be a use case for Terraform but I am currently 36,000ft in the air and as much as I have deployed public cloud resources this high in the clouds it is much faster to do this locally on my laptop.
|
||||
@ -58,7 +59,6 @@ Now that we have our code defined we can now perform the `terraform init` on our
|
||||
|
||||

|
||||
|
||||
|
||||
Obviously you will also need to have virtualbox installed on your system as well. We can then next run `terraform plan` to see what our code will create for us. Followed by `terraform apply` the below image shows your completed process.
|
||||
|
||||

|
||||
@ -95,7 +95,7 @@ But there are many other variables that we can use here as well, there are also
|
||||
|
||||
- My preference is to use a terraform.tfvars file in our project folder.
|
||||
|
||||
- There is an *auto.tfvars file option
|
||||
- There is an \*auto.tfvars file option
|
||||
|
||||
- or we can define when we run the `terraform plan` or `terraform apply` with the `-var` or `-var-file`.
|
||||
|
||||
@ -113,15 +113,16 @@ variable "some resource" {
|
||||
```
|
||||
|
||||
## Resources
|
||||
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
- [KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!](https://www.youtube.com/watch?v=YcJ9IeukJL8&list=WL&index=16&t=11s)
|
||||
- [KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!](https://www.youtube.com/watch?v=YcJ9IeukJL8&list=WL&index=16&t=11s)
|
||||
- [Terraform Simple Projects](https://terraform.joshuajebaraj.com/)
|
||||
- [Terraform Tutorial - The Best Project Ideas](https://www.youtube.com/watch?v=oA-pPa0vfks)
|
||||
- [Awesome Terraform](https://github.com/shuaibiyy/awesome-terraform)
|
||||
|
@ -91,7 +91,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich
|
||||
### Kubernetes
|
||||
|
||||
- [✔️] ☸ 49 > [The Big Picture: Kubernetes](Days/day49.md)
|
||||
- [✔️] ☸ 50 > [Choosing your Kubernetes platform ](Days/day50.md)
|
||||
- [✔️] ☸ 50 > [Choosing your Kubernetes platform](Days/day50.md)
|
||||
- [✔️] ☸ 51 > [Deploying your first Kubernetes Cluster](Days/day51.md)
|
||||
- [✔️] ☸ 52 > [Setting up a multinode Kubernetes Cluster](Days/day52.md)
|
||||
- [✔️] ☸ 53 > [Rancher Overview - Hands On](Days/day53.md)
|
||||
@ -101,7 +101,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich
|
||||
### Learn Infrastructure as Code
|
||||
|
||||
- [✔️] 🤖 56 > [The Big Picture: IaC](Days/day56.md)
|
||||
- [✔️] 🤖 57 > [An intro to Terraform ](Days/day57.md)
|
||||
- [✔️] 🤖 57 > [An intro to Terraform](Days/day57.md)
|
||||
- [✔️] 🤖 58 > [HashiCorp Configuration Language (HCL)](Days/day58.md)
|
||||
- [✔️] 🤖 59 > [Create a VM with Terraform & Variables](Days/day59.md)
|
||||
- [✔️] 🤖 60 > [Docker Containers, Provisioners & Modules](Days/day60.md)
|
||||
|
@ -61,7 +61,7 @@ DevOpsエンジニアとして、あなたはアプリケーションをプロ
|
||||
- [What is DevOps? - TechWorld with Nana](https://www.youtube.com/watch?v=0yWAtQ6wYNM)
|
||||
- [What is DevOps? - GitHub YouTube](https://www.youtube.com/watch?v=kBV8gPVZNEE)
|
||||
- [What is DevOps? - IBM YouTube](https://www.youtube.com/watch?v=UbtB4sMaaNM)
|
||||
- [What is DevOps? - AWS ](https://aws.amazon.com/devops/what-is-devops/)
|
||||
- [What is DevOps? - AWS](https://aws.amazon.com/devops/what-is-devops/)
|
||||
- [What is DevOps? - Microsoft](https://docs.microsoft.com/en-us/devops/what-is-devops)
|
||||
|
||||
ここまで来れば、ここが自分の望むところかどうかが分かるはずです。それでは、[3日目](day03.md)でお会いしましょう。
|
@ -77,7 +77,7 @@ CIリリースが成功した場合 = 継続的デプロイメント = デプロ
|
||||
### リソース:
|
||||
|
||||
- [DevOps for Developers – Software or DevOps Engineer?](https://www.youtube.com/watch?v=a0-uE3rOyeU)
|
||||
- [Techworld with Nana -DevOps Roadmap 2022 - How to become a DevOps Engineer? What is DevOps? ](https://www.youtube.com/watch?v=9pZ2xmsSDdo&t=125s)
|
||||
- [Techworld with Nana -DevOps Roadmap 2022 - How to become a DevOps Engineer? What is DevOps?](https://www.youtube.com/watch?v=9pZ2xmsSDdo&t=125s)
|
||||
- [How to become a DevOps Engineer in 2021 - DevOps Roadmap](https://www.youtube.com/watch?v=5pxbp6FyTfk)
|
||||
|
||||
ここまで来れば、ここが自分の居場所かどうかが分かるはずです。
|
||||
|
@ -112,9 +112,9 @@ Next up we will start looking into Terraform with a 101 before we get some hands
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -87,9 +87,9 @@ We are going to get into more around HCL and then also start using Terraform to
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -219,9 +219,9 @@ The pros for storing state in a remote location is that we get:
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -115,9 +115,9 @@ variable "some resource" {
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -179,9 +179,9 @@ We are breaking down our infrastructure into components, components are known he
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -153,9 +153,9 @@ Cons
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -94,9 +94,9 @@ This wraps up the Infrastructure as code section and next we move on to that lit
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -61,7 +61,7 @@ My advice is to watch all of the below and hopefully you also picked something u
|
||||
- [What is DevOps? - TechWorld with Nana](https://www.youtube.com/watch?v=0yWAtQ6wYNM)
|
||||
- [What is DevOps? - GitHub YouTube](https://www.youtube.com/watch?v=kBV8gPVZNEE)
|
||||
- [What is DevOps? - IBM YouTube](https://www.youtube.com/watch?v=UbtB4sMaaNM)
|
||||
- [What is DevOps? - AWS ](https://aws.amazon.com/devops/what-is-devops/)
|
||||
- [What is DevOps? - AWS](https://aws.amazon.com/devops/what-is-devops/)
|
||||
- [What is DevOps? - Microsoft](https://docs.microsoft.com/en-us/devops/what-is-devops)
|
||||
|
||||
If you made it this far then you will know if this is where you want to be or not. See you on [Day 3](day03.md).
|
||||
|
@ -77,7 +77,7 @@ This last bit was a bit of a recap for me on Day 3 but think this actually makes
|
||||
### Resources:
|
||||
|
||||
- [DevOps for Developers – Software or DevOps Engineer?](https://www.youtube.com/watch?v=a0-uE3rOyeU)
|
||||
- [Techworld with Nana -DevOps Roadmap 2022 - How to become a DevOps Engineer? What is DevOps? ](https://www.youtube.com/watch?v=9pZ2xmsSDdo&t=125s)
|
||||
- [Techworld with Nana -DevOps Roadmap 2022 - How to become a DevOps Engineer? What is DevOps?](https://www.youtube.com/watch?v=9pZ2xmsSDdo&t=125s)
|
||||
- [How to become a DevOps Engineer in 2021 - DevOps Roadmap](https://www.youtube.com/watch?v=5pxbp6FyTfk)
|
||||
|
||||
If you made it this far then you will know if this is where you want to be or not.
|
||||
|
@ -112,9 +112,9 @@ Next up we will start looking into Terraform with a 101 before we get some hands
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -86,9 +86,9 @@ We are going to get into more around HCL and then also start using Terraform to
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -219,9 +219,9 @@ The pros for storing state in a remote location is that we get:
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -115,9 +115,9 @@ variable "some resource" {
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -179,9 +179,9 @@ We are breaking down our infrastructure into components, components are known he
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -153,9 +153,9 @@ Cons
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -94,9 +94,9 @@ This wraps up the Infrastructure as code section and next we move on to that lit
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -62,7 +62,7 @@ My advice is to watch all of the below and hopefully you also picked something u
|
||||
- [What is DevOps? - TechWorld with Nana](https://www.youtube.com/watch?v=0yWAtQ6wYNM)
|
||||
- [What is DevOps? - GitHub YouTube](https://www.youtube.com/watch?v=kBV8gPVZNEE)
|
||||
- [What is DevOps? - IBM YouTube](https://www.youtube.com/watch?v=UbtB4sMaaNM)
|
||||
- [What is DevOps? - AWS ](https://aws.amazon.com/devops/what-is-devops/)
|
||||
- [What is DevOps? - AWS](https://aws.amazon.com/devops/what-is-devops/)
|
||||
- [What is DevOps? - Microsoft](https://docs.microsoft.com/en-us/devops/what-is-devops)
|
||||
|
||||
If you made it this far then you will know if this is where you want to be or not. See you on [Day 3](day03.md).
|
||||
|
@ -77,7 +77,7 @@ This last bit was a bit of a recap for me on Day 3 but think this actually makes
|
||||
### Resources:
|
||||
|
||||
- [DevOps for Developers – Software or DevOps Engineer?](https://www.youtube.com/watch?v=a0-uE3rOyeU)
|
||||
- [Techworld with Nana -DevOps Roadmap 2022 - How to become a DevOps Engineer? What is DevOps? ](https://www.youtube.com/watch?v=9pZ2xmsSDdo&t=125s)
|
||||
- [Techworld with Nana -DevOps Roadmap 2022 - How to become a DevOps Engineer? What is DevOps?](https://www.youtube.com/watch?v=9pZ2xmsSDdo&t=125s)
|
||||
- [How to become a DevOps Engineer in 2021 - DevOps Roadmap](https://www.youtube.com/watch?v=5pxbp6FyTfk)
|
||||
|
||||
If you made it this far then you will know if this is where you want to be or not.
|
||||
|
@ -112,9 +112,9 @@ Next up we will start looking into Terraform with a 101 before we get some hands
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -87,9 +87,9 @@ We are going to get into more around HCL and then also start using Terraform to
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -219,9 +219,9 @@ The pros for storing state in a remote location is that we get:
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -115,9 +115,9 @@ variable "some resource" {
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -179,9 +179,9 @@ We are breaking down our infrastructure into components, components are known he
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -153,9 +153,9 @@ Cons
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
@ -94,9 +94,9 @@ This wraps up the Infrastructure as code section and next we move on to that lit
|
||||
## Resources
|
||||
I have listed a lot of resources down below and I think this topic has been covered so many times out there, If you have additional resources be sure to raise a PR with your resources and I will be happy to review and add them to the list.
|
||||
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools ](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
|
||||
- [Terraform Tutorial | Terraform Course Overview 2021](https://www.youtube.com/watch?v=m3cKkYXl-8o)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners ](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform explained in 15 mins | Terraform Tutorial for Beginners](https://www.youtube.com/watch?v=l5k1ai_GBDE)
|
||||
- [Terraform Course - From BEGINNER to PRO!](https://www.youtube.com/watch?v=7xngnjfIlK4&list=WL&index=141&t=16s)
|
||||
- [HashiCorp Terraform Associate Certification Course](https://www.youtube.com/watch?v=V4waklkBC38&list=WL&index=55&t=111s)
|
||||
- [Terraform Full Course for Beginners](https://www.youtube.com/watch?v=EJ3N-hhiWv0&list=WL&index=39&t=27s)
|
||||
|
Loading…
Reference in New Issue
Block a user