You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _docs-sources/iac/overview/index.md
+6-12Lines changed: 6 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,24 +4,18 @@ The Gruntwork Infrastructure as Code Library (IaC Library) is a collection of re
4
4
5
5
## Modules
6
6
7
-
Modules are reusable code components that are used to deploy and manage specific pieces of infrastructure. These modules encapsulate the configuration and resource definitions required to create and manage a particular component, such as a VPC, ECS cluster, or an Auto Scaling Group. For more information on modules check out the [Modules page](/iac/overview/modules/).
7
+
Modules are "infrastructure building blocks" authored by Gruntwork and written in Terraform. They capture a singular best-practice pattern for specific pieces of infrastructure and are designed to be both limited in scope and highly reusable. They typically represent one part of a use case you want to accomplish. For example, the `vpc-flow-logs` module does not create a VPC, it only adds the VPC Flow Logs functionality to an existing VPC. To learn more, refer to [What is a module?](/iac/overview/modules/).
8
8
9
9
## Services
10
10
11
-
Services in the service catalog are reusable code that combines multiple modules from the IaC Library, simplifying the deployment and management of complex infrastructure configurations. Rather than dealing with individual modules and their dependencies, users can directly deploy services tailored for a particular use case.
12
-
13
-
For more information on the service catalog check out the [Services page](/iac/overview/services/).
11
+
Service modules are opinionated combinations of the "building block" modules described above. They are designed to be used "off the shelf" with no need to assemble a collection of “building block” modules on your own. They typically represent a full use case. For example, the `vpc` service module deploys a VPC, VPC Flow Logs, and Network ACLs. If you agree with the opinions embedded in a service module, they’re the fastest way to deploy production-grade infrastructure. To learn more, check [What is a service module?](/iac/overview/services/).
14
12
15
13
## Tools used in the IaC Library
16
14
17
-
The Gruntwork IaC Library is deployed using the following tools:
15
+
The Gruntwork IaC Library has been created using the following tools:
18
16
19
-
1.[Terraform](https://www.terraform.io/). Used to define and manage most of the basic infrastructure, such as servers, databases, load balancers, and networking. The Gruntwork Service Catalog is compatible with vanilla [Terraform](https://www.terraform.io/), [Terragrunt](https://terragrunt.gruntwork.io/), [Terraform
20
-
Cloud](https://www.hashicorp.com/blog/announcing-terraform-cloud/), and [Terraform
1.[Terraform](https://www.terraform.io/). The Library contains nearly 300 Terraform modules that cover a range of common use cases in AWS. All library modules can be used with vanilla [Terraform](https://www.terraform.io/), [Terragrunt](https://terragrunt.gruntwork.io/), or third-party Terraform pipeline tools such as [Terraform Cloud](https://www.hashicorp.com/blog/announcing-terraform-cloud/) and [Terraform Enterprise](https://www.terraform.io/docs/enterprise/index.html).
22
18
23
-
1.[Packer](https://www.packer.io/). Used to define and manage _machine images_ (e.g., VM images). The main use case is
24
-
to package code as [Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)
25
-
that run on EC2 instances. Once you’ve built an AMI, you use Terraform to deploy it into AWS.
19
+
1.[Packer](https://www.packer.io/). The Library defines _machine images_ (e.g., VM images) using Packer, where the main use case is building Amazon Machine Images (AMIs) that run on EC2 instances whose configuration is all defined in code. Once you’ve built an AMI, you can use Terraform to deploy it into AWS.
26
20
27
-
1.[Terratest](https://terratest.gruntwork.io/). Used for automated testing of modules and services.
21
+
1.[Terratest](https://terratest.gruntwork.io/). All modules are functionally validated with automated tests written using Terratest.
Copy file name to clipboardExpand all lines: _docs-sources/iac/overview/modules.md
+10-2Lines changed: 10 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,17 @@
1
-
# What is a Module?
1
+
# What is a module?
2
2
3
-
Modules are reusable code components that encapsulate the configuration and resource definitions needed to deploy and manage a specific piece of infrastructure, such as a VPC, ECS cluster, or Auto Scaling Group. Each module defines several AWS resources. For example, the VPC module contains resource definitions for subnets, NAT gateways, and more. Modules promote code reusability, modularity, and consistency in infrastructure deployments and can be customized in a variety of ways.
3
+
Modules are reusable "infrastructure building blocks" that encapsulate the configuration and resource definitions needed to deploy and manage a specific piece of infrastructure, such as a VPC, ECS cluster, or Auto Scaling Group. Each module defines several AWS resources. For example, the VPC module contains resource definitions for subnets, NAT gateways, and more. Modules promote code reusability, modularity, and consistency in infrastructure deployments and can be customized in a variety of ways.
4
4
5
5
Gruntwork modules are tested in AWS, in a randomly selected region, each time it changes to verify the infrastructure created matches the desired configuration.
6
6
7
+
## Example
8
+
9
+
Let’s look at an example module. The [rds module](/reference/modules/terraform-aws-data-storage/rds/) creates an RDS database, the IAM roles needed to operate that database, optional read replicas, database subnet groups, and the relevant security groups.
10
+
11
+
The module is written in Terraform and is a key element of an overall RDS deployment, but it's not a _complete_ RDS deployment. That's because the `rds` module does not include backup policies using AWS Backup, or RDS Proxy (to pool database connections), or CloudWatch alarms (to alert you when something goes wrong). These missing pieces are best thought of as building block modules themselves! Indeed, `backup-plan`, `backup-vault`, and `rds-proxy` can all be used in combination with the `rds` module.
12
+
13
+
To see how Gruntwork gives you an off-the-shelf overall deployment with all the elements included, see [What is a service module?](services).
14
+
7
15
## When should I use a module?
8
16
9
17
The Gruntwork Infrastructure as Code (IaC) Library contains [hundreds of modules](/iac/reference/) that you can use and combine. These modules are fairly generic building blocks, so you don’t typically deploy a single module directly. Instead, you write code that combines the modules you need for a specific use case.
Copy file name to clipboardExpand all lines: _docs-sources/iac/overview/services.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
-
# What is a Service?
1
+
# What is a service module?
2
2
3
3
The Gruntwork Service Catalog consists of a number of customizable, production-grade infrastructure-as-code services that you can use to deploy and manage your infrastructure. This includes Docker orchestration, EC2 orchestration, load balancing, networking, databases, caches, monitoring, alerting, CI/CD, secrets management, VPN, and much more. Services combine multiple modules to configure an end-to-end solution.
4
4
5
5
## When should I use a service?
6
6
7
-
Using a service can save you time piecing together individual modules and testing that they’re correctly referencing each other. These are designed for specific use cases such as EKS and ECS clusters, VPCs with public and private subnets, and databases.
7
+
Using a service can save you time piecing together individual modules and testing that they’re correctly referencing each other. These are designed for specific use cases such as EKS and ECS clusters, VPCs with public and private subnets, and databases.
8
8
9
9
For example, the `eks-cluster` service combines all the modules you need to run an EKS (Kubernetes) cluster in a typical production environment, including modules for the control plane, worker nodes, secrets management, log aggregation, alerting, and so on.
10
10
@@ -32,7 +32,7 @@ The code in the `terraform-aws-service-catalog` repo is organized into three pri
32
32
is NOT required to use the Gruntwork Service Catalog: you can alternatively use vanilla Terraform or Terraform
33
33
Cloud / Enterprise, as described [here](https://docs.gruntwork.io/reference/services/intro/deploy-new-infrastructure#how-to-deploy-terraform-code-from-the-service-catalog).
34
34
35
-
1. Not all modules have a `for-production` example, but you can still create a production-grade configuration by
35
+
1. Not all modules have a `for-production` example, but you can still create a production-grade configuration by
36
36
using the template provided in this discussion question, [How do I use the modules in terraform-aws-service-catalog
37
37
if there is no example?](https://github.com/gruntwork-io/knowledge-base/discussions/360#discussioncomment-25705480).
Copy file name to clipboardExpand all lines: docs/iac/overview/index.md
+7-13Lines changed: 7 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,32 +4,26 @@ The Gruntwork Infrastructure as Code Library (IaC Library) is a collection of re
4
4
5
5
## Modules
6
6
7
-
Modules are reusable code components that are used to deploy and manage specific pieces of infrastructure. These modules encapsulate the configuration and resource definitions required to create and manage a particular component, such as a VPC, ECS cluster, or an Auto Scaling Group. For more information on modules check out the [Modules page](/iac/overview/modules/).
7
+
Modules are "infrastructure building blocks" authored by Gruntwork and written in Terraform. They capture a singular best-practice pattern for specific pieces of infrastructure and are designed to be both limited in scope and highly reusable. They typically represent one part of a use case you want to accomplish. For example, the `vpc-flow-logs` module does not create a VPC, it only adds the VPC Flow Logs functionality to an existing VPC. To learn more, refer to [What is a module?](/iac/overview/modules/).
8
8
9
9
## Services
10
10
11
-
Services in the service catalog are reusable code that combines multiple modules from the IaC Library, simplifying the deployment and management of complex infrastructure configurations. Rather than dealing with individual modules and their dependencies, users can directly deploy services tailored for a particular use case.
12
-
13
-
For more information on the service catalog check out the [Services page](/iac/overview/services/).
11
+
Service modules are opinionated combinations of the "building block" modules described above. They are designed to be used "off the shelf" with no need to assemble a collection of “building block” modules on your own. They typically represent a full use case. For example, the `vpc` service module deploys a VPC, VPC Flow Logs, and Network ACLs. If you agree with the opinions embedded in a service module, they’re the fastest way to deploy production-grade infrastructure. To learn more, check [What is a service module?](/iac/overview/services/).
14
12
15
13
## Tools used in the IaC Library
16
14
17
-
The Gruntwork IaC Library is deployed using the following tools:
15
+
The Gruntwork IaC Library has been created using the following tools:
18
16
19
-
1.[Terraform](https://www.terraform.io/). Used to define and manage most of the basic infrastructure, such as servers, databases, load balancers, and networking. The Gruntwork Service Catalog is compatible with vanilla [Terraform](https://www.terraform.io/), [Terragrunt](https://terragrunt.gruntwork.io/), [Terraform
20
-
Cloud](https://www.hashicorp.com/blog/announcing-terraform-cloud/), and [Terraform
1.[Terraform](https://www.terraform.io/). The Library contains nearly 300 Terraform modules that cover a range of common use cases in AWS. All library modules can be used with vanilla [Terraform](https://www.terraform.io/), [Terragrunt](https://terragrunt.gruntwork.io/), or third-party Terraform pipeline tools such as [Terraform Cloud](https://www.hashicorp.com/blog/announcing-terraform-cloud/) and [Terraform Enterprise](https://www.terraform.io/docs/enterprise/index.html).
22
18
23
-
1.[Packer](https://www.packer.io/). Used to define and manage _machine images_ (e.g., VM images). The main use case is
24
-
to package code as [Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)
25
-
that run on EC2 instances. Once you’ve built an AMI, you use Terraform to deploy it into AWS.
19
+
1.[Packer](https://www.packer.io/). The Library defines _machine images_ (e.g., VM images) using Packer, where the main use case is building Amazon Machine Images (AMIs) that run on EC2 instances whose configuration is all defined in code. Once you’ve built an AMI, you can use Terraform to deploy it into AWS.
26
20
27
-
1.[Terratest](https://terratest.gruntwork.io/). Used for automated testing of modules and services.
21
+
1.[Terratest](https://terratest.gruntwork.io/). All modules are functionally validated with automated tests written using Terratest.
Copy file name to clipboardExpand all lines: docs/iac/overview/modules.md
+11-3Lines changed: 11 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,17 @@
1
-
# What is a Module?
1
+
# What is a module?
2
2
3
-
Modules are reusable code components that encapsulate the configuration and resource definitions needed to deploy and manage a specific piece of infrastructure, such as a VPC, ECS cluster, or Auto Scaling Group. Each module defines several AWS resources. For example, the VPC module contains resource definitions for subnets, NAT gateways, and more. Modules promote code reusability, modularity, and consistency in infrastructure deployments and can be customized in a variety of ways.
3
+
Modules are reusable "infrastructure building blocks" that encapsulate the configuration and resource definitions needed to deploy and manage a specific piece of infrastructure, such as a VPC, ECS cluster, or Auto Scaling Group. Each module defines several AWS resources. For example, the VPC module contains resource definitions for subnets, NAT gateways, and more. Modules promote code reusability, modularity, and consistency in infrastructure deployments and can be customized in a variety of ways.
4
4
5
5
Gruntwork modules are tested in AWS, in a randomly selected region, each time it changes to verify the infrastructure created matches the desired configuration.
6
6
7
+
## Example
8
+
9
+
Let’s look at an example module. The [rds module](/reference/modules/terraform-aws-data-storage/rds/) creates an RDS database, the IAM roles needed to operate that database, optional read replicas, database subnet groups, and the relevant security groups.
10
+
11
+
The module is written in Terraform and is a key element of an overall RDS deployment, but it's not a _complete_ RDS deployment. That's because the `rds` module does not include backup policies using AWS Backup, or RDS Proxy (to pool database connections), or CloudWatch alarms (to alert you when something goes wrong). These missing pieces are best thought of as building block modules themselves! Indeed, `backup-plan`, `backup-vault`, and `rds-proxy` can all be used in combination with the `rds` module.
12
+
13
+
To see how Gruntwork gives you an off-the-shelf overall deployment with all the elements included, see [What is a service module?](services).
14
+
7
15
## When should I use a module?
8
16
9
17
The Gruntwork Infrastructure as Code (IaC) Library contains [hundreds of modules](/iac/reference/) that you can use and combine. These modules are fairly generic building blocks, so you don’t typically deploy a single module directly. Instead, you write code that combines the modules you need for a specific use case.
@@ -27,6 +35,6 @@ We follow Hashicorp's [Standard Model Structure](https://developer.hashicorp.com
Copy file name to clipboardExpand all lines: docs/iac/overview/services.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
-
# What is a Service?
1
+
# What is a service module?
2
2
3
3
The Gruntwork Service Catalog consists of a number of customizable, production-grade infrastructure-as-code services that you can use to deploy and manage your infrastructure. This includes Docker orchestration, EC2 orchestration, load balancing, networking, databases, caches, monitoring, alerting, CI/CD, secrets management, VPN, and much more. Services combine multiple modules to configure an end-to-end solution.
4
4
5
5
## When should I use a service?
6
6
7
-
Using a service can save you time piecing together individual modules and testing that they’re correctly referencing each other. These are designed for specific use cases such as EKS and ECS clusters, VPCs with public and private subnets, and databases.
7
+
Using a service can save you time piecing together individual modules and testing that they’re correctly referencing each other. These are designed for specific use cases such as EKS and ECS clusters, VPCs with public and private subnets, and databases.
8
8
9
9
For example, the `eks-cluster` service combines all the modules you need to run an EKS (Kubernetes) cluster in a typical production environment, including modules for the control plane, worker nodes, secrets management, log aggregation, alerting, and so on.
10
10
@@ -32,7 +32,7 @@ The code in the `terraform-aws-service-catalog` repo is organized into three pri
32
32
is NOT required to use the Gruntwork Service Catalog: you can alternatively use vanilla Terraform or Terraform
33
33
Cloud / Enterprise, as described [here](https://docs.gruntwork.io/reference/services/intro/deploy-new-infrastructure#how-to-deploy-terraform-code-from-the-service-catalog).
34
34
35
-
1. Not all modules have a `for-production` example, but you can still create a production-grade configuration by
35
+
1. Not all modules have a `for-production` example, but you can still create a production-grade configuration by
36
36
using the template provided in this discussion question, [How do I use the modules in terraform-aws-service-catalog
37
37
if there is no example?](https://github.com/gruntwork-io/knowledge-base/discussions/360#discussioncomment-25705480).
38
38
@@ -41,6 +41,6 @@ The code in the `terraform-aws-service-catalog` repo is organized into three pri
0 commit comments