Skip to content
Snippets Groups Projects
README.md 2.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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
    ```