Salut à tutti ! Cum'è parte di u mo travagliu di u cursu, stava ricercendu e pussibulità di una tale piattaforma di nuvola domestica cum'è
Chì vulete riceve ?
Dopu avè principiatu una macchina virtuale cù un servitore web, pudete andà à u so òspite è uttene una bella UI, specificà e basa di dati cum'è fonti per u travagliu più, creà dashboards è grafici.
A versione basica hà un inconveniente significativu - ùn hè micca tollerante à i difetti. Vale à dì, tutta a prestazione di l'applicazione dipende da a viabilità di una macchina virtuale. S'ella ricusa o se 10 persone aprenu l'UI à u stessu tempu, i prublemi saranu.
Sò risolti simpliciamente: basta à implementà parechje macchine virtuale identiche cù un servitore web è mette sottu à un equilibratore L3. Ma micca tuttu hè cusì chjaru quì. Grafana guarda i paràmetri di l'utilizatori (percorsi à basa di dati, dashboards, gràfiche, etc.) direttamente nantu à u discu di a so macchina virtuale. Cusì, se cambiate certi paràmetri in l'UI, allora questi cambiamenti seranu visualizati solu nantu à a macchina virtuale induve l'equilibratore ci hà mandatu. Questu porta à paràmetri inconsistenti per a nostra applicazione, prublemi cù u lanciamentu è l'usu.
Quì una altra basa di dati vinarà in salvezza, per esempiu, MySQL o u so equivalente. Dicemu à Grafana chì deve guardà i paràmetri di l'utilizatori in questa basa di dati "spare". Dopu quì, serà abbastanza per specificà u percorsu à sta basa di dati in ogni macchina una volta, è edità tutti l'altri paràmetri di l'utilizatori nantu à qualsiasi di e macchine virtuali, crescenu nantu à u restu.
Eccu un diagramma di l'infrastruttura finale di l'applicazione:
Amparate à elevà cù e vostre mani
MySQL è ClickHouse
Prima di implementà una tale applicazione cù u clicu di un buttone, era necessariu d'amparà à elevà ognuna di i so cumpunenti cù manichi è integrà cù l'altri.
Yandex.Cloud ci aiuterà quì, chì furnisce balancers L3, ClickHouse è MySQL cum'è servizii amministrati. L'utilizatore solu deve specificà i paràmetri è aspittà finu à chì a piattaforma porta tuttu in un statu di travagliu.
Aghju registratu, creatu un nuvulu è un contu di fattura per mè stessu. Dopu quì, sò andatu in u nuvulu è hà risuscitatu i clusters MySQL è ClickHouse cù paràmetri minimi. Aspetta finu à chì diventanu attivu.
Avete ancu bisognu di ricurdà di creà una basa di dati in ogni cluster è cunfigurà l'accessu à questu per login è password. Ùn entreraghju micca in dettagli quì - tuttu hè abbastanza ovvi in l'interfaccia.
U ditagliu micca ovviu era chì queste basa di dati anu parechji ospiti chì furniscenu a so toleranza di difetti. Tuttavia, Grafana richiede esattamente un host per ogni basa di dati cù quale travaglia. Lettura longa c-<cluster_id>.rw.mdb.yandexcloud.net
Maps à l'ospitu maestru di cluster attivu attuale cù l'ID currispundente. Hè ciò chì daremu à Grafana.
Servitore web
Avà tocca à u servitore web. Cridemu una macchina virtuale regulare cù Linux è stallate Grafana nantu à questu cù e nostre mani.
Cunnetteremu via ssh è installate i pacchetti necessarii.
sudo apt-get install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/enterprise/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana-enterprise
Dopu quì, cuminciaremu Grafana sottu systemctl è installate u plugin per travaglià cù ClickHouse (sì, ùn hè micca furnitu in u pacchettu di basa).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Tuttu dopu cù un cumandamentu simplice
sudo service grafana-server start
avemu da principià u servore web. Avà serà pussibule di guidà in l'indirizzu IP esternu di a macchina virtuale in u navigatore, specificà u portu 3000 è vede a bella UI grafana.
Ma ùn precipite micca, prima di stabilisce Grafana, ùn devi micca scurdate di specificà a strada di MySQL per almacenà i paràmetri quì.
A cunfigurazione sana di u servitore web Grafana hè in u schedariu /etc/grafana/grafana.ini
. A linea necessaria hè cusì:
;url =
Esponemu l'ospite à u cluster MySQL. U stessu schedariu cuntene u login è a password per accede à Grafana in a stampa sopra, chì sò tramindui uguali per difettu admin
.
Pudete aduprà cumandamenti sed:
sudo sed -i "s#.*;url =.*#url = mysql://${MYSQL_USERNAME}:${MYSQL_PASSWORD}@${MYSQL_CLUSTER_URI}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${GRAFANA_USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${GRAFANA_PASSWORD}#" /etc/grafana/grafana.ini
Hè ora di riavvia u servitore web !
sudo service grafana-server restart
Avà in a Grafana UI, avemu da specificà ClickHouse cum'è DataSource.
Aghju riesciutu à ottene una cunfigurazione di travagliu cù e seguenti paràmetri:
Aghju datu cum'è URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Tuttu ! Avemu una macchina virtuale chì travaglia cun un servitore web cunnessu à CH è MySQL. Pudete digià carica u dataset à ClickHouse è custruisce dashboards. Tuttavia, ùn avemu micca ancu ghjuntu à u nostru scopu è ùn avemu micca implementatu una infrastruttura cumpleta.
Imballatore
Yandex.Cloud permette di creà una maghjina di discu di una macchina virtuale esistente, è basatu annantu à questu, pudete creà tante macchine identiche chì vulete. Questu hè esattamente ciò chì useremu. Per assemblà convenientemente l'imaghjini, pigliate u strumentu
U nostru schedariu json serà custituitu da dui blocchi: custruttori è furnituri. U primu bloccu descrive i paràmetri di l'imaghjini stessu cum'è una entità, è u sicondu descrive l'istruzzioni per riempie cù u cuntenutu necessariu.
NEXUS
{
"builders": [
{
"type": "yandex",
"endpoint": "{{user `endpoint`}}",
"folder_id": "<folder_id>",
"subnet_id": "{{user `subnet_id`}}",
"zone": "{{user `zone`}}",
"labels": {},
"use_ipv4_nat": true,
"use_internal_ip": false,
"service_account_key_file": "<service_account_key_file>",
"image_name": "grafana-{{timestamp}}",
"image_family": "grafana",
"image_labels": {},
"image_description": "GRAFANA",
"source_image_family": "ubuntu-1804-lts",
"disk_size_gb": 3,
"disk_type": "network-hdd",
"ssh_username": "ubuntu"
}
],
...
}
In questu mudellu, avete bisognu di stabilisce l'identificatore di a rùbbrica in u nuvulu induve vulete creà una maghjina, è ancu u percorsu à u schedariu cù i chjavi da u contu di serviziu creatu prima in questa sezione. Pudete leghje più nantu à a creazione di cunti di serviziu è chjave in a forma di un schedariu in a sezione currispundente.
Sta cunfigurazione dice chì l'imaghjini di discu serà custruitu basatu annantu à a piattaforma ubuntu-1804-lts
, pusatu in a sezione d'utilizatori appropritata in a famiglia di l'imaghjini GRAFANA
sottu u nome grafana-{{timestamp}}
.
Pruvistori
Avà per a parte più interessante di a cunfigurazione. Descriverà a sequenza di l'azzioni chì deve esse realizatu nantu à una macchina virtuale prima di congelate u so statu in una maghjina di discu.
{
...,
"provisioners": [
{
"type": "shell",
"pause_before": "5s",
"scripts": [
"prepare-ctg.sh"
]
},
{
"type": "file",
"source": "setup.sh",
"destination": "/opt/grafana/setup.sh"
},
{
"type": "shell",
"execute_command": "sudo {{ .Vars }} bash '{{ .Path }}'",
"pause_before": "5s",
"scripts": [
"install-packages.sh",
"grafana-setup.sh",
"run-setup-at-reboot.sh"
]
}
]
}
Quì, tutte l'azzioni sò spartuti in 3 tappe. À a prima tappa, un script simplice hè eseguitu chì crea un repertoriu ausiliariu.
prepare-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
À a tappa dopu, pusemu un script in questu repertoriu, chì deve esse eseguitu immediatamente dopu avè principiatu a macchina virtuale. Stu script metterà e variàbili di l'utilizatori per esse stabilitu in a cunfigurazione di Grafana è riavvia u servitore web.
setup.sh:
#!/bin/bash
CLUSTER_ID="<cluster_id>"
USERNAME="<username>"
PASSWORD="<password>"
sudo sed -i "s#.*;url =.*#url = mysql://${USERNAME}:${PASSWORD}@c-${CLUSTER_ID}.rw.mdb.yandexcloud.net#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${PASSWORD}#" /etc/grafana/grafana.ini
sudo service grafana-server restart
Dopu quì, ci sò 3 cose da fà:
1) installà i pacchetti
2) lanciate Grafana sottu systemctl è installate u plugin ClickHouse
3) mette u script setup.sh in a fila per eseguisce immediatamente dopu avè accende a macchina virtuale.
install-packages.sh:
#!/bin/bash
sudo systemd-run --property='After=apt-daily.service apt-daily-upgrade.service' --wait /bin/true
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/enterprise/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana-enterprise
grafana-setup.sh:
#!/bin/bash
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
run-setup-at-reboot.sh:
#!/bin/bash
chmod +x /opt/grafana/setup.sh
cat > /etc/cron.d/first-boot <<EOF
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
@reboot root /bin/bash /opt/grafana/setup.sh > /var/log/yc-setup.log 2>&1
EOF
chmod +x /etc/cron.d/first-boot;
Avà ferma à eseguisce Packer è uttene l'immagine di output posta in a partizione specifica. Quandu crea una macchina virtuale, pudete selezziunate cum'è un discu di boot è, dopu avè principiatu, uttene un servitore web Grafana prontu.
Gruppu di istanza è balancer
Una volta ci hè una maghjina di discu chì vi permette di creà parechji servitori web identici di Grafana, pudemu creà un gruppu di istanza. Nantu à a piattaforma Yandex.Cloud, stu terminu si riferisce à l'unione di macchine virtuali chì anu e stesse caratteristiche. Quandu creanu un gruppu di istanza, u prototipu di tutte e macchine in questu gruppu hè cunfiguratu, è dopu e caratteristiche di u gruppu stessu (per esempiu, u minimu è u massimu di macchine attive). Se u numeru attuale ùn scontra micca stu criteriu, allora u gruppu di istanza stessu sguasserà e macchine innecessarii o creà novi in l'imaghjini è simili.
Comu parte di u nostru compitu, creeremu un gruppu d'istanza di servitori web chì saranu generati da l'imaghjini di discu creatu prima.
L'ultima configurazione di u gruppu di istanza hè veramente notevule. U gruppu di destinazione in integrazione cù Load Balancer vi aiuterà à stallà un equilibratore L3 in cima di e macchine virtuali di stu gruppu pressendu un paru di buttoni.
Quandu hà stallatu u balancer, aghju implementatu dui punti impurtanti:
- Aghju fattu cusì chì u balancer accettò u trafficu di l'utilizatori nantu à u portu 80, è l'hà ridirettu à u portu 3000 di e macchine virtuali, solu induve Grafana vive.
- Configurate i cuntrolli di salute di a macchina pinghjenduli in u portu 3000.
mini-totale
Infine, pudemu implementà manualmente l'infrastruttura d'applicazione desiderata, è avà avemu un serviziu Grafana altamente resistente. Solu bisognu di cunnosce l'indirizzu IP di l'equilibratore cum'è u puntu di ingressu à l'applicazione è l'ospiti di u cluster ClickHouse per carricà u dataset in questu.
Sembra una vittoria? Iè, vittoria. Ma qualcosa mi preoccupa sempre. U prucessu tutale sopra esige assai azzioni manuali è ùn scala micca in tuttu, vogliu automatizà si hè pussibule. Questu serà u focu di a prossima sezione.
Integrazione cù Terraform
Avemu da novu aduprà un strumentu da HashiCorp chjamatu
Tuttu u travagliu cù Terraform si riduce à scrive un schedariu di cunfigurazione (*.tf
) è a creazione di l'infrastruttura basatu annantu à questu.
Variabili
À l'iniziu di u schedariu, pigliaremu e variàbili chì determinanu induve è cumu l'infrastruttura futura serà implementata.
variable "oauth_token" {
type = string
default = "<oauth-token>"
}
variable "cloud_id" {
type = string
default = "<cloud-id>"
}
variable "folder_id" {
type = string
default = "<folder_id>"
}
variable "service_account_id" {
type = string
default = "<service_account_id>"
}
variable "image_id" {
type = string
default = "<image_id>"
}
variable "username" {
type = string
default = "<username>"
}
variable "password" {
type = string
default = "<password>"
}
variable "dbname" {
type = string
default = "<dbname>"
}
variable "public_key_path" {
type = string
default = "<path to ssh public key>"
}
U prucessu tutale di implementazione di una applicazione scenderà à custruisce una maghjina di discu è stabilisce sti variàbili. Lasciami spiegà ciò chì sò rispunsevuli di:
oauth_token - un token per l'accessu à u nuvulu. Pò esse acquistatu da
cloud_id - identificatore di u nuvulu induve implementeremu l'applicazione
folder_id - identificatore di a sezione induve implementeremu l'applicazione
service_account_id - identificatore di u contu di serviziu in a sezione currispundente di u nuvulu.
image_id - identificatore di l'imagine di discu ottenuta cù Packer
gatti и codice - nome d'utilizatore è password per accede à e duie basa di dati è à u servitore web Grafana
dbname - nome di basa di dati in i clusters CH è MySQL
strada_chjave_pubblica - a strada di u schedariu cù a vostra chjave ssh publica, chì pò esse usata per cunnette sottu u nome ubuntu
à e macchine virtuali cù i servitori web
Impostazione di u fornitore
Avà avete bisognu di cunfigurà u fornitore Terraform - in u nostru casu, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Pudete vede chì quì avemu aduprà e variàbili definite sopra.
Rete è clusters
Avà criemu una reta in quale elementi di a nostra infrastruttura cumunicanu, trè subnets (una in ogni regione) è suscitarà i clusters CH è MySQL.
resource "yandex_vpc_network" "grafana_network" {}
resource "yandex_vpc_subnet" "subnet_a" {
zone = "ru-central1-a"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.1.0.0/24"]
}
resource "yandex_vpc_subnet" "subnet_b" {
zone = "ru-central1-b"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.2.0.0/24"]
}
resource "yandex_vpc_subnet" "subnet_c" {
zone = "ru-central1-c"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.3.0.0/24"]
}
resource "yandex_mdb_clickhouse_cluster" "ch_cluster" {
name = "grafana-clickhouse"
environment = "PRODUCTION"
network_id = yandex_vpc_network.grafana_network.id
clickhouse {
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 16
}
}
zookeeper {
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 10
}
}
database {
name = var.dbname
}
user {
name = var.username
password = var.password
permission {
database_name = var.dbname
}
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
}
resource "yandex_mdb_mysql_cluster" "mysql_cluster" {
name = "grafana_mysql"
environment = "PRODUCTION"
network_id = yandex_vpc_network.grafana_network.id
version = "8.0"
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 16
}
database {
name = var.dbname
}
user {
name = var.username
password = var.password
permission {
database_name = var.dbname
roles = ["ALL"]
}
}
host {
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
}
Comu pudete vede, ogni unu di i dui clusters hè custruitu per esse abbastanza tolerante à i difetti essendu postu in trè Zone di Disponibilità.
servitori web
Sembra chì pudete cuntinuà in u stessu spiritu, ma aghju avutu in difficultà. Prima di quessa, aghju prima risuscitatu u cluster MySQL è solu dopu, sapendu u so ID, aghju cullatu una maghjina di discu cù a cunfigurazione desiderata, induve aghju specificatu l'ospite à u cluster. Ma avà ùn sapemu micca l'ID di cluster prima di u lanciu di Terraform, ancu à u mumentu di a creazione di l'imaghjini. Allora aghju avutu à ricurdà à i seguenti
Utilizendu u serviziu di metadata da Amazon, avemu da passà qualchi paràmetri à a macchina virtuale, chì accettà è prucessa. Avemu bisognu di a macchina per andà à i metadati per l'ospite MySQL di u cluster è per u nome d'utilizatore-password chì l'utilizatore specifica in u schedariu Terraform dopu avè principiatu. Cambia ligeramente u cuntenutu di u schedariu setup.sh
, chì corre quandu a macchina virtuale hè attivata.
setup.sh:
#!/bin/bash
CLUSTER_URI="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/mysql_cluster_uri)"
USERNAME="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/username)"
PASSWORD="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/password)"
sudo sed -i "s#.*;url =.*#url = mysql://${USERNAME}:${PASSWORD}@${CLUSTER_URI}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${PASSWORD}#" /etc/grafana/grafana.ini
sudo service grafana-server restart
Gruppu Intance è balancer
Dopu avè ricustruitu a nova maghjina di discu, pudemu finalmente aghjunghje u nostru schedariu per Terraform.
Indichemu chì vulemu utilizà una maghjina di discu esistenti:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Avà criemu un gruppu di istanza:
resource "yandex_compute_instance_group" "grafana_group" {
name = "grafana-group"
folder_id = var.folder_id
service_account_id = var.service_account_id
instance_template {
platform_id = "standard-v1"
resources {
memory = 1
cores = 1
}
boot_disk {
mode = "READ_WRITE"
initialize_params {
image_id = data.yandex_compute_image.grafana_image.id
size = 4
}
}
network_interface {
network_id = yandex_vpc_network.grafana_network.id
subnet_ids = [yandex_vpc_subnet.subnet_a.id, yandex_vpc_subnet.subnet_b.id, yandex_vpc_subnet.subnet_c.id]
nat = "true"
}
metadata = {
mysql_cluster_uri = "c-${yandex_mdb_mysql_cluster.mysql_cluster.id}.rw.mdb.yandexcloud.net:3306/${var.dbname}"
username = var.username
password = var.password
ssh-keys = "ubuntu:${file("${var.public_key_path}")}"
}
network_settings {
type = "STANDARD"
}
}
scale_policy {
fixed_scale {
size = 6
}
}
allocation_policy {
zones = ["ru-central1-a", "ru-central1-b", "ru-central1-c"]
}
deploy_policy {
max_unavailable = 2
max_creating = 2
max_expansion = 2
max_deleting = 2
}
load_balancer {
target_group_name = "grafana-target-group"
}
}
Hè vale a pena attente à cumu avemu passatu à i metadata cluster_uri
, username
и password
. Hè a so macchina virtuale chì l'avete da l'iniziu è a mette in a cunfigurazione Grafana.
Si tratta di l'equilibriu.
resource "yandex_lb_network_load_balancer" "grafana_balancer" {
name = "grafana-balancer"
listener {
name = "grafana-listener"
port = 80
target_port = 3000
external_address_spec {
ip_version = "ipv4"
}
}
attached_target_group {
target_group_id = yandex_compute_instance_group.grafana_group.load_balancer.0.target_group_id
healthcheck {
name = "healthcheck"
tcp_options {
port = 3000
}
}
}
}
Un pocu di zuccaru
Ci era assai pocu. Dopu chì l'infrastruttura hè stata implementata, duverete andà à a Grafana UI è aghjunghje manualmente u cluster CH (chì l'ID hè ancu bisognu) cum'è una Fonte di Dati. Ma Terraform cunnosce u cluster ID. Facemu ch'ellu finisci u travagliu.
Aghjunghjemu un novu fornitore - Grafana, è slip l'IP di l'equilibriu cum'è host. Tutti i cambiamenti chì Terraform faci nantu à a macchina induve u so balancer determina cresce in MySQL, è dunque in tutti l'altri machini.
provider "grafana" {
url = "http://${[for s in yandex_lb_network_load_balancer.grafana_balancer.listener: s.external_address_spec.0.address].0}"
auth = "${var.username}:${var.password}"
}
resource "grafana_data_source" "ch_data_source" {
type = "vertamedia-clickhouse-datasource"
name = "grafana"
url = "https://c-${yandex_mdb_clickhouse_cluster.ch_cluster.id}.rw.mdb.yandexcloud.net:8443"
basic_auth_enabled = "true"
basic_auth_username = var.username
basic_auth_password = var.password
is_default = "true"
access_mode = "proxy"
}
Pettinemu
Mostra l'IP di equilibriu è l'ospite di cluster ClickHouse
output "grafana_balancer_ip_address" {
value = [for s in yandex_lb_network_load_balancer.grafana_balancer.listener: s.external_address_spec.0.address].0
}
output "clickhouse_cluster_host" {
value = "https://c-${yandex_mdb_clickhouse_cluster.ch_cluster.id}.rw.mdb.yandexcloud.net:8443"
}
Pò curriri
Tuttu ! U nostru schedariu di cunfigurazione hè prontu è pudemu, mettendu variabili, dì à Terraform per elevà tuttu ciò chì avemu descrittu sopra. Tuttu u prucessu m'hà pigliatu circa 15 minuti.
À a fine, pudete vede un bellu missaghju:
Apply complete! Resources: 9 added, 0 changed, 0 destroyed.
Outputs:
clickhouse_cluster_host = https://c-c9q14ipa2ngadqsbp2iq.rw.mdb.yandexcloud.net:8443
grafana_balancer_ip_address = 130.193.50.25
È in u nuvulu, elementi di l'infrastruttura elevata seranu visibili:
Immaimu i risultati
Avà, usendu l'esempiu di Grafana, ognunu di voi pò implementà applicazioni cù l'architettura nuvola sprawling nantu à a piattaforma Yandex.Cloud. Strumenti utili di HashiCorp cum'è Packer è Terraform ponu aiutà cun questu. Spergu chì questu articulu serà utile à qualchissia 🙂
PS Sottu aghjustà un ligame à u repository, induve pudete truvà ricetti pronti per Packer è Terraform, frammenti di quale aghju citatu in questu articulu.
Source: www.habr.com