Skip to content
Snippets Groups Projects
README.md 2.3 KiB
Newer Older
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed
# Alpha Project Manager

Nathan Rodet's avatar
Nathan Rodet committed
An infrastructure as code manager working with gitlab and scaleway.

Nathan Rodet's avatar
Nathan Rodet committed
## Setup Terraform Locally

Nathan Rodet's avatar
Nathan Rodet committed
First, you must setup 2 local files for your variables :

### variables-local.tf 
Nathan Rodet's avatar
Nathan Rodet committed

Create a file **variables-local.tf** containing the following code :
```hcl
variable "FORGE_PROJECT_ID" {
  type        = string
  description = "Forge Project ID"
  default     = "your project id"
  sensitive   = true
}

variable "FORGE_USERNAME" {
  type        = string
  description = "Forge Username"
  default     = "your username"
  sensitive   = true
}

variable "FORGE_ACCESS_TOKEN" {
  type        = string
  description = "Forge Access Token"
  default     = "your access token"
  sensitive   = true
}
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed
```
Nathan Rodet's avatar
Nathan Rodet committed
### variables-local.tfvars
Nathan Rodet's avatar
Nathan Rodet committed

Now, you can create a file for your variables information called **variables-local.tfvars** containing the following code :
```hcl
### SCW variables

SCW_PROJECT_ID         = ""
SCW_ACCESS_KEY         = ""
SCW_SECRET_KEY         = ""
SCW_SSH_PUB_KEY        = ""
SCW_SSH_PRIVATE_KEY    = ""
INSTANCES_COUNT        = "2"
ENVIRONMENT            = "devrust"
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed
```

Nathan Rodet's avatar
Nathan Rodet committed
### Terraform init - Gitlab remote tfstate

You can grab a init command from your gitlab project on menu Infrastructure > Terraform.
Select your environment and click the actions button, then you will only need to provide a gitlab project token.
Command should look like :
```bash
export GITLAB_ACCESS_TOKEN=<YOUR-ACCESS-TOKEN>
terraform init \
    -backend-config="address=https://forge.grandlyon.com/api/v4/projects/875/terraform/state/devrust" \
    -backend-config="lock_address=https://forge.grandlyon.com/api/v4/projects/875/terraform/state/devrust/lock" \
    -backend-config="unlock_address=https://forge.grandlyon.com/api/v4/projects/875/terraform/state/devrust/lock" \
    -backend-config="username=xxxxxxx" \
    -backend-config="password=$GITLAB_ACCESS_TOKEN" \
    -backend-config="lock_method=POST" \
    -backend-config="unlock_method=DELETE" \
    -backend-config="retry_wait_min=5"

terraform init -var-file=variables-local.tfvars
```
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed

Nathan Rodet's avatar
Nathan Rodet committed
### Terraform plan - With variables file
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed

Nathan Rodet's avatar
Nathan Rodet committed
```bash
terraform plan -var-file=variables-local.tfvars -out=tfplan
```
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed

Nathan Rodet's avatar
Nathan Rodet committed
### Terraform apply - With plan
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed

Nathan Rodet's avatar
Nathan Rodet committed
```bash
terraform apply tfplan
```
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed

Nathan Rodet's avatar
Nathan Rodet committed
### Terraform destroy - With variables file
Nicolas PERNOUD's avatar
Nicolas PERNOUD committed

Nathan Rodet's avatar
Nathan Rodet committed
```bash
terraform destroy -var-file=variables-local.tfvars
```