Sanitize company references and update Vault/Grafana endpoints
This commit is contained in:
@ -42,12 +42,14 @@ jobs:
|
|||||||
- name: Terraform init (no backend)
|
- name: Terraform init (no backend)
|
||||||
working-directory: ${{ env.WORKDIR }}
|
working-directory: ${{ env.WORKDIR }}
|
||||||
env:
|
env:
|
||||||
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
run: terraform init
|
run: terraform init
|
||||||
|
|
||||||
- name: Terraform validate
|
- name: Terraform validate
|
||||||
working-directory: ${{ env.WORKDIR }}
|
working-directory: ${{ env.WORKDIR }}
|
||||||
env:
|
env:
|
||||||
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
run: terraform validate
|
run: terraform validate
|
||||||
|
|
||||||
@ -61,12 +63,14 @@ jobs:
|
|||||||
- name: Terraform init (no backend)
|
- name: Terraform init (no backend)
|
||||||
working-directory: ${{ env.WORKDIR }}
|
working-directory: ${{ env.WORKDIR }}
|
||||||
env:
|
env:
|
||||||
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
run: terraform init
|
run: terraform init
|
||||||
|
|
||||||
- name: Terraform plan
|
- name: Terraform plan
|
||||||
working-directory: ${{ env.WORKDIR }}
|
working-directory: ${{ env.WORKDIR }}
|
||||||
env:
|
env:
|
||||||
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
run: terraform plan -refresh=false -lock=false -out=tfplan
|
run: terraform plan -refresh=false -lock=false -out=tfplan
|
||||||
|
|
||||||
@ -81,11 +85,13 @@ jobs:
|
|||||||
- name: Terraform init (no backend)
|
- name: Terraform init (no backend)
|
||||||
working-directory: ${{ env.WORKDIR }}
|
working-directory: ${{ env.WORKDIR }}
|
||||||
env:
|
env:
|
||||||
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
run: terraform init
|
run: terraform init
|
||||||
|
|
||||||
- name: Terraform apply (manual trigger)
|
- name: Terraform apply (manual trigger)
|
||||||
working-directory: ${{ env.WORKDIR }}
|
working-directory: ${{ env.WORKDIR }}
|
||||||
env:
|
env:
|
||||||
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
run: terraform apply -refresh=false -lock=false -auto-approve
|
run: terraform apply -refresh=false -lock=false -auto-approve
|
||||||
|
|||||||
@ -1,18 +0,0 @@
|
|||||||
# grafana-terraform
|
|
||||||
Конфигурация Grafana
|
|
||||||
## Интеграция с Hashicorp Vault
|
|
||||||
В кластере **vault.pyn.ru** создана **approle infraservice-iac** с правами на чтение секретов из хранилища `app/data/groups/infraservice/*`.
|
|
||||||
Все члены группы **/vault-infraservice** могут посмотреть role-id с помощью `vault read auth/approle/role/infraservice-iac/role-id`, а также создать secret-id командой cli `vault write -f auth/approle/role/infraservice-iac/secret-id`.
|
|
||||||
Для успешной авторизации в Vault перед запуском нужно установить переменную окружения `VAULT_TOKEN` с токеном авторизации в значении.
|
|
||||||
## Запуск
|
|
||||||
Запуск осуществляется из директории окружения, например `environments/test`. Перед запуском необходимо задать переменные окружения из файла с переменными `.env` со следующим содержимым:
|
|
||||||
```bash
|
|
||||||
set -a
|
|
||||||
# ключи для s3 backend'ов можно найти в Vault
|
|
||||||
AWS_ACCESS_KEY_ID="<ключ для доступа к s3 бэкэнду>"
|
|
||||||
AWS_SECRET_ACCESS_KEY="<секретный ключ для доступа к s3 бэкэнду>"
|
|
||||||
VAULT_ROLE_ID="<role_id для approle vault>"
|
|
||||||
VAULT_SECRET_ID="<secret_id для approle vault>"
|
|
||||||
VAULT_TOKEN=$(curl -s -X POST -d "{\"role_id\":\"$VAULT_ROLE_ID\",\"secret_id\":\"$VAULT_SECRET_ID\"}" \
|
|
||||||
https://vault.pyn.ru/v1/auth/approle/login | jq -r .auth.client_token)
|
|
||||||
```
|
|
||||||
@ -8,17 +8,4 @@ terraform {
|
|||||||
source = "hashicorp/vault"
|
source = "hashicorp/vault"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
backend "s3" {
|
|
||||||
endpoints = {
|
|
||||||
s3 = "https://storage.yandexcloud.net" }
|
|
||||||
bucket = "monitoring-vcmt-core-deploy"
|
|
||||||
region = "ru-central1"
|
|
||||||
key = "dev-denis-practic/terraform.tfstate"
|
|
||||||
skip_region_validation = true
|
|
||||||
skip_credentials_validation = true
|
|
||||||
skip_requesting_account_id = true
|
|
||||||
skip_s3_checksum = true
|
|
||||||
skip_metadata_api_check = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,7 +37,7 @@ module "grafana_contact_points01" {
|
|||||||
source = "../../../modules/grafana_contact_points"
|
source = "../../../modules/grafana_contact_points"
|
||||||
org_id = var.org_id
|
org_id = var.org_id
|
||||||
env = var.env
|
env = var.env
|
||||||
grafana_url = "https://grafana-dev.hhmon.ru/"
|
grafana_url = "https://grafana.pvenode.ru/"
|
||||||
contact_points = local.contact_points
|
contact_points = local.contact_points
|
||||||
providers = {
|
providers = {
|
||||||
grafana = grafana.grafana01
|
grafana = grafana.grafana01
|
||||||
|
|||||||
@ -1,21 +1,20 @@
|
|||||||
provider "vault" {
|
provider "vault" {
|
||||||
address = "https://vault.pyn.ru"
|
|
||||||
skip_child_token = true
|
skip_child_token = true
|
||||||
}
|
}
|
||||||
|
|
||||||
data "vault_kv_secret_v2" "secret_ext" { # Секреты для подключения к внешним источникам (mm, clickhouse и т.д.)
|
data "vault_kv_secret_v2" "secret_ext" { # Секреты для подключения к внешним источникам (mm, clickhouse и т.д.)
|
||||||
mount = "app"
|
mount = "app"
|
||||||
name = "groups/infraservice/monitoring/grafana/dev/ext"
|
name = "groups/monitoring/grafana/dev/ext"
|
||||||
}
|
}
|
||||||
|
|
||||||
data "vault_kv_secret_v2" "secret_int" { # Секреты для работы самой графаны
|
data "vault_kv_secret_v2" "secret_int" { # Секреты для работы самой графаны
|
||||||
mount = "app"
|
mount = "app"
|
||||||
name = "groups/infraservice/monitoring/grafana/dev/int"
|
name = "groups/monitoring/grafana/dev/int"
|
||||||
}
|
}
|
||||||
|
|
||||||
provider "grafana" {
|
provider "grafana" {
|
||||||
alias = "grafana01"
|
alias = "grafana01"
|
||||||
url = "https://grafana-dev.hhmon.ru/"
|
url = "https://grafana.pvenode.ru/"
|
||||||
auth = data.vault_kv_secret_v2.secret_int.data["grafana_local_admin_password"]
|
auth = data.vault_kv_secret_v2.secret_int.data["grafana_local_admin_password"]
|
||||||
http_headers = local.grafana_headers
|
http_headers = local.grafana_headers
|
||||||
}
|
}
|
||||||
@ -8,17 +8,4 @@ terraform {
|
|||||||
source = "hashicorp/vault"
|
source = "hashicorp/vault"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
backend "s3" {
|
|
||||||
endpoints = {
|
|
||||||
s3 = "https://storage.yandexcloud.net" }
|
|
||||||
bucket = "monitoring-vcmt-core-deploy"
|
|
||||||
region = "ru-central1"
|
|
||||||
key = "a.dibrov-practic/terraform.tfstate"
|
|
||||||
skip_region_validation = true
|
|
||||||
skip_credentials_validation = true
|
|
||||||
skip_requesting_account_id = true
|
|
||||||
skip_s3_checksum = true
|
|
||||||
skip_metadata_api_check = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,7 +37,7 @@ module "grafana_contact_points01" {
|
|||||||
source = "../../../modules/grafana_contact_points"
|
source = "../../../modules/grafana_contact_points"
|
||||||
org_id = var.org_id
|
org_id = var.org_id
|
||||||
env = var.env
|
env = var.env
|
||||||
grafana_url = "https://grafana-dev.hhmon.ru/"
|
grafana_url = "https://grafana.pvenode.ru/"
|
||||||
contact_points = local.contact_points
|
contact_points = local.contact_points
|
||||||
providers = {
|
providers = {
|
||||||
grafana = grafana.grafana01
|
grafana = grafana.grafana01
|
||||||
|
|||||||
@ -1,21 +1,20 @@
|
|||||||
provider "vault" {
|
provider "vault" {
|
||||||
address = "https://vault.pyn.ru"
|
|
||||||
skip_child_token = true
|
skip_child_token = true
|
||||||
}
|
}
|
||||||
|
|
||||||
data "vault_kv_secret_v2" "secret_ext" { # Секреты для подключения к внешним источникам (mm, clickhouse и т.д.)
|
data "vault_kv_secret_v2" "secret_ext" { # Секреты для подключения к внешним источникам (mm, clickhouse и т.д.)
|
||||||
mount = "app"
|
mount = "app"
|
||||||
name = "groups/infraservice/monitoring/grafana/dev/ext"
|
name = "groups/monitoring/grafana/dev/ext"
|
||||||
}
|
}
|
||||||
|
|
||||||
data "vault_kv_secret_v2" "secret_int" { # Секреты для работы самой графаны
|
data "vault_kv_secret_v2" "secret_int" { # Секреты для работы самой графаны
|
||||||
mount = "app"
|
mount = "app"
|
||||||
name = "groups/infraservice/monitoring/grafana/dev/int"
|
name = "groups/monitoring/grafana/dev/int"
|
||||||
}
|
}
|
||||||
|
|
||||||
provider "grafana" {
|
provider "grafana" {
|
||||||
alias = "grafana01"
|
alias = "grafana01"
|
||||||
url = "https://grafana-dev.hhmon.ru/"
|
url = "https://grafana.pvenode.ru/"
|
||||||
auth = data.vault_kv_secret_v2.secret_int.data["grafana_local_admin_password"]
|
auth = data.vault_kv_secret_v2.secret_int.data["grafana_local_admin_password"]
|
||||||
http_headers = local.grafana_headers
|
http_headers = local.grafana_headers
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user