parent
63004475aa
commit
8f8cca4be3
4 changed files with 96 additions and 2 deletions
@ -0,0 +1,54 @@ |
||||
--- |
||||
title: 'Configuration Management' |
||||
description: 'Write an Ansible playbook to configure a Linux server.' |
||||
isNew: false |
||||
sort: 10 |
||||
difficulty: 'intermediate' |
||||
nature: 'Ansible' |
||||
skills: |
||||
- 'ansible' |
||||
- 'linux' |
||||
- 'devops' |
||||
seo: |
||||
title: 'Configuration Management' |
||||
description: 'Write an Ansible playbook to configure a Linux server.' |
||||
keywords: |
||||
- 'Configuration Management' |
||||
- 'Ansible' |
||||
- 'Linux' |
||||
roadmapIds: |
||||
- 'devops' |
||||
--- |
||||
|
||||
The goal of this project is to introduce you to the basics of configuration management using Ansible. You will write an Ansible playbook to configure a Linux server. |
||||
|
||||
## Requirements |
||||
|
||||
If you have been doing the previous projects, you should already have a Linux server running. If not, setup a Linux server on [DigitalOcean](https://m.do.co/c/b29aa8845df8), AWS or another cloud provider. |
||||
|
||||
You are required to write an Ansible playbook called `setup.yml` and create the following roles: |
||||
|
||||
- `base` — basic server setup (installs utilities, updates the server, installs `fail2ban`, etc.) |
||||
- `nginx` — installs and configures `nginx` |
||||
- `app` — uploads the given tarball of a static HTML website to the server and unzips it. |
||||
- `ssh` - adds the given public key to the server |
||||
|
||||
Set up the inventory file `inventory.ini` to include the server you are going to configure When you run the playbook, it should run the roles above in sequence. You should also assign proper tags to the roles so that you can run only specific roles. |
||||
|
||||
Example: |
||||
|
||||
```bash |
||||
# Run all the roles |
||||
ansible-playbook setup.yml |
||||
|
||||
# Run only the app role |
||||
ansible-playbook setup.yml --tags "app" |
||||
``` |
||||
|
||||
### Stretch goal |
||||
|
||||
Modify the `app` role to pull the repository from GitHub and deploy it. |
||||
|
||||
<hr /> |
||||
|
||||
Once you are done with the project, you should have a basic understanding of how Ansible works and how it can be used to manage server configuration. |
@ -0,0 +1,40 @@ |
||||
--- |
||||
title: 'IaC on DigitalOcean' |
||||
description: 'Write Terraform code to create a Droplet on DigitalOcean' |
||||
isNew: false |
||||
sort: 10 |
||||
difficulty: 'intermediate' |
||||
nature: 'Terraform' |
||||
skills: |
||||
- 'terraform' |
||||
- 'linux' |
||||
- 'devops' |
||||
seo: |
||||
title: 'IaC on DigitalOcean' |
||||
description: 'Write Terraform code to create a Droplet on DigitalOcean' |
||||
keywords: |
||||
- 'IaC' |
||||
- 'Terraform' |
||||
- 'DigitalOcean' |
||||
roadmapIds: |
||||
- 'devops' |
||||
--- |
||||
|
||||
The goal of this project is to introduce you to the basics of IaC using Terraform. You will create a DigitalOcean Droplet and configure it using Terraform. |
||||
|
||||
## Requirements |
||||
|
||||
If you have been doing the previous projects, you should already have a Linux server running. If not, setup a Linux server on [DigitalOcean](https://m.do.co/c/b29aa8845df8), AWS or another cloud provider. |
||||
|
||||
You are required to write a Terraform script that will create a Droplet on DigitalOcean. The Droplet should have a public IP address, and SSH access. You should also be able to SSH into the Droplet using the private key. |
||||
|
||||
You can use [this guide from Digital Ocean](https://www.digitalocean.com/community/tutorials/how-to-use-terraform-with-digitalocean) and [Digital Ocean provider documentation](https://registry.terraform.io/providers/digitalocean/digitalocean/latest/docs) to get started. |
||||
|
||||
## Stretch goal |
||||
|
||||
Write Ansible playbook that will configure the server. You can use the same playbook from [the previous project](/projects/configuration-management). |
||||
|
||||
<hr /> |
||||
|
||||
Once you are done with the project, you should have a good understanding of setting up a basic infrastructure on DigitalOcean using Terraform and configuring it using Ansible. |
||||
|
Loading…
Reference in new issue