Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update README.md with instructions for local environment setup #26

Merged
merged 3 commits into from
Sep 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Set up a Local Development Environment

As mentioned in the Usage section of the readme, the [cdp-tf-quickstarts](https://github.com/cloudera-labs/cdp-tf-quickstarts) repository demonstrates how to deploy CDP end-to-end in a simplified way, using the modules in this repository. If you would like to customize your setup however, you may want to change some of the module code. To make sure you can test your changes locally and create customized deployments, we recommend the following setup:

1. Create a directory called `tf` and clone the Quickstart module repository

```bash
mkdir tf
cd tf
git clone https://github.com/cloudera-labs/cdp-tf-quickstarts.git
```

This will result in the directory structure below:

```bash
tree -L 4
.
└── tf
└── cdp-tf-quickstarts
├── LICENSE
├── README.md
├── aws
│ ├── main.tf
│ ├── terraform.tfvars.template
│ └── variables.tf
└── azure
├── main.tf
├── terraform.tfvars.template
└── variables.tf
```

The cdp-tf-quickstarts module consists of these few files only. This is achieved by loading the required submodules dynamically in the `main.tf` file:

```bash
module "cdp_aws_prereqs" {
source = "git::https://github.com/cloudera-labs/terraform-cdp-modules.git//modules/terraform-cdp-aws-pre-reqs?ref=v0.1.0"
}
```

2. For a local development environment these modules should be present locally. Make sure we are in the same project folder as earlier and clone this repository

```bash
cd ~/tf
git clone https://github.com/cloudera-labs/terraform-cdp-modules.git
```

This will result in the following directory structure with the two cloned repositories:

```bash
cd ~
tree -L 4
.
└── tf
├── cdp-tf-quickstarts
│ ├── LICENSE
│ ├── README.md
│ ├── aws
│ │ ├── main.tf
│ │ ├── terraform.tfvars.template
│ │ └── variables.tf
│ └── azure
│ ├── main.tf
│ ├── terraform.tfvars.template
│ └── variables.tf
└── terraform-cdp-modules
├── LICENSE
├── README.md
└── modules
├── terraform-cdp-aws-pre-reqs
├── terraform-cdp-azure-pre-reqs
└── terraform-cdp-deploy
```

3. The last step for setting up the local cdependencies is to link the two modules. To do this, simply edit the two main.tf files of the cdp-tf-quickstarts module.

## AWS

```bash
vi ~/tf/cdp-tf-quickstarts/aws/main.tf

# Change the first line of code in both "module" blocks:

# from
source = "git::https://github.com/cloudera-labs/terraform-cdp-modules.git//modules/terraform-cdp-aws-pre-reqs?ref=v0.2.0"
# to
source = "../../terraform-cdp-modules/modules/terraform-cdp-aws-pre-reqs"
# and from
source = "git::https://github.com/cloudera-labs/terraform-cdp-modules.git//modules/terraform-cdp-deploy?ref=v0.2.0"
# to
source = "../../terraform-cdp-modules/modules/terraform-cdp-deploy"
```

#### Azure
Same as above, just change the first module’s source to `source = "../../terraform-cdp-modules/modules/terraform-cdp-azure-pre-reqs"`
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,7 @@ Configure Terraform Provider for AWS or Azure
* To create resources in the Cloud Provider, access credentials or service account are needed for authentication.
* For **AWS** access keys are required to be able to create the Cloud resources via the Terraform aws provider. See the [AWS Terraform Provider Documentation](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#authentication-and-configuration).
* For **Azure**, authentication with the Azure subscription is required. There are a number of ways to do this outlined in the [Azure Terraform Provider Documentation](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs#authenticating-to-azure).

## Local Development Environment

See the [DEVELOPMENT.md](./DEVELOPMENT.md) file for instructions on how to set up an environment for local development of modules.