Add DevOps Projects (#6772)
* add astro cicd project * add link to github pages docs * add docker webserver project * Apply suggestions from code review * add basic iac with terraform project * add monitoring stack project * Apply suggestions from code review change from Astro to simple HTML file * Update src/data/projects/basic-github-actions.md remove newlinepull/6985/head
parent
b361840742
commit
73597724a0
4 changed files with 174 additions and 0 deletions
@ -0,0 +1,36 @@ |
|||||||
|
--- |
||||||
|
title: 'Github Actions Workflow' |
||||||
|
description: 'Write GitHub Actions workflow to deploy a simple GitHub Pages site.' |
||||||
|
isNew: true |
||||||
|
sort: 3 |
||||||
|
difficulty: 'beginner' |
||||||
|
nature: 'CI/CD' |
||||||
|
skills: |
||||||
|
- 'devops' |
||||||
|
- 'github actions' |
||||||
|
- 'ci/cd' |
||||||
|
seo: |
||||||
|
title: 'Github Actions Workflow' |
||||||
|
description: 'Write GitHub Actions workflow to deploy a simple GitHub Pages site.' |
||||||
|
keywords: |
||||||
|
- 'basic ci/cd' |
||||||
|
- 'devops' |
||||||
|
- 'devops projects' |
||||||
|
roadmapIds: |
||||||
|
- 'git-github' |
||||||
|
- 'devops' |
||||||
|
--- |
||||||
|
|
||||||
|
In this project, you will write a basic HTML file and setup a GitHub Actions workflow to test, build & deploy it to GitHub Pages. |
||||||
|
|
||||||
|
## Requirements |
||||||
|
|
||||||
|
- Create a simple HTML file (the content is up to you) |
||||||
|
- Create a GitHub Actions workflow that will test, build & deploy the website to [GitHub Pages](https://pages.github.com/). |
||||||
|
- Failures in the workflow should be clearly indicated and failures will halt the workflow |
||||||
|
- The workflow should be in the `.github/workflows` directory |
||||||
|
- The workflow file should be named `main.yml` |
||||||
|
|
||||||
|
<hr /> |
||||||
|
|
||||||
|
If you are looking to build a more advanced version of this project, you can either create a more advanced Astro website or you can build a more advanced GitHub Actions workflow. |
@ -0,0 +1,42 @@ |
|||||||
|
--- |
||||||
|
title: 'Basic Infrastructure as Code with Terraform' |
||||||
|
description: 'Provision a simple cloud infrastructure using Terraform' |
||||||
|
isNew: false |
||||||
|
sort: 4 |
||||||
|
difficulty: 'beginner' |
||||||
|
nature: 'CLI' |
||||||
|
skills: |
||||||
|
- 'terraform' |
||||||
|
- 'devops' |
||||||
|
- 'iac' |
||||||
|
- 'cloud' |
||||||
|
seo: |
||||||
|
title: 'Basic Infrastructure as Code with Terraform' |
||||||
|
description: 'Learn to provision cloud resources using Terraform' |
||||||
|
keywords: |
||||||
|
- 'terraform' |
||||||
|
- 'infrastructure as code' |
||||||
|
- 'cloud provisioning' |
||||||
|
- 'devops' |
||||||
|
roadmapIds: |
||||||
|
- 'devops' |
||||||
|
- 'terraform' |
||||||
|
- 'aws' |
||||||
|
--- |
||||||
|
|
||||||
|
In this project, you will use Terraform to provision a virtual machine in AWS. |
||||||
|
|
||||||
|
## Requirements |
||||||
|
|
||||||
|
- Install Terraform on your local machine. |
||||||
|
- Set up an account with a AWS and obtain necessary credentials. |
||||||
|
- Create a `main.tf` file in the root directory of your project. |
||||||
|
- Write Terraform configuration to provision a basic resource (e.g., an EC2 instance on AWS or a VM on Azure). |
||||||
|
- Use Terraform commands to initialize, plan, apply, and destroy your infrastructure. |
||||||
|
- The provisioned resource should be accessible and verifiable in your cloud provider's console. |
||||||
|
|
||||||
|
You can learn more about Terraform basics [here](https://learn.hashicorp.com/terraform). |
||||||
|
|
||||||
|
<hr /> |
||||||
|
|
||||||
|
For a more advanced version of this project, consider adding multiple resources, using variables and outputs, or implementing a modular structure for your Terraform configuration. |
@ -0,0 +1,39 @@ |
|||||||
|
--- |
||||||
|
title: 'Docker Web Server' |
||||||
|
description: 'Create a Web Server using Docker & NGINX' |
||||||
|
isNew: false |
||||||
|
sort: 3 |
||||||
|
difficulty: 'beginner' |
||||||
|
nature: 'CLI' |
||||||
|
skills: |
||||||
|
- 'docker' |
||||||
|
- 'devops' |
||||||
|
- 'nginx' |
||||||
|
- 'web' |
||||||
|
seo: |
||||||
|
title: 'Docker Web Server' |
||||||
|
description: 'Create a Web Server using Docker & NGINX' |
||||||
|
keywords: |
||||||
|
- 'docker web server' |
||||||
|
- 'docker' |
||||||
|
- 'system administration' |
||||||
|
- 'web server' |
||||||
|
roadmapIds: |
||||||
|
- 'devops' |
||||||
|
- 'docker' |
||||||
|
--- |
||||||
|
|
||||||
|
In this project, you will create an NGINX web server that will serve a simple HTML page using Docker. |
||||||
|
|
||||||
|
## Requirements |
||||||
|
|
||||||
|
- The Dockerfile should be named `Dockerfile`. |
||||||
|
- The Dockerfile should be in the root directory of the project. |
||||||
|
- The build process will add a local HTML file to the container, which will be accessible to NGINX. |
||||||
|
- The simple HTML page will be accessible to you from `localhost:8080` |
||||||
|
|
||||||
|
You can learn more about writing a Dockerfile [here](https://docs.docker.com/engine/reference/builder/). |
||||||
|
|
||||||
|
<hr /> |
||||||
|
|
||||||
|
If you are looking to build a more advanced version of this project, you can consider using the `alpine:latest` image and setting up NGINX yourself rather than using the official NGINX image. |
@ -0,0 +1,57 @@ |
|||||||
|
--- |
||||||
|
title: 'Local Monitoring System with Docker' |
||||||
|
description: 'Set up a local monitoring system using Docker with Grafana and Prometheus' |
||||||
|
isNew: false |
||||||
|
sort: 1 |
||||||
|
difficulty: 'intermediate' |
||||||
|
nature: 'CLI' |
||||||
|
skills: |
||||||
|
- 'docker' |
||||||
|
- 'devops' |
||||||
|
- 'monitoring' |
||||||
|
- 'grafana' |
||||||
|
- 'prometheus' |
||||||
|
seo: |
||||||
|
title: 'Local Monitoring System with Docker, Grafana, and Prometheus' |
||||||
|
description: 'Learn to set up a local monitoring system using Docker with Grafana and Prometheus' |
||||||
|
keywords: |
||||||
|
- 'docker' |
||||||
|
- 'monitoring' |
||||||
|
- 'grafana' |
||||||
|
- 'prometheus' |
||||||
|
- 'devops' |
||||||
|
roadmapIds: |
||||||
|
- 'devops' |
||||||
|
- 'docker' |
||||||
|
--- |
||||||
|
|
||||||
|
In this project, you will set up a local monitoring system using Docker, Grafana, and Prometheus. This setup will allow you to collect metrics and visualize them in a dashboard. |
||||||
|
|
||||||
|
## Requirements |
||||||
|
|
||||||
|
- Docker and Docker Compose installed on your local machine. |
||||||
|
- Create a `docker-compose.yml` file in the root directory of your project. |
||||||
|
- Set up Prometheus as the metrics collection system. |
||||||
|
- Configure Grafana as the visualization tool. |
||||||
|
- Create a simple dashboard in Grafana to display system metrics. |
||||||
|
- Add a sample application to monitor, such as a simple web server. |
||||||
|
|
||||||
|
Your `docker-compose.yml` file should define services for: |
||||||
|
1. Prometheus |
||||||
|
2. Grafana |
||||||
|
3. A sample application to monitor |
||||||
|
|
||||||
|
## Steps |
||||||
|
|
||||||
|
1. Create the `docker-compose.yml` file with services for Prometheus and Grafana. |
||||||
|
2. Configure Prometheus to scrape metrics (you'll need a `prometheus.yml` configuration file). |
||||||
|
3. Set up Grafana to use Prometheus as a data source. |
||||||
|
4. Create a simple dashboard in Grafana to display metrics. |
||||||
|
5. Use `docker-compose up` to start your monitoring stack. |
||||||
|
6. Access Grafana through your web browser and verify that metrics are being collected and displayed. |
||||||
|
|
||||||
|
You can learn more about Prometheus [here](https://prometheus.io/docs/introduction/overview/) and Grafana [here](https://grafana.com/docs/grafana/latest/). |
||||||
|
|
||||||
|
<hr /> |
||||||
|
|
||||||
|
For a more advanced version of this project, consider adding alerting rules in Prometheus, setting up additional exporters to collect more diverse metrics, or monitoring a multi-container application. |
Loading…
Reference in new issue