diff --git a/README.md b/README.md
index f06c3cb46..583db5502 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
:information_source: This repo contains questions and exercises on various technical topics, sometimes related to DevOps and SRE
-:bar_chart: There are currently **2376** exercises and questions
+:bar_chart: There are currently **2386** exercises and questions
:books: To learn more about DevOps and SRE, check the resources in [devops-resources](https://github.com/bregman-arie/devops-resources) repository
@@ -20,36 +20,36 @@
@@ -570,8 +570,8 @@ ISP (Internet Service Provider) is the local internet company provider.
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-|Fork 101|Fork|[Link](exercises/os/fork_101.md)|[Link](exercises/os/solutions/fork_101_solution.md)
-|Fork 102|Fork|[Link](exercises/os/fork_102.md)|[Link](exercises/os/solutions/fork_102_solution.md)
+|Fork 101|Fork|[Link](topics/os/fork_101.md)|[Link](topics/os/solutions/fork_101_solution.md)
+|Fork 102|Fork|[Link](topics/os/fork_102.md)|[Link](topics/os/solutions/fork_102_solution.md)
### Operating System - Self Assessment
@@ -2798,7 +2798,7 @@ as key-value pair, document-oriented, etc.
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Functions vs. Comparisons | Query Improvements | [Exercise](exercises/sql/improve_query.md) | [Solution](exercises/sql/solutions/improve_query.md)
+| Functions vs. Comparisons | Query Improvements | [Exercise](topics/sql/improve_query.md) | [Solution](topics/sql/solutions/improve_query.md)
### SQL Self Assessment
@@ -4157,7 +4157,7 @@ It's an architecture in which data is and retrieved from a single, non-shared, s
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Highly Available "Hello World" | [Exercise](exercises/devops/ha_hello_world.md) | [Solution](exercises/devops/solutions/ha_hello_world.md)
+| Highly Available "Hello World" | [Exercise](topics/devops/ha_hello_world.md) | [Solution](topics/devops/solutions/ha_hello_world.md)
What happens when you type in a URL in an address bar in a browser?
@@ -4202,6 +4202,14 @@ False. From [swagger.io](https://swagger.io/resources/articles/difference-betwee
"An API definition is similar to an API specification in that it provides an understanding of how an API is organized and how the API functions. But the API definition is aimed at machine consumption instead of human consumption of APIs."
+
+What is an API gateway?
+
+
+
+What are the advantages of using/implementing an API gateway?
+
+
What is a Payload in API?
@@ -4858,7 +4866,7 @@ Not only this will tell you what is expected from you, it will also provide big
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Message Board Tables | Relational DB Tables | [Exercise](exercises/databases/table_for_message_board_system.md) | [Solution](exercises/databases/solutions/table_for_message_board_system.md)
+| Message Board Tables | Relational DB Tables | [Exercise](topics/databases/table_for_message_board_system.md) | [Solution](topics/databases/solutions/table_for_message_board_system.md)
What is a relational database?
diff --git a/scripts/count_questions.sh b/scripts/count_questions.sh
index 909c2d142..1db56bc33 100755
--- a/scripts/count_questions.sh
+++ b/scripts/count_questions.sh
@@ -1,3 +1,3 @@
#!/usr/bin/env bash
-echo $(( $(grep -E "\[Exercise\]|" -c README.md exercises/*/README.md | awk -F: '{ s+=$2 } END { print s }' )))
+echo $(( $(grep -E "\[Exercise\]|" -c README.md topics/*/README.md | awk -F: '{ s+=$2 } END { print s }' )))
diff --git a/exercises/ansible/README.md b/topics/ansible/README.md
similarity index 100%
rename from exercises/ansible/README.md
rename to topics/ansible/README.md
diff --git a/exercises/ansible/my_first_playbook.md b/topics/ansible/my_first_playbook.md
similarity index 100%
rename from exercises/ansible/my_first_playbook.md
rename to topics/ansible/my_first_playbook.md
diff --git a/exercises/ansible/my_first_task.md b/topics/ansible/my_first_task.md
similarity index 100%
rename from exercises/ansible/my_first_task.md
rename to topics/ansible/my_first_task.md
diff --git a/exercises/ansible/solutions/my_first_playbook.md b/topics/ansible/solutions/my_first_playbook.md
similarity index 100%
rename from exercises/ansible/solutions/my_first_playbook.md
rename to topics/ansible/solutions/my_first_playbook.md
diff --git a/exercises/ansible/solutions/my_first_task.md b/topics/ansible/solutions/my_first_task.md
similarity index 100%
rename from exercises/ansible/solutions/my_first_task.md
rename to topics/ansible/solutions/my_first_task.md
diff --git a/exercises/ansible/solutions/update_upgrade_task.md b/topics/ansible/solutions/update_upgrade_task.md
similarity index 100%
rename from exercises/ansible/solutions/update_upgrade_task.md
rename to topics/ansible/solutions/update_upgrade_task.md
diff --git a/exercises/ansible/update_upgrade_task.md b/topics/ansible/update_upgrade_task.md
similarity index 100%
rename from exercises/ansible/update_upgrade_task.md
rename to topics/ansible/update_upgrade_task.md
diff --git a/exercises/aws/README.md b/topics/aws/README.md
similarity index 95%
rename from exercises/aws/README.md
rename to topics/aws/README.md
index 615688cd7..40d426885 100644
--- a/exercises/aws/README.md
+++ b/topics/aws/README.md
@@ -65,93 +65,93 @@
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Create a User | IAM | [Exercise](create_user.md) | [Solution](solutions/create_user.md) | |
-| Password Policy | IAM | [Exercise](password_policy_and_mfa.md) | [Solution](solutions/password_policy_and_mfa.md) | |
-| Create a role | IAM | [Exercise](create_role.md) | [Solution](solutions/create_role.md) | |
-| Credential Report | IAM | [Exercise](credential_report.md) | [Solution](solutions/credential_report.md) | |
-| Access Advisor | IAM | [Exercise](access_advisor.md) | [Solution](solutions/access_advisor.md) | |
+| Create a User | IAM | [Exercise](exercises/create_user/exercise.md) | [Solution](exercises/create_user/solution.md) | |
+| Password Policy | IAM | [Exercise](exercises/password_policy_and_mfa/exercise.md) | [Solution](exercises/password_policy_and_mfa/solution.md) | |
+| Create a role | IAM | [Exercise](exercises/create_role/exercise.md) | [Solution](exercises/create_role/solution.md) | |
+| Credential Report | IAM | [Exercise](exercises/credential_report/exercise.md) | [Solution](exercises/credential_report/solution.md) | |
+| Access Advisor | IAM | [Exercise](exercises/access_advisor/exercise.md) | [Solution](exercises/access_advisor/solution.md) | |
### EC2
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Launch EC2 web instance | EC2 | [Exercise](launch_ec2_web_instance.md) | [Solution](solutions/launch_ec2_web_instance.md) | |
-| Security Groups | EC2 | [Exercise](security_groups.md) | [Solution](solutions/security_groups.md) | |
-| IAM Roles | EC2, IAM | [Exercise](ec2_iam_roles.md) | [Solution](solutions/ec2_iam_roles.md) | |
-| Spot Instances | EC2 | [Exercise](create_spot_instances.md) | [Solution](solutions/create_spot_instances.md) | |
-| Elastic IP | EC2, Networking | [Exercise](elastic_ip.md) | [Solution](solutions/elastic_ip.md) | |
-| Placement Groups Creation | EC2, Placement Groups | [Exercise](placement_groups.md) | [Solution](solutions/placement_groups.md) | |
-| Elastic Network Interfaces | EC2, ENI | [Exercise](elastic_network_interfaces.md) | [Solution](solutions/elastic_network_interfaces.md) | |
-| Hibernate an Instance | EC2 | [Exercise](hibernate_instance.md) | [Solution](solutions/hibernate_instance.md) | |
-| Volume Creation | EC2, EBS | [Exercise](ebs_volume_creation.md) | [Solution](solutions/ebs_volume_creation.md) | |
-| Snapshots | EC2, EBS | [Exercise](snapshots.md) | [Solution](solutions/snapshots.md) | |
-| Create an AMI | EC2, AMI | [Exercise](create_ami.md) | [Solution](solutions/create_ami.md) | |
-| Create EFS | EC2, EFS | [Exercise](create_efs.md) | [Solution](solutions/create_efs.md) | |
+| Launch EC2 web instance | EC2 | [Exercise](exercises/launch_ec2_web_instance/exercise.md) | [Solution](exercises/launch_ec2_web_instance/solution.md) | |
+| Security Groups | EC2 | [Exercise](exercises/security_groups/exercise.md) | [Solution](exercises/security_groups/solution.md) | |
+| IAM Roles | EC2, IAM | [Exercise](exercises/ec2_iam_roles/exercise.md) | [Solution](exercises/ec2_iam_roles/solution.md) | |
+| Spot Instances | EC2 | [Exercise](exercises/create_spot_instances/exercise.md) | [Solution](exercises/create_spot_instances/solution.md) | |
+| Elastic IP | EC2, Networking | [Exercise](exercises/elastic_ip/exercise.md) | [Solution](exercises/elastic_ip/solution.md) | |
+| Placement Groups Creation | EC2, Placement Groups | [Exercise](exercises/placement_groups/exercise.md) | [Solution](exercises/placement_groups/solution.md) | |
+| Elastic Network Interfaces | EC2, ENI | [Exercise](exercises/elastic_network_interfaces/exercise.md) | [Solution](exercises/elastic_network_interfaces/solution.md) | |
+| Hibernate an Instance | EC2 | [Exercise](exercises/hibernate_instance.md) | [Solution](exercises/hibernate_instance/solution.md) | |
+| Volume Creation | EC2, EBS | [Exercise](exercises/ebs_volume_creation/exercise.md) | [Solution](exercises/ebs_volume_creation/solution.md) | |
+| Snapshots | EC2, EBS | [Exercise](exercises/snapshots/exercise.md) | [Solution](exercises/snapshots/solution.md) | |
+| Create an AMI | EC2, AMI | [Exercise](exercises/create_ami/exercise.md) | [Solution](exercises/create_ami/solution.md) | |
+| Create EFS | EC2, EFS | [Exercise](exercises/create_efs/exercise.md) | [Solution](exercises/create_efs/solution.md) | |
### ELB
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Application Load Balancer | ELB, ALB | [Exercise](app_load_balancer.md) | [Solution](solutions/app_load_balancer.md) | |
-| Multiple Target Groups | ELB, ALB | [Exercise](alb_multiple_target_groups.md) | [Solution](solutions/alb_multiple_target_groups.md) | |
-| Network Load Balancer | ELB, NLB | [Exercise](network_load_balancer.md) | [Solution](solutions/network_load_balancer.md) | |
+| Application Load Balancer | ELB, ALB | [Exercise](exercises/app_load_balancer/exercise.md) | [Solution](exercises/app_load_balancer/solution.md) | |
+| Multiple Target Groups | ELB, ALB | [Exercise](exercises/alb_multiple_target_groups/exercise.md) | [Solution](exercises/alb_multiple_target_groups/solution.md) | |
+| Network Load Balancer | ELB, NLB | [Exercise](exercises/network_load_balancer/exercise.md) | [Solution](exercises/network_load_balancer/solution.md) | |
### Auto Scaling Groups
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Auto Scaling Groups Basics | ASG | [Exercise](auto_scaling_groups_basics.md) | [Solution](solutions/auto_scaling_groups_basics.md) | |
-| Dynamic Scaling Policy | ASG, Policies | [Exercise](asg_dynamic_scaling_policy.md) | [Solution](solutions/asg_dynamic_scaling_policy.md) | |
+| Auto Scaling Groups Basics | ASG | [Exercise](exercises/auto_scaling_groups_basics/exercise.md) | [Solution](exercises/auto_scaling_groups_basics/solution.md) | |
+| Dynamic Scaling Policy | ASG, Policies | [Exercise](exercises/asg_dynamic_scaling_policy/exercise.md) | [Solution](exercises/asg_dynamic_scaling_policy/solution.md) | |
### VPC
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| My First VPC | VPC | [Exercise](new_vpc.md) | [Solution](solutions/new_vpc.md) | |
-| Subnets | VPC | [Exercise](subnets.md) | [Solution](solutions/subnets.md) | |
+| My First VPC | VPC | [Exercise](exercises/new_vpc/exercise.md) | [Solution](exercises/new_vpc/solution.md) | |
+| Subnets | VPC | [Exercise](exercises/subnets/exercise.md) | [Solution](exercises/subnets/solution.md) | |
### Databases
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| MySQL DB | RDS | [Exercise](mysql_db.md) | [Solution](solutions/mysql_db.md) | |
-| Aurora DB | RDS | [Exercise](aurora_db.md) | [Solution](solutions/aurora_db.md) | |
-| ElastiCache | ElastiCache | [Exercise](elasticache.md) | [Solution](solutions/elasticache.md) | |
+| MySQL DB | RDS | [Exercise](exercises/mysql_db/exercise.md) | [Solution](exercises/mysql_db/solution.md) | |
+| Aurora DB | RDS | [Exercise](exercises/aurora_db/exercise.md) | [Solution](exercises/aurora_db/solution.md) | |
+| ElastiCache | ElastiCache | [Exercise](exercises/elasticache/exercise.md) | [Solution](exercises/elasticache/solution.md) | |
### DNS
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-Register Domain | Route 53 | [Exercise](register_domain.md) | [Solution](solutions/register_domain.md) | |
-Creating Records | Route 53 | [Exercise](creating_records.md) | [Solution](solutions/creating_records.md) | |
-Health Checks | Route 53 | [Exercise](health_checks.md) | [Solution](solutions/health_checks.md) | |
-Failover | Route 53 | [Exercise](route_53_failover.md) | [Solution](solutions/route_53_failover.md) | |
+Register Domain | Route 53 | [Exercise](exercises/register_domain/exercise.md) | [Solution](exercises/register_domain/solution.md) | |
+Creating Records | Route 53 | [Exercise](exercises/creating_records/exercise.md) | [Solution](exercises/creating_records/solution.md) | |
+Health Checks | Route 53 | [Exercise](exercises/health_checks/exercise.md) | [Solution](exercises/health_checks/solution.md) | |
+Failover | Route 53 | [Exercise](exercises/route_53_failover/exercise.md) | [Solution](exercises/route_53_failover/solution.md) | |
### Containers
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| ECS Task | ECS, Fargate | [Exercise](ecs_task.md) | [Solution](solutions/ecs_task.md) | |
+| ECS Task | ECS, Fargate | [Exercise](exercises/ecs_task/exercise.md) | [Solution](exercises/ecs_task/solution.md) | |
### Lambda
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Hello Function | Lambda | [Exercise](hello_function.md) | [Solution](solutions/hello_function.md) | |
-| URL Function | Lambda | [Exercise](url_function.md) | [Solution](solutions/url_function.md) | |
+| Hello Function | Lambda | [Exercise](exercises/hello_function/exercise.md) | [Solution](exercises/hello_function/solution.md) | |
+| URL Function | Lambda | [Exercise](exercises/url_function/exercise.md) | [Solution](exercises/url_function/solution.md) | |
### Elastic Beanstalk
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Simple Elastic Beanstalk Node.js app | Elastic Beanstalk | [Exercise](elastic_beanstalk_simple.md) | [Solution](solutions/elastic_beanstalk_simple.md) | |
+| Simple Elastic Beanstalk Node.js app | Elastic Beanstalk | [Exercise](exercises/elastic_beanstalk_simple/exercise.md) | [Solution](exercises/elastic_beanstalk_simple/solution.md) | |
### Misc
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Budget Setup | Budget | [Exercise](budget_setup.md) | [Solution](solutions/budget_setup.md) | |
-| No Application :'( | Troubleshooting | [Exercise](no_application.md) | [Solution](solutions/no_application.md) | |
+| Budget Setup | Budget | [Exercise](exercises/budget_setup/exercise.md) | [Solution](exercises/budget_setup/solution.md) | |
+| No Application :'( | Troubleshooting | [Exercise](exercises/no_application/exercise.md) | [Solution](exercises/no_application/solution.md) | |
## Questions
diff --git a/exercises/aws/access_advisor.md b/topics/aws/exercises/access_advisor/exercise.md
similarity index 82%
rename from exercises/aws/access_advisor.md
rename to topics/aws/exercises/access_advisor/exercise.md
index 8aa7c06a9..bb3946912 100644
--- a/exercises/aws/access_advisor.md
+++ b/topics/aws/exercises/access_advisor/exercise.md
@@ -7,3 +7,7 @@ Go to the Access Advisor and answer the following questions regarding one of the
1. Are there services this user never accessed?
2. What was the last service the user has accessed?
3. What the Access Advisor is used/good for?
+
+## Solution
+
+Click [here to view to solution](solution.md)
\ No newline at end of file
diff --git a/exercises/aws/solutions/access_advisor.md b/topics/aws/exercises/access_advisor/solution.md
similarity index 100%
rename from exercises/aws/solutions/access_advisor.md
rename to topics/aws/exercises/access_advisor/solution.md
diff --git a/exercises/aws/alb_multiple_target_groups.md b/topics/aws/exercises/alb_multiple_target_groups/exercise.md
similarity index 100%
rename from exercises/aws/alb_multiple_target_groups.md
rename to topics/aws/exercises/alb_multiple_target_groups/exercise.md
diff --git a/exercises/aws/solutions/alb_multiple_target_groups.md b/topics/aws/exercises/alb_multiple_target_groups/solution.md
similarity index 100%
rename from exercises/aws/solutions/alb_multiple_target_groups.md
rename to topics/aws/exercises/alb_multiple_target_groups/solution.md
diff --git a/exercises/aws/app_load_balancer.md b/topics/aws/exercises/app_load_balancer/exercise.md
similarity index 100%
rename from exercises/aws/app_load_balancer.md
rename to topics/aws/exercises/app_load_balancer/exercise.md
diff --git a/exercises/aws/solutions/app_load_balancer.md b/topics/aws/exercises/app_load_balancer/solution.md
similarity index 100%
rename from exercises/aws/solutions/app_load_balancer.md
rename to topics/aws/exercises/app_load_balancer/solution.md
diff --git a/exercises/aws/asg_dynamic_scaling_policy.md b/topics/aws/exercises/asg_dynamic_scaling_policy/exercise.md
similarity index 100%
rename from exercises/aws/asg_dynamic_scaling_policy.md
rename to topics/aws/exercises/asg_dynamic_scaling_policy/exercise.md
diff --git a/exercises/aws/solutions/asg_dynamic_scaling_policy.md b/topics/aws/exercises/asg_dynamic_scaling_policy/solution.md
similarity index 100%
rename from exercises/aws/solutions/asg_dynamic_scaling_policy.md
rename to topics/aws/exercises/asg_dynamic_scaling_policy/solution.md
diff --git a/exercises/aws/aurora_db.md b/topics/aws/exercises/aurora_db/exercise.md
similarity index 100%
rename from exercises/aws/aurora_db.md
rename to topics/aws/exercises/aurora_db/exercise.md
diff --git a/exercises/aws/solutions/aurora_db.md b/topics/aws/exercises/aurora_db/solution.md
similarity index 100%
rename from exercises/aws/solutions/aurora_db.md
rename to topics/aws/exercises/aurora_db/solution.md
diff --git a/exercises/aws/auto_scaling_groups_basics.md b/topics/aws/exercises/auto_scaling_groups_basics/exercise.md
similarity index 100%
rename from exercises/aws/auto_scaling_groups_basics.md
rename to topics/aws/exercises/auto_scaling_groups_basics/exercise.md
diff --git a/exercises/aws/solutions/auto_scaling_groups_basics.md b/topics/aws/exercises/auto_scaling_groups_basics/solution.md
similarity index 100%
rename from exercises/aws/solutions/auto_scaling_groups_basics.md
rename to topics/aws/exercises/auto_scaling_groups_basics/solution.md
diff --git a/exercises/aws/budget_setup.md b/topics/aws/exercises/budget_setup/exercise.md
similarity index 100%
rename from exercises/aws/budget_setup.md
rename to topics/aws/exercises/budget_setup/exercise.md
diff --git a/exercises/aws/solutions/budget_setup.md b/topics/aws/exercises/budget_setup/solution.md
similarity index 100%
rename from exercises/aws/solutions/budget_setup.md
rename to topics/aws/exercises/budget_setup/solution.md
diff --git a/exercises/aws/create_ami.md b/topics/aws/exercises/create_ami/exercise.md
similarity index 100%
rename from exercises/aws/create_ami.md
rename to topics/aws/exercises/create_ami/exercise.md
diff --git a/exercises/aws/solutions/create_ami.md b/topics/aws/exercises/create_ami/solution.md
similarity index 100%
rename from exercises/aws/solutions/create_ami.md
rename to topics/aws/exercises/create_ami/solution.md
diff --git a/exercises/aws/create_efs.md b/topics/aws/exercises/create_efs/exercise.md
similarity index 100%
rename from exercises/aws/create_efs.md
rename to topics/aws/exercises/create_efs/exercise.md
diff --git a/exercises/aws/solutions/create_efs.md b/topics/aws/exercises/create_efs/solution.md
similarity index 100%
rename from exercises/aws/solutions/create_efs.md
rename to topics/aws/exercises/create_efs/solution.md
diff --git a/exercises/aws/create_role.md b/topics/aws/exercises/create_role/exercise.md
similarity index 100%
rename from exercises/aws/create_role.md
rename to topics/aws/exercises/create_role/exercise.md
diff --git a/exercises/aws/solutions/create_role.md b/topics/aws/exercises/create_role/solution.md
similarity index 100%
rename from exercises/aws/solutions/create_role.md
rename to topics/aws/exercises/create_role/solution.md
diff --git a/exercises/aws/create_spot_instances.md b/topics/aws/exercises/create_spot_instances/exercise.md
similarity index 100%
rename from exercises/aws/create_spot_instances.md
rename to topics/aws/exercises/create_spot_instances/exercise.md
diff --git a/exercises/aws/solutions/create_spot_instances.md b/topics/aws/exercises/create_spot_instances/solution.md
similarity index 100%
rename from exercises/aws/solutions/create_spot_instances.md
rename to topics/aws/exercises/create_spot_instances/solution.md
diff --git a/exercises/aws/create_user.md b/topics/aws/exercises/create_user/exercise.md
similarity index 100%
rename from exercises/aws/create_user.md
rename to topics/aws/exercises/create_user/exercise.md
diff --git a/exercises/aws/solutions/create_user.md b/topics/aws/exercises/create_user/solution.md
similarity index 100%
rename from exercises/aws/solutions/create_user.md
rename to topics/aws/exercises/create_user/solution.md
diff --git a/exercises/aws/creating_records.md b/topics/aws/exercises/creating_records/exercise.md
similarity index 100%
rename from exercises/aws/creating_records.md
rename to topics/aws/exercises/creating_records/exercise.md
diff --git a/exercises/aws/solutions/creating_records.md b/topics/aws/exercises/creating_records/solution.md
similarity index 100%
rename from exercises/aws/solutions/creating_records.md
rename to topics/aws/exercises/creating_records/solution.md
diff --git a/topics/aws/exercises/credential_report/exercise.md b/topics/aws/exercises/credential_report/exercise.md
new file mode 100644
index 000000000..d62ecaaf8
--- /dev/null
+++ b/topics/aws/exercises/credential_report/exercise.md
@@ -0,0 +1,9 @@
+## AWS - Credential Report
+
+### Objectives
+
+1. Create/Download a credential report
+2. Answer the following questions based on the report:
+ 1. Are there users with MFA not activated?
+ 2. Are there users with password enabled that didn't
+3. Explain the use case for using the credential report
diff --git a/exercises/aws/solutions/credential_report.md b/topics/aws/exercises/credential_report/solution.md
similarity index 100%
rename from exercises/aws/solutions/credential_report.md
rename to topics/aws/exercises/credential_report/solution.md
diff --git a/exercises/aws/ebs_volume_creation.md b/topics/aws/exercises/ebs_volume_creation/exercise.md
similarity index 100%
rename from exercises/aws/ebs_volume_creation.md
rename to topics/aws/exercises/ebs_volume_creation/exercise.md
diff --git a/exercises/aws/solutions/ebs_volume_creation.md b/topics/aws/exercises/ebs_volume_creation/solution.md
similarity index 100%
rename from exercises/aws/solutions/ebs_volume_creation.md
rename to topics/aws/exercises/ebs_volume_creation/solution.md
diff --git a/exercises/aws/ec2_iam_roles.md b/topics/aws/exercises/ec2_iam_roles/exercise.md
similarity index 100%
rename from exercises/aws/ec2_iam_roles.md
rename to topics/aws/exercises/ec2_iam_roles/exercise.md
diff --git a/exercises/aws/solutions/ec2_iam_roles.md b/topics/aws/exercises/ec2_iam_roles/solution.md
similarity index 100%
rename from exercises/aws/solutions/ec2_iam_roles.md
rename to topics/aws/exercises/ec2_iam_roles/solution.md
diff --git a/exercises/aws/ecs_task.md b/topics/aws/exercises/ecs_task/exercise.md
similarity index 100%
rename from exercises/aws/ecs_task.md
rename to topics/aws/exercises/ecs_task/exercise.md
diff --git a/exercises/aws/solutions/ecs_task.md b/topics/aws/exercises/ecs_task/solution.md
similarity index 100%
rename from exercises/aws/solutions/ecs_task.md
rename to topics/aws/exercises/ecs_task/solution.md
diff --git a/exercises/aws/elastic_beanstalk_simple.md b/topics/aws/exercises/elastic_beanstalk_simple/exercise.md
similarity index 100%
rename from exercises/aws/elastic_beanstalk_simple.md
rename to topics/aws/exercises/elastic_beanstalk_simple/exercise.md
diff --git a/exercises/aws/solutions/elastic_beanstalk_simple.md b/topics/aws/exercises/elastic_beanstalk_simple/solution.md
similarity index 100%
rename from exercises/aws/solutions/elastic_beanstalk_simple.md
rename to topics/aws/exercises/elastic_beanstalk_simple/solution.md
diff --git a/exercises/aws/elastic_ip.md b/topics/aws/exercises/elastic_ip/exercise.md
similarity index 100%
rename from exercises/aws/elastic_ip.md
rename to topics/aws/exercises/elastic_ip/exercise.md
diff --git a/exercises/aws/solutions/elastic_ip.md b/topics/aws/exercises/elastic_ip/solution.md
similarity index 100%
rename from exercises/aws/solutions/elastic_ip.md
rename to topics/aws/exercises/elastic_ip/solution.md
diff --git a/exercises/aws/elastic_network_interfaces.md b/topics/aws/exercises/elastic_network_interfaces/exercise.md
similarity index 100%
rename from exercises/aws/elastic_network_interfaces.md
rename to topics/aws/exercises/elastic_network_interfaces/exercise.md
diff --git a/exercises/aws/solutions/elastic_network_interfaces.md b/topics/aws/exercises/elastic_network_interfaces/solution.md
similarity index 100%
rename from exercises/aws/solutions/elastic_network_interfaces.md
rename to topics/aws/exercises/elastic_network_interfaces/solution.md
diff --git a/exercises/aws/elasticache.md b/topics/aws/exercises/elasticache/exercise.md
similarity index 100%
rename from exercises/aws/elasticache.md
rename to topics/aws/exercises/elasticache/exercise.md
diff --git a/exercises/aws/solutions/elasticache.md b/topics/aws/exercises/elasticache/solution.md
similarity index 100%
rename from exercises/aws/solutions/elasticache.md
rename to topics/aws/exercises/elasticache/solution.md
diff --git a/exercises/aws/health_checks.md b/topics/aws/exercises/health_checks/exercise.md
similarity index 100%
rename from exercises/aws/health_checks.md
rename to topics/aws/exercises/health_checks/exercise.md
diff --git a/exercises/aws/solutions/health_checks.md b/topics/aws/exercises/health_checks/solution.md
similarity index 100%
rename from exercises/aws/solutions/health_checks.md
rename to topics/aws/exercises/health_checks/solution.md
diff --git a/exercises/aws/hello_function.md b/topics/aws/exercises/hello_function/exercise.md
similarity index 100%
rename from exercises/aws/hello_function.md
rename to topics/aws/exercises/hello_function/exercise.md
diff --git a/exercises/aws/solutions/hello_function.md b/topics/aws/exercises/hello_function/solution.md
similarity index 100%
rename from exercises/aws/solutions/hello_function.md
rename to topics/aws/exercises/hello_function/solution.md
diff --git a/exercises/aws/hibernate_instance.md b/topics/aws/exercises/hibernate_instance/exercise.md
similarity index 100%
rename from exercises/aws/hibernate_instance.md
rename to topics/aws/exercises/hibernate_instance/exercise.md
diff --git a/exercises/aws/solutions/hibernate_instance.md b/topics/aws/exercises/hibernate_instance/solution.md
similarity index 100%
rename from exercises/aws/solutions/hibernate_instance.md
rename to topics/aws/exercises/hibernate_instance/solution.md
diff --git a/exercises/aws/launch_ec2_web_instance.md b/topics/aws/exercises/launch_ec2_web_instance/exercise.md
similarity index 100%
rename from exercises/aws/launch_ec2_web_instance.md
rename to topics/aws/exercises/launch_ec2_web_instance/exercise.md
diff --git a/exercises/aws/solutions/launch_ec2_web_instance.md b/topics/aws/exercises/launch_ec2_web_instance/solution.md
similarity index 100%
rename from exercises/aws/solutions/launch_ec2_web_instance.md
rename to topics/aws/exercises/launch_ec2_web_instance/solution.md
diff --git a/exercises/aws/mysql_db.md b/topics/aws/exercises/mysql_db/exercise.md
similarity index 100%
rename from exercises/aws/mysql_db.md
rename to topics/aws/exercises/mysql_db/exercise.md
diff --git a/exercises/aws/solutions/mysql_db.md b/topics/aws/exercises/mysql_db/solution.md
similarity index 100%
rename from exercises/aws/solutions/mysql_db.md
rename to topics/aws/exercises/mysql_db/solution.md
diff --git a/exercises/aws/network_load_balancer.md b/topics/aws/exercises/network_load_balancer/exercise.md
similarity index 100%
rename from exercises/aws/network_load_balancer.md
rename to topics/aws/exercises/network_load_balancer/exercise.md
diff --git a/exercises/aws/solutions/network_load_balancer.md b/topics/aws/exercises/network_load_balancer/solution.md
similarity index 100%
rename from exercises/aws/solutions/network_load_balancer.md
rename to topics/aws/exercises/network_load_balancer/solution.md
diff --git a/exercises/aws/new_vpc.md b/topics/aws/exercises/new_vpc/exercise.md
similarity index 100%
rename from exercises/aws/new_vpc.md
rename to topics/aws/exercises/new_vpc/exercise.md
diff --git a/exercises/aws/solutions/new_vpc.md b/topics/aws/exercises/new_vpc/solution.md
similarity index 100%
rename from exercises/aws/solutions/new_vpc.md
rename to topics/aws/exercises/new_vpc/solution.md
diff --git a/exercises/aws/no_application.md b/topics/aws/exercises/no_application/exercise.md
similarity index 100%
rename from exercises/aws/no_application.md
rename to topics/aws/exercises/no_application/exercise.md
diff --git a/exercises/aws/solutions/no_application.md b/topics/aws/exercises/no_application/solution.md
similarity index 100%
rename from exercises/aws/solutions/no_application.md
rename to topics/aws/exercises/no_application/solution.md
diff --git a/exercises/aws/password_policy_and_mfa.md b/topics/aws/exercises/password_policy_and_mfa/exercise.md
similarity index 100%
rename from exercises/aws/password_policy_and_mfa.md
rename to topics/aws/exercises/password_policy_and_mfa/exercise.md
diff --git a/exercises/aws/solutions/password_policy_and_mfa.md b/topics/aws/exercises/password_policy_and_mfa/solution.md
similarity index 100%
rename from exercises/aws/solutions/password_policy_and_mfa.md
rename to topics/aws/exercises/password_policy_and_mfa/solution.md
diff --git a/exercises/aws/placement_groups.md b/topics/aws/exercises/placement_groups/exercise.md
similarity index 100%
rename from exercises/aws/placement_groups.md
rename to topics/aws/exercises/placement_groups/exercise.md
diff --git a/exercises/aws/solutions/placement_groups.md b/topics/aws/exercises/placement_groups/solution.md
similarity index 100%
rename from exercises/aws/solutions/placement_groups.md
rename to topics/aws/exercises/placement_groups/solution.md
diff --git a/exercises/aws/register_domain.md b/topics/aws/exercises/register_domain/exercise.md
similarity index 100%
rename from exercises/aws/register_domain.md
rename to topics/aws/exercises/register_domain/exercise.md
diff --git a/exercises/aws/solutions/register_domain.md b/topics/aws/exercises/register_domain/solution.md
similarity index 100%
rename from exercises/aws/solutions/register_domain.md
rename to topics/aws/exercises/register_domain/solution.md
diff --git a/exercises/aws/route_53_failover.md b/topics/aws/exercises/route_53_failover/exercise.md
similarity index 100%
rename from exercises/aws/route_53_failover.md
rename to topics/aws/exercises/route_53_failover/exercise.md
diff --git a/exercises/aws/solutions/route_53_failover.md b/topics/aws/exercises/route_53_failover/solution.md
similarity index 100%
rename from exercises/aws/solutions/route_53_failover.md
rename to topics/aws/exercises/route_53_failover/solution.md
diff --git a/exercises/aws/security_groups.md b/topics/aws/exercises/security_groups/exercise.md
similarity index 88%
rename from exercises/aws/security_groups.md
rename to topics/aws/exercises/security_groups/exercise.md
index 8b2b7faf3..302666bcc 100644
--- a/exercises/aws/security_groups.md
+++ b/topics/aws/exercises/security_groups/exercise.md
@@ -14,3 +14,7 @@ For this exercise you'll need:
3. Can you still access the application? What do you see/get?
4. Add back the rule
5. Can you access the application now?
+
+## Solution
+
+Click [here to view to solution](solution.md)
\ No newline at end of file
diff --git a/exercises/aws/solutions/security_groups.md b/topics/aws/exercises/security_groups/solution.md
similarity index 100%
rename from exercises/aws/solutions/security_groups.md
rename to topics/aws/exercises/security_groups/solution.md
diff --git a/topics/aws/exercises/snapshots/exercise.md b/topics/aws/exercises/snapshots/exercise.md
new file mode 100644
index 000000000..7e754ac1a
--- /dev/null
+++ b/topics/aws/exercises/snapshots/exercise.md
@@ -0,0 +1,16 @@
+## AWS EC2 - EBS Snapshots
+
+### Requirements
+
+EBS Volume
+
+### Objectives
+
+A. Create a snapshot of an EBS volume
+B. Verify the snapshot was created
+C. Move the data to another region
+D. Create a volume out of it in a different AZ
+
+## Solution
+
+Click [here to view to solution](solution.md)
\ No newline at end of file
diff --git a/exercises/aws/solutions/snapshots.md b/topics/aws/exercises/snapshots/solution.md
similarity index 100%
rename from exercises/aws/solutions/snapshots.md
rename to topics/aws/exercises/snapshots/solution.md
diff --git a/exercises/aws/subnets.md b/topics/aws/exercises/subnets/exercise.md
similarity index 87%
rename from exercises/aws/subnets.md
rename to topics/aws/exercises/subnets/exercise.md
index 7892f184d..5a48aa39e 100644
--- a/exercises/aws/subnets.md
+++ b/topics/aws/exercises/subnets/exercise.md
@@ -17,3 +17,7 @@ Single newly created VPC
1. CIDR: 10.0.2.0/24
2. Name: NewSubnet3
3. Different AZ compared to previous subnets
+
+## Solution
+
+Click [here to view to solution](solution.md)
\ No newline at end of file
diff --git a/exercises/aws/solutions/subnets.md b/topics/aws/exercises/subnets/solution.md
similarity index 100%
rename from exercises/aws/solutions/subnets.md
rename to topics/aws/exercises/subnets/solution.md
diff --git a/exercises/aws/url_function.md b/topics/aws/exercises/url_function/exercise.md
similarity index 65%
rename from exercises/aws/url_function.md
rename to topics/aws/exercises/url_function/exercise.md
index 8fcf5903b..0cb672ea0 100644
--- a/exercises/aws/url_function.md
+++ b/topics/aws/exercises/url_function/exercise.md
@@ -1,3 +1,7 @@
## URL Function
Create a basic AWS Lambda function that will be triggered when you enter a URL in the browser
+
+## Solution
+
+Click [here to view to solution](solution.md)
\ No newline at end of file
diff --git a/exercises/aws/solutions/url_function.md b/topics/aws/exercises/url_function/solution.md
similarity index 100%
rename from exercises/aws/solutions/url_function.md
rename to topics/aws/exercises/url_function/solution.md
diff --git a/exercises/azure/README.md b/topics/azure/README.md
similarity index 80%
rename from exercises/azure/README.md
rename to topics/azure/README.md
index 166525960..a6104767b 100644
--- a/exercises/azure/README.md
+++ b/topics/azure/README.md
@@ -1,4 +1,17 @@
-## Azure
+# Azure
+
+- [Azure](#azure)
+ - [Questions](#questions)
+ - [Azure 101](#azure-101)
+ - [Azure Resource Manager](#azure-resource-manager)
+ - [Compute](#compute)
+ - [Network](#network)
+ - [Storage](#storage)
+ - [Security](#security)
+
+## Questions
+
+### Azure 101
What is Azure Portal?
@@ -30,7 +43,21 @@ An availability set is a logical grouping of VMs that allows Azure to understand
Explain Azure managed disks
-#### Azure - Compute
+### Azure Resource Manager
+
+
+Explain what's Azure Resource Manager
+
+From [Azure docs](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/overview): "Azure Resource Manager is the deployment and management service for Azure. It provides a management layer that enables you to create, update, and delete resources in your Azure account. You use management features, like access control, locks, and tags, to secure and organize your resources after deployment."
+
+
+
+What's an Azure Resource Group?
+
+From [Azure docs](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-portal): "A resource group is a container that holds related resources for an Azure solution. The resource group can include all the resources for the solution, or only those resources that you want to manage as a group."
+
+
+### Compute
What Azure compute services are you familiar with?
@@ -87,7 +114,7 @@ Running parallel and high-performance computing applications
What "Azure Kubernetes" service is used for?
-#### Azure - Network
+### Network
What Azure network services are you familiar with?
@@ -101,7 +128,7 @@ Running parallel and high-performance computing applications
What is the N-tier architecture?
-#### Azure Storage
+### Storage
What Azure storage services are you familiar with?
@@ -111,7 +138,7 @@ Running parallel and high-performance computing applications
What storage options Azure supports?
-#### Azure Security
+### Security
What is the Azure Security Center? What are some of its features?
diff --git a/exercises/cicd/README.md b/topics/cicd/README.md
similarity index 100%
rename from exercises/cicd/README.md
rename to topics/cicd/README.md
diff --git a/exercises/cicd/ci_for_open_source_project.md b/topics/cicd/ci_for_open_source_project.md
similarity index 100%
rename from exercises/cicd/ci_for_open_source_project.md
rename to topics/cicd/ci_for_open_source_project.md
diff --git a/exercises/cicd/deploy_to_kubernetes.md b/topics/cicd/deploy_to_kubernetes.md
similarity index 100%
rename from exercises/cicd/deploy_to_kubernetes.md
rename to topics/cicd/deploy_to_kubernetes.md
diff --git a/exercises/cicd/remove_builds.md b/topics/cicd/remove_builds.md
similarity index 100%
rename from exercises/cicd/remove_builds.md
rename to topics/cicd/remove_builds.md
diff --git a/exercises/cicd/remove_jobs.md b/topics/cicd/remove_jobs.md
similarity index 100%
rename from exercises/cicd/remove_jobs.md
rename to topics/cicd/remove_jobs.md
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/Jenkinsfile b/topics/cicd/solutions/deploy_to_kubernetes/Jenkinsfile
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/Jenkinsfile
rename to topics/cicd/solutions/deploy_to_kubernetes/Jenkinsfile
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/README.md b/topics/cicd/solutions/deploy_to_kubernetes/README.md
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/README.md
rename to topics/cicd/solutions/deploy_to_kubernetes/README.md
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/deploy.yml b/topics/cicd/solutions/deploy_to_kubernetes/deploy.yml
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/deploy.yml
rename to topics/cicd/solutions/deploy_to_kubernetes/deploy.yml
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/helloworld.yml b/topics/cicd/solutions/deploy_to_kubernetes/helloworld.yml
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/helloworld.yml
rename to topics/cicd/solutions/deploy_to_kubernetes/helloworld.yml
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/html/css/normalize.css b/topics/cicd/solutions/deploy_to_kubernetes/html/css/normalize.css
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/html/css/normalize.css
rename to topics/cicd/solutions/deploy_to_kubernetes/html/css/normalize.css
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/html/css/skeleton.css b/topics/cicd/solutions/deploy_to_kubernetes/html/css/skeleton.css
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/html/css/skeleton.css
rename to topics/cicd/solutions/deploy_to_kubernetes/html/css/skeleton.css
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/html/images/favicon.png b/topics/cicd/solutions/deploy_to_kubernetes/html/images/favicon.png
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/html/images/favicon.png
rename to topics/cicd/solutions/deploy_to_kubernetes/html/images/favicon.png
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/html/index.html b/topics/cicd/solutions/deploy_to_kubernetes/html/index.html
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/html/index.html
rename to topics/cicd/solutions/deploy_to_kubernetes/html/index.html
diff --git a/exercises/cicd/solutions/deploy_to_kubernetes/inventory b/topics/cicd/solutions/deploy_to_kubernetes/inventory
similarity index 100%
rename from exercises/cicd/solutions/deploy_to_kubernetes/inventory
rename to topics/cicd/solutions/deploy_to_kubernetes/inventory
diff --git a/exercises/cicd/solutions/remove_builds_solution.groovy b/topics/cicd/solutions/remove_builds_solution.groovy
similarity index 100%
rename from exercises/cicd/solutions/remove_builds_solution.groovy
rename to topics/cicd/solutions/remove_builds_solution.groovy
diff --git a/exercises/cicd/solutions/remove_jobs_solution.groovy b/topics/cicd/solutions/remove_jobs_solution.groovy
similarity index 100%
rename from exercises/cicd/solutions/remove_jobs_solution.groovy
rename to topics/cicd/solutions/remove_jobs_solution.groovy
diff --git a/exercises/cloud/README.md b/topics/cloud/README.md
similarity index 100%
rename from exercises/cloud/README.md
rename to topics/cloud/README.md
diff --git a/exercises/cloud_slack_bot.md b/topics/cloud_slack_bot.md
similarity index 100%
rename from exercises/cloud_slack_bot.md
rename to topics/cloud_slack_bot.md
diff --git a/exercises/containers/README.md b/topics/containers/README.md
similarity index 100%
rename from exercises/containers/README.md
rename to topics/containers/README.md
diff --git a/exercises/containers/commit_image.md b/topics/containers/commit_image.md
similarity index 100%
rename from exercises/containers/commit_image.md
rename to topics/containers/commit_image.md
diff --git a/exercises/containers/containerized_db.md b/topics/containers/containerized_db.md
similarity index 100%
rename from exercises/containers/containerized_db.md
rename to topics/containers/containerized_db.md
diff --git a/exercises/containers/containerized_db_persistent_storage.md b/topics/containers/containerized_db_persistent_storage.md
similarity index 100%
rename from exercises/containers/containerized_db_persistent_storage.md
rename to topics/containers/containerized_db_persistent_storage.md
diff --git a/exercises/containers/containerized_web_server.md b/topics/containers/containerized_web_server.md
similarity index 100%
rename from exercises/containers/containerized_web_server.md
rename to topics/containers/containerized_web_server.md
diff --git a/exercises/containers/image_layers.md b/topics/containers/image_layers.md
similarity index 100%
rename from exercises/containers/image_layers.md
rename to topics/containers/image_layers.md
diff --git a/exercises/containers/multi_stage_builds.md b/topics/containers/multi_stage_builds.md
similarity index 100%
rename from exercises/containers/multi_stage_builds.md
rename to topics/containers/multi_stage_builds.md
diff --git a/exercises/containers/run_forest_run.md b/topics/containers/run_forest_run.md
similarity index 100%
rename from exercises/containers/run_forest_run.md
rename to topics/containers/run_forest_run.md
diff --git a/exercises/containers/running_containers.md b/topics/containers/running_containers.md
similarity index 100%
rename from exercises/containers/running_containers.md
rename to topics/containers/running_containers.md
diff --git a/exercises/containers/sharing_images.md b/topics/containers/sharing_images.md
similarity index 100%
rename from exercises/containers/sharing_images.md
rename to topics/containers/sharing_images.md
diff --git a/exercises/containers/solutions/commit_image.md b/topics/containers/solutions/commit_image.md
similarity index 100%
rename from exercises/containers/solutions/commit_image.md
rename to topics/containers/solutions/commit_image.md
diff --git a/exercises/containers/solutions/containerized_db.md b/topics/containers/solutions/containerized_db.md
similarity index 100%
rename from exercises/containers/solutions/containerized_db.md
rename to topics/containers/solutions/containerized_db.md
diff --git a/exercises/containers/solutions/containerized_db_persistent_storage.md b/topics/containers/solutions/containerized_db_persistent_storage.md
similarity index 100%
rename from exercises/containers/solutions/containerized_db_persistent_storage.md
rename to topics/containers/solutions/containerized_db_persistent_storage.md
diff --git a/exercises/containers/solutions/containerized_web_server.md b/topics/containers/solutions/containerized_web_server.md
similarity index 100%
rename from exercises/containers/solutions/containerized_web_server.md
rename to topics/containers/solutions/containerized_web_server.md
diff --git a/exercises/containers/solutions/image_layers.md b/topics/containers/solutions/image_layers.md
similarity index 100%
rename from exercises/containers/solutions/image_layers.md
rename to topics/containers/solutions/image_layers.md
diff --git a/exercises/containers/solutions/multi_stage_builds.md b/topics/containers/solutions/multi_stage_builds.md
similarity index 100%
rename from exercises/containers/solutions/multi_stage_builds.md
rename to topics/containers/solutions/multi_stage_builds.md
diff --git a/exercises/containers/solutions/run_forest_run.md b/topics/containers/solutions/run_forest_run.md
similarity index 100%
rename from exercises/containers/solutions/run_forest_run.md
rename to topics/containers/solutions/run_forest_run.md
diff --git a/exercises/containers/solutions/running_containers.md b/topics/containers/solutions/running_containers.md
similarity index 100%
rename from exercises/containers/solutions/running_containers.md
rename to topics/containers/solutions/running_containers.md
diff --git a/exercises/containers/solutions/sharing_images.md b/topics/containers/solutions/sharing_images.md
similarity index 100%
rename from exercises/containers/solutions/sharing_images.md
rename to topics/containers/solutions/sharing_images.md
diff --git a/exercises/containers/solutions/working_with_images.md b/topics/containers/solutions/working_with_images.md
similarity index 100%
rename from exercises/containers/solutions/working_with_images.md
rename to topics/containers/solutions/working_with_images.md
diff --git a/exercises/containers/working_with_images.md b/topics/containers/working_with_images.md
similarity index 100%
rename from exercises/containers/working_with_images.md
rename to topics/containers/working_with_images.md
diff --git a/exercises/containers/write_containerfile_run_container.md b/topics/containers/write_containerfile_run_container.md
similarity index 100%
rename from exercises/containers/write_containerfile_run_container.md
rename to topics/containers/write_containerfile_run_container.md
diff --git a/exercises/databases/solutions/table_for_message_board_system.md b/topics/databases/solutions/table_for_message_board_system.md
similarity index 100%
rename from exercises/databases/solutions/table_for_message_board_system.md
rename to topics/databases/solutions/table_for_message_board_system.md
diff --git a/exercises/databases/table_for_message_board_system.md b/topics/databases/table_for_message_board_system.md
similarity index 100%
rename from exercises/databases/table_for_message_board_system.md
rename to topics/databases/table_for_message_board_system.md
diff --git a/exercises/devops/README.md b/topics/devops/README.md
similarity index 100%
rename from exercises/devops/README.md
rename to topics/devops/README.md
diff --git a/exercises/devops/containerize_app.md b/topics/devops/containerize_app.md
similarity index 100%
rename from exercises/devops/containerize_app.md
rename to topics/devops/containerize_app.md
diff --git a/exercises/devops/ha_hello_world.md b/topics/devops/ha_hello_world.md
similarity index 100%
rename from exercises/devops/ha_hello_world.md
rename to topics/devops/ha_hello_world.md
diff --git a/exercises/devops/solutions/containerize_app.md b/topics/devops/solutions/containerize_app.md
similarity index 100%
rename from exercises/devops/solutions/containerize_app.md
rename to topics/devops/solutions/containerize_app.md
diff --git a/exercises/devops/solutions/ha_hello_world.md b/topics/devops/solutions/ha_hello_world.md
similarity index 100%
rename from exercises/devops/solutions/ha_hello_world.md
rename to topics/devops/solutions/ha_hello_world.md
diff --git a/exercises/dns/README.md b/topics/dns/README.md
similarity index 100%
rename from exercises/dns/README.md
rename to topics/dns/README.md
diff --git a/exercises/eflk.md b/topics/eflk.md
similarity index 100%
rename from exercises/eflk.md
rename to topics/eflk.md
diff --git a/exercises/flask_container_ci/README.md b/topics/flask_container_ci/README.md
similarity index 100%
rename from exercises/flask_container_ci/README.md
rename to topics/flask_container_ci/README.md
diff --git a/exercises/flask_container_ci/app/__init__.py b/topics/flask_container_ci/app/__init__.py
similarity index 100%
rename from exercises/flask_container_ci/app/__init__.py
rename to topics/flask_container_ci/app/__init__.py
diff --git a/exercises/flask_container_ci/app/config.py b/topics/flask_container_ci/app/config.py
similarity index 100%
rename from exercises/flask_container_ci/app/config.py
rename to topics/flask_container_ci/app/config.py
diff --git a/exercises/flask_container_ci/app/main.py b/topics/flask_container_ci/app/main.py
similarity index 100%
rename from exercises/flask_container_ci/app/main.py
rename to topics/flask_container_ci/app/main.py
diff --git a/exercises/flask_container_ci/app/tests.py b/topics/flask_container_ci/app/tests.py
similarity index 100%
rename from exercises/flask_container_ci/app/tests.py
rename to topics/flask_container_ci/app/tests.py
diff --git a/exercises/flask_container_ci/requirements.txt b/topics/flask_container_ci/requirements.txt
similarity index 100%
rename from exercises/flask_container_ci/requirements.txt
rename to topics/flask_container_ci/requirements.txt
diff --git a/exercises/flask_container_ci/tests.py b/topics/flask_container_ci/tests.py
similarity index 100%
rename from exercises/flask_container_ci/tests.py
rename to topics/flask_container_ci/tests.py
diff --git a/exercises/flask_container_ci/users.json b/topics/flask_container_ci/users.json
similarity index 100%
rename from exercises/flask_container_ci/users.json
rename to topics/flask_container_ci/users.json
diff --git a/exercises/flask_container_ci2/README.md b/topics/flask_container_ci2/README.md
similarity index 100%
rename from exercises/flask_container_ci2/README.md
rename to topics/flask_container_ci2/README.md
diff --git a/exercises/flask_container_ci2/app/__init__.py b/topics/flask_container_ci2/app/__init__.py
similarity index 100%
rename from exercises/flask_container_ci2/app/__init__.py
rename to topics/flask_container_ci2/app/__init__.py
diff --git a/exercises/flask_container_ci2/app/config.py b/topics/flask_container_ci2/app/config.py
similarity index 100%
rename from exercises/flask_container_ci2/app/config.py
rename to topics/flask_container_ci2/app/config.py
diff --git a/exercises/flask_container_ci2/app/main.py b/topics/flask_container_ci2/app/main.py
similarity index 100%
rename from exercises/flask_container_ci2/app/main.py
rename to topics/flask_container_ci2/app/main.py
diff --git a/exercises/flask_container_ci2/app/tests.py b/topics/flask_container_ci2/app/tests.py
similarity index 100%
rename from exercises/flask_container_ci2/app/tests.py
rename to topics/flask_container_ci2/app/tests.py
diff --git a/exercises/flask_container_ci2/requirements.txt b/topics/flask_container_ci2/requirements.txt
similarity index 100%
rename from exercises/flask_container_ci2/requirements.txt
rename to topics/flask_container_ci2/requirements.txt
diff --git a/exercises/flask_container_ci2/tests.py b/topics/flask_container_ci2/tests.py
similarity index 100%
rename from exercises/flask_container_ci2/tests.py
rename to topics/flask_container_ci2/tests.py
diff --git a/exercises/git/README.md b/topics/git/README.md
similarity index 100%
rename from exercises/git/README.md
rename to topics/git/README.md
diff --git a/exercises/git/branch_01.md b/topics/git/branch_01.md
similarity index 100%
rename from exercises/git/branch_01.md
rename to topics/git/branch_01.md
diff --git a/exercises/git/commit_01.md b/topics/git/commit_01.md
similarity index 100%
rename from exercises/git/commit_01.md
rename to topics/git/commit_01.md
diff --git a/exercises/git/solutions/branch_01_solution.md b/topics/git/solutions/branch_01_solution.md
similarity index 100%
rename from exercises/git/solutions/branch_01_solution.md
rename to topics/git/solutions/branch_01_solution.md
diff --git a/exercises/git/solutions/commit_01_solution.md b/topics/git/solutions/commit_01_solution.md
similarity index 100%
rename from exercises/git/solutions/commit_01_solution.md
rename to topics/git/solutions/commit_01_solution.md
diff --git a/exercises/git/solutions/squashing_commits.md b/topics/git/solutions/squashing_commits.md
similarity index 100%
rename from exercises/git/solutions/squashing_commits.md
rename to topics/git/solutions/squashing_commits.md
diff --git a/exercises/git/squashing_commits.md b/topics/git/squashing_commits.md
similarity index 100%
rename from exercises/git/squashing_commits.md
rename to topics/git/squashing_commits.md
diff --git a/exercises/grafana/README.md b/topics/grafana/README.md
similarity index 100%
rename from exercises/grafana/README.md
rename to topics/grafana/README.md
diff --git a/exercises/jenkins_pipelines.md b/topics/jenkins_pipelines.md
similarity index 100%
rename from exercises/jenkins_pipelines.md
rename to topics/jenkins_pipelines.md
diff --git a/exercises/jenkins_scripts.md b/topics/jenkins_scripts.md
similarity index 100%
rename from exercises/jenkins_scripts.md
rename to topics/jenkins_scripts.md
diff --git a/exercises/kafka/README.md b/topics/kafka/README.md
similarity index 100%
rename from exercises/kafka/README.md
rename to topics/kafka/README.md
diff --git a/exercises/kubernetes/README.md b/topics/kubernetes/README.md
similarity index 100%
rename from exercises/kubernetes/README.md
rename to topics/kubernetes/README.md
diff --git a/exercises/kubernetes/images/kubernetes_components.png b/topics/kubernetes/images/kubernetes_components.png
similarity index 100%
rename from exercises/kubernetes/images/kubernetes_components.png
rename to topics/kubernetes/images/kubernetes_components.png
diff --git a/exercises/kubernetes/images/kubernetes_components_solution.png b/topics/kubernetes/images/kubernetes_components_solution.png
similarity index 100%
rename from exercises/kubernetes/images/kubernetes_components_solution.png
rename to topics/kubernetes/images/kubernetes_components_solution.png
diff --git a/exercises/kubernetes/killing_containers.md b/topics/kubernetes/killing_containers.md
similarity index 100%
rename from exercises/kubernetes/killing_containers.md
rename to topics/kubernetes/killing_containers.md
diff --git a/exercises/kubernetes/pods_01.md b/topics/kubernetes/pods_01.md
similarity index 100%
rename from exercises/kubernetes/pods_01.md
rename to topics/kubernetes/pods_01.md
diff --git a/exercises/kubernetes/replicaset_01.md b/topics/kubernetes/replicaset_01.md
similarity index 100%
rename from exercises/kubernetes/replicaset_01.md
rename to topics/kubernetes/replicaset_01.md
diff --git a/exercises/kubernetes/replicaset_02.md b/topics/kubernetes/replicaset_02.md
similarity index 100%
rename from exercises/kubernetes/replicaset_02.md
rename to topics/kubernetes/replicaset_02.md
diff --git a/exercises/kubernetes/replicaset_03.md b/topics/kubernetes/replicaset_03.md
similarity index 100%
rename from exercises/kubernetes/replicaset_03.md
rename to topics/kubernetes/replicaset_03.md
diff --git a/exercises/kubernetes/services_01.md b/topics/kubernetes/services_01.md
similarity index 100%
rename from exercises/kubernetes/services_01.md
rename to topics/kubernetes/services_01.md
diff --git a/exercises/kubernetes/solutions/killing_containers.md b/topics/kubernetes/solutions/killing_containers.md
similarity index 100%
rename from exercises/kubernetes/solutions/killing_containers.md
rename to topics/kubernetes/solutions/killing_containers.md
diff --git a/exercises/kubernetes/solutions/pods_01_solution.md b/topics/kubernetes/solutions/pods_01_solution.md
similarity index 100%
rename from exercises/kubernetes/solutions/pods_01_solution.md
rename to topics/kubernetes/solutions/pods_01_solution.md
diff --git a/exercises/kubernetes/solutions/replicaset_01_solution.md b/topics/kubernetes/solutions/replicaset_01_solution.md
similarity index 100%
rename from exercises/kubernetes/solutions/replicaset_01_solution.md
rename to topics/kubernetes/solutions/replicaset_01_solution.md
diff --git a/exercises/kubernetes/solutions/replicaset_02_solution.md b/topics/kubernetes/solutions/replicaset_02_solution.md
similarity index 100%
rename from exercises/kubernetes/solutions/replicaset_02_solution.md
rename to topics/kubernetes/solutions/replicaset_02_solution.md
diff --git a/exercises/kubernetes/solutions/replicaset_03_solution.md b/topics/kubernetes/solutions/replicaset_03_solution.md
similarity index 100%
rename from exercises/kubernetes/solutions/replicaset_03_solution.md
rename to topics/kubernetes/solutions/replicaset_03_solution.md
diff --git a/exercises/kubernetes/solutions/services_01_solution.md b/topics/kubernetes/solutions/services_01_solution.md
similarity index 100%
rename from exercises/kubernetes/solutions/services_01_solution.md
rename to topics/kubernetes/solutions/services_01_solution.md
diff --git a/exercises/linux/README.md b/topics/linux/README.md
similarity index 100%
rename from exercises/linux/README.md
rename to topics/linux/README.md
diff --git a/exercises/misc/elk_kibana_aws.md b/topics/misc/elk_kibana_aws.md
similarity index 100%
rename from exercises/misc/elk_kibana_aws.md
rename to topics/misc/elk_kibana_aws.md
diff --git a/exercises/openshift/README.md b/topics/openshift/README.md
similarity index 100%
rename from exercises/openshift/README.md
rename to topics/openshift/README.md
diff --git a/exercises/openshift/projects_101.md b/topics/openshift/projects_101.md
similarity index 100%
rename from exercises/openshift/projects_101.md
rename to topics/openshift/projects_101.md
diff --git a/exercises/openshift/solutions/my_first_app.md b/topics/openshift/solutions/my_first_app.md
similarity index 100%
rename from exercises/openshift/solutions/my_first_app.md
rename to topics/openshift/solutions/my_first_app.md
diff --git a/exercises/openshift/solutions/projects_101.md b/topics/openshift/solutions/projects_101.md
similarity index 100%
rename from exercises/openshift/solutions/projects_101.md
rename to topics/openshift/solutions/projects_101.md
diff --git a/exercises/os/fork_101.md b/topics/os/fork_101.md
similarity index 100%
rename from exercises/os/fork_101.md
rename to topics/os/fork_101.md
diff --git a/exercises/os/fork_102.md b/topics/os/fork_102.md
similarity index 100%
rename from exercises/os/fork_102.md
rename to topics/os/fork_102.md
diff --git a/exercises/os/solutions/fork_101_solution.md b/topics/os/solutions/fork_101_solution.md
similarity index 100%
rename from exercises/os/solutions/fork_101_solution.md
rename to topics/os/solutions/fork_101_solution.md
diff --git a/exercises/os/solutions/fork_102_solution.md b/topics/os/solutions/fork_102_solution.md
similarity index 100%
rename from exercises/os/solutions/fork_102_solution.md
rename to topics/os/solutions/fork_102_solution.md
diff --git a/exercises/perl/README.md b/topics/perl/README.md
similarity index 100%
rename from exercises/perl/README.md
rename to topics/perl/README.md
diff --git a/exercises/pipeline_deploy_image_to_k8.md b/topics/pipeline_deploy_image_to_k8.md
similarity index 100%
rename from exercises/pipeline_deploy_image_to_k8.md
rename to topics/pipeline_deploy_image_to_k8.md
diff --git a/exercises/programming/grep_berfore_and_after.md b/topics/programming/grep_berfore_and_after.md
similarity index 100%
rename from exercises/programming/grep_berfore_and_after.md
rename to topics/programming/grep_berfore_and_after.md
diff --git a/exercises/programming/web_scraper.md b/topics/programming/web_scraper.md
similarity index 100%
rename from exercises/programming/web_scraper.md
rename to topics/programming/web_scraper.md
diff --git a/exercises/python/advanced_data_types.md b/topics/python/advanced_data_types.md
similarity index 100%
rename from exercises/python/advanced_data_types.md
rename to topics/python/advanced_data_types.md
diff --git a/exercises/python/compress_string.md b/topics/python/compress_string.md
similarity index 100%
rename from exercises/python/compress_string.md
rename to topics/python/compress_string.md
diff --git a/exercises/python/data_types.md b/topics/python/data_types.md
similarity index 100%
rename from exercises/python/data_types.md
rename to topics/python/data_types.md
diff --git a/exercises/python/reverse_string.md b/topics/python/reverse_string.md
similarity index 100%
rename from exercises/python/reverse_string.md
rename to topics/python/reverse_string.md
diff --git a/exercises/python/solutions/advanced_data_types_solution.md b/topics/python/solutions/advanced_data_types_solution.md
similarity index 100%
rename from exercises/python/solutions/advanced_data_types_solution.md
rename to topics/python/solutions/advanced_data_types_solution.md
diff --git a/exercises/python/solutions/data_types_solution.md b/topics/python/solutions/data_types_solution.md
similarity index 100%
rename from exercises/python/solutions/data_types_solution.md
rename to topics/python/solutions/data_types_solution.md
diff --git a/exercises/python/solutions/reverse_string.md b/topics/python/solutions/reverse_string.md
similarity index 100%
rename from exercises/python/solutions/reverse_string.md
rename to topics/python/solutions/reverse_string.md
diff --git a/exercises/security/README.md b/topics/security/README.md
similarity index 98%
rename from exercises/security/README.md
rename to topics/security/README.md
index 2fc680bfc..fd3833057 100644
--- a/exercises/security/README.md
+++ b/topics/security/README.md
@@ -409,6 +409,12 @@ CPDoS or Cache Poisoned Denial of Service. It poisons the CDN cache. By manipula
What is the difference if any between SSL and TLS?
+
+What's SSL termination (or SSL offloading)?
+
+SSL termination is the process of decrypting encrypted traffic. The advantage in SSL termination is that the server doesn't have to perform it, we can use SSL termination to reduce the load on the server, speed up some processes, and allow the server to focus on its core functionality (e.g. deliver content)
+
+
What is SNI (Server Name Indication)?
diff --git a/exercises/shell/README.md b/topics/shell/README.md
similarity index 100%
rename from exercises/shell/README.md
rename to topics/shell/README.md
diff --git a/exercises/shell/argument_check.md b/topics/shell/argument_check.md
similarity index 100%
rename from exercises/shell/argument_check.md
rename to topics/shell/argument_check.md
diff --git a/exercises/shell/basic_date.md b/topics/shell/basic_date.md
similarity index 100%
rename from exercises/shell/basic_date.md
rename to topics/shell/basic_date.md
diff --git a/exercises/shell/count_chars.md b/topics/shell/count_chars.md
similarity index 100%
rename from exercises/shell/count_chars.md
rename to topics/shell/count_chars.md
diff --git a/exercises/shell/directories_comparison.md b/topics/shell/directories_comparison.md
similarity index 100%
rename from exercises/shell/directories_comparison.md
rename to topics/shell/directories_comparison.md
diff --git a/exercises/shell/empty_files.md b/topics/shell/empty_files.md
similarity index 100%
rename from exercises/shell/empty_files.md
rename to topics/shell/empty_files.md
diff --git a/exercises/shell/factors.md b/topics/shell/factors.md
similarity index 100%
rename from exercises/shell/factors.md
rename to topics/shell/factors.md
diff --git a/exercises/shell/files_size.md b/topics/shell/files_size.md
similarity index 100%
rename from exercises/shell/files_size.md
rename to topics/shell/files_size.md
diff --git a/exercises/shell/great_day.md b/topics/shell/great_day.md
similarity index 100%
rename from exercises/shell/great_day.md
rename to topics/shell/great_day.md
diff --git a/exercises/shell/hello_world.md b/topics/shell/hello_world.md
similarity index 100%
rename from exercises/shell/hello_world.md
rename to topics/shell/hello_world.md
diff --git a/exercises/shell/host_status.md b/topics/shell/host_status.md
similarity index 100%
rename from exercises/shell/host_status.md
rename to topics/shell/host_status.md
diff --git a/exercises/shell/num_of_args.md b/topics/shell/num_of_args.md
similarity index 100%
rename from exercises/shell/num_of_args.md
rename to topics/shell/num_of_args.md
diff --git a/exercises/shell/print_arguments.md b/topics/shell/print_arguments.md
similarity index 100%
rename from exercises/shell/print_arguments.md
rename to topics/shell/print_arguments.md
diff --git a/exercises/shell/solutions/basic_date.md b/topics/shell/solutions/basic_date.md
similarity index 100%
rename from exercises/shell/solutions/basic_date.md
rename to topics/shell/solutions/basic_date.md
diff --git a/exercises/shell/solutions/count_chars.md b/topics/shell/solutions/count_chars.md
similarity index 100%
rename from exercises/shell/solutions/count_chars.md
rename to topics/shell/solutions/count_chars.md
diff --git a/exercises/shell/solutions/directories_comparison.md b/topics/shell/solutions/directories_comparison.md
similarity index 100%
rename from exercises/shell/solutions/directories_comparison.md
rename to topics/shell/solutions/directories_comparison.md
diff --git a/exercises/shell/solutions/empty_files.md b/topics/shell/solutions/empty_files.md
similarity index 100%
rename from exercises/shell/solutions/empty_files.md
rename to topics/shell/solutions/empty_files.md
diff --git a/exercises/shell/solutions/factors.md b/topics/shell/solutions/factors.md
similarity index 100%
rename from exercises/shell/solutions/factors.md
rename to topics/shell/solutions/factors.md
diff --git a/exercises/shell/solutions/files_size.md b/topics/shell/solutions/files_size.md
similarity index 100%
rename from exercises/shell/solutions/files_size.md
rename to topics/shell/solutions/files_size.md
diff --git a/exercises/shell/solutions/great_day.md b/topics/shell/solutions/great_day.md
similarity index 100%
rename from exercises/shell/solutions/great_day.md
rename to topics/shell/solutions/great_day.md
diff --git a/exercises/shell/solutions/hello_world.md b/topics/shell/solutions/hello_world.md
similarity index 100%
rename from exercises/shell/solutions/hello_world.md
rename to topics/shell/solutions/hello_world.md
diff --git a/exercises/shell/solutions/host_status.md b/topics/shell/solutions/host_status.md
similarity index 100%
rename from exercises/shell/solutions/host_status.md
rename to topics/shell/solutions/host_status.md
diff --git a/exercises/shell/solutions/num_of_args.md b/topics/shell/solutions/num_of_args.md
similarity index 100%
rename from exercises/shell/solutions/num_of_args.md
rename to topics/shell/solutions/num_of_args.md
diff --git a/exercises/shell/solutions/sum.md b/topics/shell/solutions/sum.md
similarity index 100%
rename from exercises/shell/solutions/sum.md
rename to topics/shell/solutions/sum.md
diff --git a/exercises/shell/sum.md b/topics/shell/sum.md
similarity index 100%
rename from exercises/shell/sum.md
rename to topics/shell/sum.md
diff --git a/exercises/soft_skills/README.md b/topics/soft_skills/README.md
similarity index 100%
rename from exercises/soft_skills/README.md
rename to topics/soft_skills/README.md
diff --git a/exercises/software_development/README.md b/topics/software_development/README.md
similarity index 100%
rename from exercises/software_development/README.md
rename to topics/software_development/README.md
diff --git a/exercises/sql/improve_query.md b/topics/sql/improve_query.md
similarity index 100%
rename from exercises/sql/improve_query.md
rename to topics/sql/improve_query.md
diff --git a/exercises/sql/solutions/improve_query.md b/topics/sql/solutions/improve_query.md
similarity index 100%
rename from exercises/sql/solutions/improve_query.md
rename to topics/sql/solutions/improve_query.md
diff --git a/exercises/terraform/README.md b/topics/terraform/README.md
similarity index 92%
rename from exercises/terraform/README.md
rename to topics/terraform/README.md
index 5a10748de..c78df1802 100644
--- a/exercises/terraform/README.md
+++ b/topics/terraform/README.md
@@ -21,7 +21,7 @@
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Local Provider | Basics | [Exercise](terraform_local_provider/exercise.md) | [Solution](terraform_local_provider/solution.md) | |
+| Local Provider | Basics | [Exercise](exercises/terraform_local_provider/exercise.md) | [Solution](exercises/terraform_local_provider/solution.md) | |
### AWS
@@ -29,8 +29,8 @@
|Name|Topic|Objective & Instructions|Solution|Comments|
|--------|--------|------|----|----|
-| Launch EC2 web instance | EC2 | [Exercise](launch_ec2_web_instance/exercise.md) | [Solution](launch_ec2_web_instance/solution.md) | |
-| Rename S3 bucket | S3 | [Exercise](s3_bucket_rename/exercise.md) | [Solution](s3_bucket_rename/solution.md) | |
+| Launch EC2 instance | EC2 | [Exercise](exercises/launch_ec2_instance/exercise.md) | [Solution](exercises/launch_ec2_instance/solution.md) | |
+| Rename S3 bucket | S3 | [Exercise](exercises/s3_bucket_rename/exercise.md) | [Solution](exercises/s3_bucket_rename/solution.md) | |
## Questions
@@ -99,9 +99,39 @@ In the [Terraform Registry](https://registry.terraform.io/browse/providers)
-What is the name of the provider in this case: `resource "libvirt_domain" "instance" {...}`
+What are the names of the providers in this case?
-libvirt
+```
+terraform {
+ required_providers {
+ aws = {
+ source = "hashicorp/aws"
+ }
+ azurer = {
+ source = "hashicorp/azurerm"
+ version = "~> 3.0.2"
+ }
+ }
+ }
+```
+
+
+azurerm and aws
+
+
+
+True or False? Applying the following Terraform configuration will fail since no source or version specific for 'aws' provider
+
+```
+terraform {
+ required_providers {
+ aws = {}
+ }
+ }
+```
+
+
+False. It will look for "aws" provider in the public Terraform registry and will take the latest version.
@@ -126,6 +156,12 @@ provider "aws" {
```
+
+Where Terraform installs providers from by default?
+
+By default Terraform providers are installed from Terraform Registry
+
+
What is the Terraform Registry?
@@ -386,6 +422,18 @@ z = "luigi"
It keeps track of the IDs of created resources so that Terraform knows what it's managing.
+
+How to inspect current state?
+
+terraform show
+
+
+
+How to list resources created with Terraform?
+
+terraform state list
+
+
How do you rename an existing resource?
@@ -482,4 +530,6 @@ It's does NOT create the definitions/configuration for creating such infrastruct
### Real Life Scenarios
-TODO
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/topics/terraform/exercises/launch_ec2_instance/exercise.md b/topics/terraform/exercises/launch_ec2_instance/exercise.md
new file mode 100644
index 000000000..8aebf53ca
--- /dev/null
+++ b/topics/terraform/exercises/launch_ec2_instance/exercise.md
@@ -0,0 +1,12 @@
+# Launch EC2 instance
+
+## Reuqirements
+
+* AWS account
+
+## Objectives
+
+1. Write Terraform configuration for launching an EC2 instance
+2. Run the commands to apply the configuration and create the EC2 instance
+3. What happens if you run again `terraform apply`?
+4. Destroy the instance you've created with Terraform
\ No newline at end of file
diff --git a/topics/terraform/exercises/launch_ec2_instance/solution.md b/topics/terraform/exercises/launch_ec2_instance/solution.md
new file mode 100644
index 000000000..734baf497
--- /dev/null
+++ b/topics/terraform/exercises/launch_ec2_instance/solution.md
@@ -0,0 +1,65 @@
+# Launch EC2 instance
+
+## Reuqirements
+
+* AWS account
+
+## Objectives
+
+1. Write Terraform configuration for launching an EC2 instance
+2. Run the commands to apply the configuration and create the EC2 instance
+3. What happens if you run again `terraform apply`?
+4. Destroy the instance you've created with Terraform
+
+## Solution
+
+```
+mkdir exercise
+
+cat << EOT >> main.tf
+terraform {
+ required_providers {
+ aws = {
+ source = "hashicorp/aws"
+ version = "~> 4.16"
+ }
+ }
+
+ required_version = ">= 1.2.0"
+}
+
+provider "aws" {
+ region = "us-west-2"
+}
+
+resource "aws_instance" "app_server" {
+ ami = "ami-830c94e3"
+ instance_type = "t2.micro"
+
+ tags = {
+ Name = "ExampleAppServerInstance"
+ }
+}
+EOT
+
+terraform init
+terraform validate
+terraform plan
+
+# You should see this line at the end: Plan: 1 to add, 0 to change, 0 to destroy
+
+terraform apply -auto-approve
+
+# You should see the following output:
+# aws_instance.app_server: Creation complete after 49s [id=i-004651a9d4427d236
+
+# Running 'terraform apply' again won't change anything as
+# Terraform will compare actual infrastructure to your
+# configuration and won't find any difference. You should see the following line:
+# Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
+
+# Remove instance
+terraform destroy -auto-approve
+
+# Destroy complete! Resources: 1 destroyed.
+```
\ No newline at end of file
diff --git a/exercises/terraform/launch_ec2_web_instance/exercise.md b/topics/terraform/exercises/launch_ec2_web_instance/exercise.md
similarity index 100%
rename from exercises/terraform/launch_ec2_web_instance/exercise.md
rename to topics/terraform/exercises/launch_ec2_web_instance/exercise.md
diff --git a/exercises/terraform/s3_bucket_rename/exercise.md b/topics/terraform/exercises/s3_bucket_rename/exercise.md
similarity index 100%
rename from exercises/terraform/s3_bucket_rename/exercise.md
rename to topics/terraform/exercises/s3_bucket_rename/exercise.md
diff --git a/exercises/terraform/s3_bucket_rename/solution.md b/topics/terraform/exercises/s3_bucket_rename/solution.md
similarity index 100%
rename from exercises/terraform/s3_bucket_rename/solution.md
rename to topics/terraform/exercises/s3_bucket_rename/solution.md
diff --git a/exercises/terraform/terraform_local_provider/exercise.md b/topics/terraform/exercises/terraform_local_provider/exercise.md
similarity index 100%
rename from exercises/terraform/terraform_local_provider/exercise.md
rename to topics/terraform/exercises/terraform_local_provider/exercise.md
diff --git a/exercises/terraform/terraform_local_provider/solution.md b/topics/terraform/exercises/terraform_local_provider/solution.md
similarity index 100%
rename from exercises/terraform/terraform_local_provider/solution.md
rename to topics/terraform/exercises/terraform_local_provider/solution.md
diff --git a/exercises/zuul/README.md b/topics/zuul/README.md
similarity index 100%
rename from exercises/zuul/README.md
rename to topics/zuul/README.md