The Capstone BCDR Project aims to create a reliable, scalable cloud infrastructure for Business Continuity and Disaster Recovery (BCDR) using Terraform. This project automates the provisioning of essential resources in Microsoft Azure, such as Recovery Services Vaults, Resource Groups, Virtual Networks, and Virtual Machines—key components for disaster recovery planning. The goal is to ensure high availability and resilience in case of system failures or disasters by leveraging Azure's cloud infrastructure.
To get this project up and running on your local system, follow the steps below.
Before you can run this project, make sure you have the following software installed:
You will need Visual Studio Code (VS Code) as your code editor. Follow the installation instructions from the official Visual Studio Code website.
You need to have Terraform installed to manage infrastructure. To install Terraform:
-
Go to the Terraform download page and choose the appropriate version for your OS.
- macOS (Homebrew):
bash brew install terraform
- Windows (via Chocolatey):
bash choco install terraform
- Linux (via apt):
bash sudo apt-get install terraform
You also need to install the Azure CLI to interact with Microsoft Azure:
- Go to the Azure CLI installation page and follow the instructions for your operating system.
Once installed, you can verify the installation by running: bash az --version
Before running Terraform, you'll need to configure your Azure environment and authenticate with Azure CLI. To authenticate:
az login
This will open a browser window asking you to log in to your Azure account.
Run the following command in the root directory of this repository to initialize Terraform:
terraform init
This will download the necessary provider plugins and prepare the workspace.
Here’s a breakdown of the repository structure:
.
├── main.tf # Main Terraform configuration file
├── variables.tf # Variables for Terraform configuration
├── outputs.tf # Outputs from the Terraform execution
├── README.md # Project documentation
└── .gitignore # Git ignore file to exclude sensitive files
- main.tf: This file contains the main configuration for deploying the Azure resources (Recovery Vault, Virtual Machines, etc.).
- variables.tf: Defines the variables used in the main configuration to make the project modular and flexible.
- outputs.tf: Specifies the output values from Terraform execution, such as the public IP of the deployed virtual machines.
To deploy the resources in Azure:
-
Run the following command to create an execution plan:
terraform plan
-
Apply the changes to create the resources in Azure:
terraform apply
This will provision the necessary resources such as Resource Groups, Recovery Vaults, and Virtual Machines in your Azure environment.
Contributions to this repository are welcome. To contribute:
- Fork this repository
- Create a new branch (
git checkout -b feature-branch
) - Make your changes
- Commit your changes (
git commit -m 'Add new feature'
) - Push to your forked repository (
git push origin feature-branch
) - Open a pull request
Please ensure that your code adheres to the project’s coding standards and includes adequate documentation.
This project is licensed under the MIT License - see the LICENSE file for details.
- Microsoft Azure: For providing the platform and services for the project.
- Terraform: For enabling infrastructure-as-code to automate cloud provisioning.
- Mentors and Advisors: For guidance and feedback during the development process of this project.