ΠΠ΄ΡΠ°Π²ΠΎ ΡΠ²ΠΈΠΌΠ°! Π£ ΠΎΠΊΠ²ΠΈΡΡ ΡΠ²ΠΎΠ³ ΠΊΡΡΡΠ° ΠΈΡΡΡΠ°ΠΆΠΈΠ²Π°ΠΎ ΡΠ°ΠΌ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠ²Π΅ Π΄ΠΎΠΌΠ°ΡΠ΅ ΠΊΠ»Π°ΡΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅
Π¨ΡΠ° ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ΅ΡΠ΅?
ΠΠ°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ ΡΠ° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΈΡΠΈ Π½Π° ΡΠ΅Π½ Ρ ΠΎΡΡ ΠΈ Π΄ΠΎΠ±ΠΈΡΠΈ ΠΏΡΠ΅Π»Π΅ΠΏ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ, Π½Π°Π²Π΅ΡΡΠΈ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΊΠ°ΠΎ ΠΈΠ·Π²ΠΎΡΠ΅ Π·Π° Π΄Π°ΡΠΈ ΡΠ°Π΄, ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π΅ ΡΠ°Π±Π»Π΅ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½Π΅.
ΠΡΠ½ΠΎΠ²Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° ΠΈΠΌΠ° ΡΠ΅Π΄Π°Π½ Π·Π½Π°ΡΠ°ΡΠ°Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ°ΠΊ - ΡΠΎΠΏΡΡΠ΅ Π½ΠΈΡΠ΅ ΠΎΡΠΏΠΎΡΠ½Π° Π½Π° Π³ΡΠ΅ΡΠΊΠ΅. ΠΠ΄Π½ΠΎΡΠ½ΠΎ, ΡΠ΅Π»ΠΎΠΊΡΠΏΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΠΎΠ΄ΡΠΆΠΈΠ²ΠΎΡΡΠΈ ΡΠ΅Π΄Π½Π΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅. ΠΠΊΠΎ ΠΎΠ΄Π±ΠΈΡΠ΅ ΠΈΠ»ΠΈ 10 ΡΡΠ΄ΠΈ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ ΠΎΡΠ²ΠΎΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ, ΠΎΠ½Π΄Π° ΡΠ΅ Π½Π°ΡΡΠ°ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
ΠΠ½ΠΈ ΡΠ΅ ΠΌΠΎΠ³Ρ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ΡΠΈΡΠΈ: ΡΠ°ΠΌΠΎ ΡΡΠ΅Π±Π° Π΄Π°... ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΡ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π° ΡΠ° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΈΡ ΠΏΠΎΠ΄ Π3 Π±Π°Π»Π°Π½ΡΠ΅Ρ. ΠΠ»ΠΈ ΠΎΠ²Π΄Π΅ Π½ΠΈΡΠ΅ ΡΠ²Π΅ ΡΠ°ΠΊΠΎ ΡΠ°ΡΠ½ΠΎ. ΠΡΠ°ΡΠ°Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ° ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° (ΠΏΡΡΠ°ΡΠ° Π΄ΠΎ Π±Π°Π·Π° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π΅ ΡΠ°Π±Π»Π΅, Π³ΡΠ°ΡΠΈΠΊΠΎΠ½Π΅, ΠΈΡΠ΄.) Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Π΄ΠΈΡΠΊ ΡΠ²ΠΎΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅. ΠΠ°ΠΊΠ»Π΅, Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌΠΎ Π½Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΡ, ΠΎΠ²Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ ΡΠ΅ ΡΠ΅ ΠΎΠ΄ΡΠ°Π·ΠΈΡΠΈ ΡΠ°ΠΌΠΎ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ Π½Π° ΠΊΠΎΡΡ Π½Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΠ»Π°ΠΎ Π±Π°Π»Π°Π½ΡΠ΅Ρ. ΠΠ²ΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅ΡΡΠΈ Π΄ΠΎ Π½Π΅Π΄ΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Π·Π° Π½Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΡΡΠΎ ΡΠ΅ ΠΈΠ·Π°Π·Π²Π°ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΡΠ° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ΠΌ ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΠΌ.
ΠΠ²Π΄Π΅ ΡΠ΅ Π΄ΡΡΠ³Π° Π±Π°Π·Π° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Π΄ΠΎΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΠΈΠ‘ΠΠ ΠΈΠ»ΠΈ ΡΠ΅Π³ΠΎΠ² Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ. ΠΠ°ΠΆΠ΅ΠΌΠΎ ΠΡΠ°ΡΠ°Π½ΠΈ Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΡΠ²Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ° ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Ρ ΠΎΠ²ΠΎΡ βΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΡβ Π±Π°Π·ΠΈ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°. ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, Π±ΠΈΡΠ΅ Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ Π΄Π° Π½Π° ΡΠ²Π°ΠΊΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ ΡΠ΅Π΄Π½ΠΎΠΌ Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΠΏΡΡΠ°ΡΡ Π΄ΠΎ ΠΎΠ²Π΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈ ΡΡΠ΅Π΄ΠΈΡΠ΅ ΡΠ²Π° ΠΎΡΡΠ°Π»Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ° ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Π½Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΎΡ ΠΎΠ΄ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π°; ΠΎΠ½Π° ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠΈΡΠΈ Π½Π° ΠΎΡΡΠ°Π»Π΅.
ΠΠ²ΠΎ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌΠ° ΠΊΠΎΠ½Π°ΡΠ½Π΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅:
ΠΠ°ΡΡΠΈΠΌΠΎ Π΄Π° ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ΠΌΠΎ ΡΡΠΊΠ°ΠΌΠ°
ΠΠΈΠ‘ΠΠ ΠΈ Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅
ΠΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ° ΡΠ°ΠΊΠ²Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅Π΄Π½ΠΈΠΌ ΠΊΠ»ΠΈΠΊΠΎΠΌ Π½Π° Π΄ΡΠ³ΠΌΠ΅, Π±ΠΈΠ»ΠΎ ΡΠ΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ Π½Π°ΡΡΠΈΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΡΠΊΡΡΠ΅ΡΠ΅ ΡΠ²Π°ΠΊΠΎΠΌ ΠΎΠ΄ ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ Π΄Π° ΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ΅ΡΠ΅ ΡΠ΅Π΄Π½Ρ ΡΠ° Π΄ΡΡΠ³ΠΎΠΌ.
ΠΠ²Π΄Π΅ ΡΠ΅ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΡΠΈ ΠΠ°Π½Π΄Π΅ΠΊ.Π¦Π»ΠΎΡΠ΄, ΠΊΠΎΡΠΈ ΠΏΡΡΠΆΠ° Π3 Π±Π°Π»Π°Π½ΡΠ΅ΡΠ΅, Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅ ΠΈ ΠΠΈΠ‘ΠΠ ΠΊΠ°ΠΎ ΡΠΏΡΠ°Π²ΡΠ°Π½Π΅ ΡΡΠ»ΡΠ³Π΅. ΠΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ°ΠΌΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΎΠ΄ΡΠ΅Π΄ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΈ ΡΠ°ΡΠ΅ΠΊΠ° Π΄ΠΎΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠ²Π΅ Π½Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Ρ ΡΠ°Π΄Π½ΠΈ ΡΠ΅Π΄.
Π Π΅Π³ΠΈΡΡΡΠΎΠ²Π°ΠΎ ΡΠ°ΠΌ ΡΠ΅, Π½Π°ΠΏΡΠ°Π²ΠΈΠΎ ΠΎΠ±Π»Π°ΠΊ ΠΈ Π½Π°Π»ΠΎΠ³ Π·Π° ΠΏΠ»Π°ΡΠ°ΡΠ΅. ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, ΠΎΡΠΈΡΠ°ΠΎ ΡΠ°ΠΌ Ρ ΠΎΠ±Π»Π°ΠΊ ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΠΎ ΠΠΈΠ‘ΠΠ ΠΈ Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΡΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΠΌ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠΈΠΌΠ°. Π§Π΅ΠΊΠ°ΠΎ ΡΠ°ΠΌ Π΄ΠΎΠΊ ΡΠ΅ Π½Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΡ.
Π’Π°ΠΊΠΎΡΠ΅ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° Π·Π°ΠΏΠ°ΠΌΡΠΈΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π±Π°Π·Ρ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ ΡΠ²Π°ΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΠΈ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏ ΡΠΎΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΏΡΠΈΡΠ°Π²Ρ ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΡ. ΠΠ²Π΄Π΅ Π½Π΅ΡΡ ΡΠ»Π°Π·ΠΈΡΠΈ Ρ Π΄Π΅ΡΠ°ΡΠ΅ - ΡΠ²Π΅ ΡΠ΅ ΠΎΡΠΈΠ³Π»Π΅Π΄Π½ΠΎ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΡ.
ΠΠ΅ΠΎΡΠΈΠ³Π»Π΅Π΄Π°Π½ Π΄Π΅ΡΠ°Ρ ΡΠ΅ Π±ΠΈΠΎ Π΄Π° ΠΎΠ²Π΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΡΠΎΠ²Π°, ΠΊΠΎΡΠΈ ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΡ ΡΠΈΡ
ΠΎΠ²Ρ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΡ Π³ΡΠ΅ΡΠ°ΠΊΠ°. ΠΠ΅ΡΡΡΠΈΠΌ, ΠΡΠ°ΡΠ°Π½Π° Π·Π°Ρ
ΡΠ΅Π²Π° ΡΠ°ΡΠ½ΠΎ ΡΠ΅Π΄Π°Π½ Ρ
ΠΎΡΡ Π·Π° ΡΠ²Π°ΠΊΡ Π±Π°Π·Ρ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΡΠ° ΠΊΠΎΡΠΎΠΌ ΡΠ°Π΄ΠΈ. ΠΡΠ³ΠΎ ΡΠΈΡΠ°ΡΠ΅ c-<cluster_id>.rw.mdb.yandexcloud.net
ΠΌΠ°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΡΠ΅Π½ΡΡΠ½ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΈ Π³Π»Π°Π²Π½ΠΈ Ρ
ΠΎΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΡΠ° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈΠΌ ΠΠ-ΠΎΠΌ. ΠΠ²ΠΎ ΡΠ΅ΠΌΠΎ Π΄Π°ΡΠΈ ΠΡΠ°ΡΠ°Π½ΠΈ.
Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ
Π‘Π°Π΄Π° ΡΠ΅ Π½Π° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΡ. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ΠΌΠΎ ΠΎΠ±ΠΈΡΠ½Ρ Π²ΠΈΡΡΡΠ΅Π»Π½Ρ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠ° ΠΠΈΠ½ΡΠΊΡΠΎΠΌ ΠΈ ΡΡΡΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΠΌΠΎ ΠΡΠ°ΡΠ°Π½Ρ Π½Π° ΡΠΎΡ.
ΠΠΎΠ²Π΅ΠΆΠΈΠΌΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΊΠΎ ΡΡΡ -Π° ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠΎ ΠΏΠΎΡΡΠ΅Π±Π½Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ΅.
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
ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, ΠΏΠΎΠΊΡΠ΅Π½ΠΈΠΌΠΎ ΠΡΠ°ΡΠ°Π½Ρ ΠΏΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΡΡΠ» ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠΎ Π΄ΠΎΠ΄Π°ΡΠ°ΠΊ Π·Π° ΡΠ°Π΄ ΡΠ° Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅ (Π΄Π°, Π½ΠΈΡΠ΅ ΠΈΡΠΏΠΎΡΡΡΠ΅Π½ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Π’ΠΎ ΡΠ΅ ΡΠΎ, Π½Π°ΠΊΠΎΠ½ ΡΠΎΠ³Π° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ
sudo service grafana-server start
ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠ΅ΠΌΠΎ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ. Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ½Π΅ΡΠ΅ΡΠ΅ ΡΠΏΠΎΡΠ½Ρ ΠΠ Π°Π΄ΡΠ΅ΡΡ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ Ρ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°Ρ, ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ ΠΏΠΎΡΡ 3000 ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠ΅Π»Π΅ΠΏ ΠΡΠ°ΡΠ°Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ.
ΠΠ»ΠΈ Π½Π΅ΠΌΠΎΡΡΠ΅ ΠΆΡΡΠΈΡΠΈ, ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΠΡΠ°ΡΠ°Π½Ρ, ΠΌΠΎΡΠ°ΡΠ΅ Π·Π°ΠΏΠ°ΠΌΡΠΈΡΠΈ Π΄Π° ΡΠΎΡ ΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΏΡΡΠ°ΡΡ Π΄ΠΎ ΠΠΈΠ‘ΠΠ-Π° ΠΊΠ°ΠΊΠΎ Π±ΠΈΡΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ°ΡΡΠ²Π°Π»ΠΈ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ°.
Π¦Π΅Π»ΠΎΠΊΡΠΏΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΡΠ°ΡΠ°Π½Π° ΡΠ΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ /etc/grafana/grafana.ini
. ΠΠΎΡΡΠ΅Π±Π½Π° Π»ΠΈΠ½ΠΈΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ:
;url =
ΠΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠΌΠΎ Ρ
ΠΎΡΡ Π½Π° ΠΠΈΠ‘ΠΠ ΠΊΠ»Π°ΡΡΠ΅Ρ. ΠΡΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ°Π΄ΡΠΆΠΈ Π»ΠΎΠ³ΠΈΠ½ ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΡ Π·Π° ΠΏΡΠΈΡΡΡΠΏ ΠΡΠ°ΡΠ°Π½ΠΈ Π½Π° Π³ΠΎΡΡΠΎΡ ΡΠ»ΠΈΡΠΈ, ΠΊΠΎΡΠ΅ ΡΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΡΠ΅Π΄Π½Π°ΠΊΠ΅ admin
.
ΠΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
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
ΠΡΠ΅ΠΌΠ΅ ΡΠ΅ Π΄Π° ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ!
sudo service grafana-server restart
Π‘Π°Π΄Π° ΡΠ΅ΠΌΠΎ Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΡ ΠΡΠ°ΡΠ°Π½Π΅ Π½Π°Π²Π΅ΡΡΠΈ Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅ ΠΊΠ°ΠΎ ΠΈΠ·Π²ΠΎΡ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°.
Π£ΡΠΏΠ΅ΠΎ ΡΠ°ΠΌ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌ ΡΠ°Π΄Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΡΠ° ΡΠ»Π΅Π΄Π΅ΡΠΈΠΌ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠΈΠΌΠ°:
ΠΠ°Π²Π΅ΠΎ ΡΠ°ΠΌ ΠΊΠ°ΠΎ Π£Π Π https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Π‘Π²Π΅! ΠΠΌΠ°ΠΌΠΎ ΡΠ΅Π΄Π½Ρ ΡΠ°Π΄Π½Ρ Π²ΠΈΡΡΡΠ΅Π»Π½Ρ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠ° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈΠΌ Π½Π° Π¦Π₯ ΠΈ ΠΠΈΠ‘ΠΠ. ΠΠ΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠΏΡΠ΅ΠΌΠΈΡΠ΅ ΡΠΊΡΠΏ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅ ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π΅ ΡΠ°Π±Π»Π΅. ΠΠ΅ΡΡΡΠΈΠΌ, ΡΠΎΡ Π½ΠΈΡΠΌΠΎ ΠΏΠΎΡΡΠΈΠ³Π»ΠΈ ΡΠ²ΠΎΡ ΡΠΈΡ ΠΈ Π½ΠΈΡΠΌΠΎ ΡΠ°Π·Π²ΠΈΠ»ΠΈ ΠΏΡΠ½ΠΎΠΏΡΠ°Π²Π½Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ°ΡΠΊΠ΅Ρ
ΠΠ°Π½Π΄Π΅ΠΊ.Π¦Π»ΠΎΡΠ΄ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΡ Π΄ΠΈΡΠΊΠ° ΠΏΠΎΡΡΠΎΡΠ΅ΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅, Π° Π½Π° ΡΠ΅Π½ΠΎΡ ΠΎΡΠ½ΠΎΠ²ΠΈ - Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ Π±ΡΠΎΡ ΠΌΠ°ΡΠΈΠ½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΡ
ΡΠ΅Π΄Π½Π° Π΄ΡΡΠ³ΠΎΡ. Π’ΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²ΠΎ ΠΎΠ½ΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ. ΠΠ° Π±ΠΈΡΡΠ΅ Π·Π³ΠΎΠ΄Π½ΠΎ ΡΠ°ΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠ»ΠΈΠΊΡ, ΡΠ·ΠΌΠΈΡΠ΅ Π°Π»Π°Ρ
ΠΠ°ΡΠ° ΡΡΠΎΠ½ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΠ°ΡΡΠΎΡΠ°ΡΠΈ ΠΎΠ΄ Π΄Π²Π° Π±Π»ΠΎΠΊΠ°: Π³ΡΠ°Π΄ΠΈΡΠ΅ΡΠ° ΠΈ ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅ΡΠ°. ΠΡΠ²ΠΈ Π±Π»ΠΎΠΊ ΠΎΠΏΠΈΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΡΠ°ΠΌΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠ°ΠΎ ΡΠ΅Π»ΠΈΠ½Π΅, Π° Π΄ΡΡΠ³ΠΈ Π±Π»ΠΎΠΊ ΠΎΠΏΠΈΡΡΡΠ΅ ΡΠΏΡΡΡΡΠ²Π° Π·Π° ΡΠ΅Π½ΠΎ ΠΏΠΎΠΏΡΡΠ°Π²Π°ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΠΌ ΡΠ°Π΄ΡΠΆΠ°ΡΠ΅ΠΌ.
Π³ΡΠ°Π΄ΠΈΡΠ΅ΡΠΈ
{
"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"
}
],
...
}
Π£ ΠΎΠ²ΠΎΠΌ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠ΄Π΅ΡΠΊΠ° Ρ ΠΎΠ±Π»Π°ΠΊΡ Π³Π΄Π΅ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΡ, ΠΊΠ°ΠΎ ΠΈ ΠΏΡΡΠ°ΡΡ Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ° ΠΊΡΡΡΠ΅Π²ΠΈΠΌΠ° ΡΠ° Π½Π°Π»ΠΎΠ³Π° ΡΡΠ»ΡΠ³Π΅ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½ Ρ ΠΎΠ²ΠΎΠΌ ΠΎΠ΄Π΅ΡΠΊΡ. ΠΠΈΡΠ΅ ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈΡ
Π½Π°Π»ΠΎΠ³Π° ΠΈ ΠΊΡΡΡΠ΅Π²Π° Ρ ΠΎΠ±Π»ΠΈΠΊΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΠΈ Ρ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ΠΌ ΠΎΠ΄Π΅ΡΠΊΡ
ΠΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΊΠ°ΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ»ΠΈΠΊΠ° Π΄ΠΈΡΠΊΠ° Π±ΠΈΡΠΈ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ ubuntu-1804-lts
, ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½ Ρ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΎΠ΄Π΅ΡΠ°ΠΊ Ρ ΠΏΠΎΡΠΎΠ΄ΠΈΡΠΈ ΡΠ»ΠΈΠΊΠ° GRAFANA
ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ grafana-{{timestamp}}
.
ΠΡΠΎΠ²ΠΈΡΠΈΠΎΠ½Π΅ΡΡ
Π‘Π°Π΄Π° Π΄ΠΎΠ»Π°Π·ΠΈ Π·Π°Π½ΠΈΠΌΡΠΈΠ²ΠΈΡΠΈ Π΄Π΅ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅. ΠΠ½ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠΈ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ ΡΠ°Π΄ΡΠΈ ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ΅ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΏΡΠ΅ Π·Π°ΠΌΡΠ·Π°Π²Π°ΡΠ° ΡΠ΅Π½ΠΎΠ³ ΡΡΠ°ΡΠ° Ρ ΡΠ»ΠΈΠΊΡ Π΄ΠΈΡΠΊΠ°.
{
...,
"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"
]
}
]
}
ΠΠ²Π΄Π΅ ΡΡ ΡΠ²Π΅ Π°ΠΊΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½Π΅ Ρ 3 ΡΠ°Π·Π΅. Π£ ΠΏΡΠ²ΠΎΡ ΡΠ°Π·ΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΡΠΊΡΠΈΠΏΡΠ° ΠΊΠΎΡΠ° ΠΊΡΠ΅ΠΈΡΠ° ΠΏΠΎΠΌΠΎΡΠ½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ.
ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈ-ΡΡΠ³.ΡΡ :
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Π£ ΡΠ»Π΅Π΄Π΅ΡΠΎΡ ΡΠ°Π·ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΠΌΠΎ ΡΠΊΡΠΈΠΏΡΡ Ρ ΠΎΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ, ΠΊΠΎΡΠ° ΡΠ΅ ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½Π΅ ΠΎΠ΄ΠΌΠ°Ρ Π½Π°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅. ΠΠ²Π° ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ΅ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅ ΠΊΠΎΡΠ΅ ΡΡΠ΅Π±Π° ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²Π°ΡΠΈ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΡΠ°ΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ.
ΡΠ΅ΡΡΠΏ.ΡΡ :
#!/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
ΠΠ°ΠΊΠΎΠ½ ΠΎΠ²ΠΎΠ³Π° ΠΏΡΠ΅ΠΎΡΡΠ°ΡΡ ΡΠΎΡ 3 ΡΡΠ²Π°ΡΠΈ:
1) ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ΅
2) ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΠΡΠ°ΡΠ°Π½Π° ΠΏΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΡΡΠ» ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ°ΠΊ
3) ΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅ΡΡΠΏ.ΡΡ
ΡΠΊΡΠΈΠΏΡΡ Ρ ΡΠ΅Π΄ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΎΠ΄ΠΌΠ°Ρ
Π½Π°ΠΊΠΎΠ½ ΡΠΊΡΡΡΠΈΠ²Π°ΡΠ° Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΈΠ½ΡΡΠ°Π»Π»-ΠΏΠ°ΡΠΊΠ°Π³Π΅Ρ.ΡΡ :
#!/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
Π³ΡΠ°ΡΠ°Π½Π°-ΡΠ΅ΡΡΠΏ.ΡΡ :
#!/bin/bash
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
ΡΡΠ½-ΡΠ΅ΡΡΠΏ-Π°Ρ-ΡΠ΅Π±ΠΎΠΎΡ.ΡΡ :
#!/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;
Π‘Π°Π΄Π° ΠΎΡΡΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΠ°ΡΠΊΠ΅Ρ ΠΈ Π΄ΠΎΠ±ΠΈΡΠ΅ΡΠ΅ ΠΈΠ·Π»Π°Π·Π½Ρ ΡΠ»ΠΈΠΊΡ ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½Ρ Ρ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΎΠ΄Π΅ΡΠ°ΠΊ. ΠΠ°Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Ρ ΠΌΠ°ΡΠΈΠ½Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π°Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΎ Π΄ΠΈΡΠΊ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΈ Π½Π°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° Π΄ΠΎΠ±ΠΈΡΠ΅ΡΠ΅ Π³ΠΎΡΠΎΠ² ΠΡΠ°ΡΠ°Π½Π° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ.
ΠΡΡΠΏΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΈ ΠΈ Π±Π°Π»Π°Π½ΡΠ΅Ρ
ΠΠ°Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ ΡΠ»ΠΈΠΊΡ Π΄ΠΈΡΠΊΠ° ΠΊΠΎΡΠ° Π½Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΡ ΠΡΠ°ΡΠ°Π½Π° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ Π³ΡΡΠΏΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ. ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΠ°Π½Π΄Π΅ΠΊ.Π¦Π»ΠΎΡΠ΄, ΠΎΠ²Π°Ρ ΡΠ΅ΡΠΌΠΈΠ½ ΡΠ΅ ΠΎΠ΄Π½ΠΎΡΠΈ Π½Π° ΡΠ½ΠΈΡΡ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π° ΠΊΠΎΡΠ΅ ΠΈΠΌΠ°ΡΡ ΠΈΡΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅. ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° Π³ΡΡΠΏΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΠ²ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π° Ρ ΠΎΠ²ΠΎΡ Π³ΡΡΠΏΠΈ, Π° Π·Π°ΡΠΈΠΌ ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅ ΡΠ°ΠΌΠ΅ Π³ΡΡΠΏΠ΅ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈ Π±ΡΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π°). ΠΠΊΠΎ ΡΡΠ΅Π½ΡΡΠ½ΠΈ Π±ΡΠΎΡ Π½Π΅ ΠΈΡΠΏΡΡΠ°Π²Π° ΠΎΠ²Π΅ ΠΊΡΠΈΡΠ΅ΡΠΈΡΡΠΌΠ΅, Π³ΡΡΠΏΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΈ ΡΠ΅ ΡΠ°ΠΌΠ° ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π½ΠΎΠ²Π΅ ΠΏΠΎ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΡ ΡΠ»ΠΈΡΠΈ.
ΠΠ°ΠΎ Π΄Π΅ΠΎ Π½Π°ΡΠ΅Π³ Π·Π°Π΄Π°ΡΠΊΠ°, ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΠΌΠΎ Π³ΡΡΠΏΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ Π±ΠΈΡΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π° ΠΈΠ· ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½Π΅ ΡΠ»ΠΈΠΊΠ΅ Π΄ΠΈΡΠΊΠ°.
ΠΠ½ΠΎ ΡΡΠΎ ΡΠ΅ Π·Π°ΠΈΡΡΠ° ΠΈΠ·Π²Π°Π½ΡΠ΅Π΄Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ Π³ΡΡΠΏΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅. Π¦ΠΈΡΠ½Π° Π³ΡΡΠΏΠ° Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠΈ ΡΠ° ΠΠΎΠ°Π΄ ΠΠ°Π»Π°Π½ΡΠ΅ΡΠΎΠΌ ΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ Π3 Π±Π°Π»Π°Π½ΡΠ΅Ρ Π½Π° Π²ΡΡ Ρ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π° ΠΎΠ²Π΅ Π³ΡΡΠΏΠ΅ ΠΊΠ»ΠΈΠΊΠΎΠΌ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π΄ΡΠ³ΠΌΠ°Π΄ΠΈ.
ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Π±Π°Π»Π°Π½ΡΠ΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΎ ΡΠ°ΠΌ Π΄Π²Π΅ Π²Π°ΠΆΠ½Π΅ ΡΠ°ΡΠΊΠ΅:
- ΠΠ°ΡΠ΅ΡΠ°ΠΎ ΡΠ°ΠΌ Π±Π°Π»Π°Π½ΡΠ΅Ρ Π΄Π° ΠΏΡΠΈΡ Π²Π°ΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ Π½Π° ΠΏΠΎΡΡΡ 80 ΠΈ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠΈΠΎ Π³Π° Π½Π° ΠΏΠΎΡΡ 3000 Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π°, ΡΠ°ΡΠ½ΠΎ ΡΠ°ΠΌΠΎ Π³Π΄Π΅ ΠΆΠΈΠ²ΠΈ ΠΡΠ°ΡΠ°Π½Π°.
- ΠΠΎΡΡΠ°Π²ΠΈΠΎ ΡΠ°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡ ΠΎΠ΄ΡΠΆΠΈΠ²ΠΎΡΡΠΈ ΠΌΠ°ΡΠΈΠ½Π° ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ°ΠΌ ΠΈΡ ΠΏΠΈΠ½Π³ΠΎΠ²Π°ΠΎ Π½Π° ΠΏΠΎΡΡ 3000.
ΠΠΈΠ½ΠΈ ΡΠ΅Π·ΠΈΠΌΠ΅
ΠΠΎΠ½Π°ΡΠ½ΠΎ, ΡΡΠΏΠ΅Π»ΠΈ ΡΠΌΠΎ Π΄Π° ΡΡΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΆΠ΅ΡΠ΅Π½Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ ΡΠ°Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ Π²Π΅ΠΎΠΌΠ° ΠΎΡΠΏΠΎΡΠ½Ρ ΡΡΠ»ΡΠ³Ρ ΠΡΠ°ΡΠ°Π½Π°. ΠΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° Π·Π½Π°ΡΠ΅ ΠΠ Π°Π΄ΡΠ΅ΡΡ Π±Π°Π»Π°Π½ΡΠ΅ΡΠ° ΠΊΠ°ΠΎ ΡΠ»Π°Π·Π½Π΅ ΡΠ°ΡΠΊΠ΅ Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ Π΄ΠΎΠΌΠ°ΡΠΈΠ½Π° Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π΄Π° Π±ΠΈΡΡΠ΅ Ρ ΡΠ΅Π³Π° ΡΡΠΈΡΠ°Π»ΠΈ ΡΠΊΡΠΏ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°.
ΠΠ΅Π»ΠΎΠ²Π°Π»ΠΎ Π±ΠΈ ΠΊΠ°ΠΎ ΠΏΠΎΠ±Π΅Π΄Π°? ΠΠ°, ΠΏΠΎΠ±Π΅Π΄Π°. ΠΠ»ΠΈ Π½Π΅ΡΡΠΎ ΠΌΠ΅ ΠΈΠΏΠ°ΠΊ Π·Π±ΡΡΡΡΠ΅. Π¦Π΅ΠΎ Π³ΠΎΡΠ΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π·Π°Ρ ΡΠ΅Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ½ΠΈΡ ΠΊΠΎΡΠ°ΠΊΠ° ΠΈ ΡΠΎΠΏΡΡΠ΅ Π½ΠΈΡΠ΅ ΡΠΊΠ°Π»Π°Π±ΠΈΠ»Π°Π½; ΠΆΠ΅Π»Π΅ΠΎ Π±ΠΈΡ Π΄Π° Π³Π° Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·ΡΡΠ΅ΠΌ Π°ΠΊΠΎ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅. Π’ΠΎΠΌΠ΅ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ ΡΠ»Π΅Π΄Π΅ΡΠΈ ΠΎΠ΄Π΅ΡΠ°ΠΊ.
Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ°
ΠΠΎΠ½ΠΎΠ²ΠΎ ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π°Π»Π°ΡΠΊΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ΅ Π₯Π°ΡΡ
ΠΈΠ¦ΠΎΡΠΏ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ
Π‘Π°Π² ΡΠ°Π΄ ΡΠ° Π’Π΅ΡΡΠ°ΡΠΎΡΠΌΠΎΠΌ ΡΠ²ΠΎΠ΄ΠΈ ΡΠ΅ Π½Π° ΠΏΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ (*.tf
) ΠΈ ΡΡΠ²Π°ΡΠ°ΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΎΠ³Π°.
ΠΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅
ΠΠ° ΡΠ°ΠΌΠΎΠΌ ΠΏΠΎΡΠ΅ΡΠΊΡ ΡΠ°ΡΠ»Π° ΡΠ΅ΠΌΠΎ ΡΠΊΡΡΡΠΈΡΠΈ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅ ΠΊΠΎΡΠ΅ ΠΎΠ΄ΡΠ΅ΡΡΡΡ Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ Π±ΡΠ΄ΡΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π±ΠΈΡΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅ΡΠ΅Π½Π°.
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>"
}
Π¦Π΅ΠΎ ΠΏΡΠΎΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ ΡΠ²Π΅ΡΡΠΈ Π½Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ Π΄ΠΈΡΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ . ΠΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΠΌΠΈ Π΄Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΈΠΌ Π·Π° ΡΡΠ° ΡΡ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈ:
ΠΎΠ°ΡΡΡ
_ΡΠΎΠΊΠ΅Π½ β ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΏΡΠΈΡΡΡΠΏ ΠΎΠ±Π»Π°ΠΊΡ. ΠΠΎΠΆΠ΅ ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠΈ ΠΎΠ΄
ΡΠ»ΠΎΡΠ΄_ΠΈΠ΄ β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠ±Π»Π°ΠΊΠ° Π³Π΄Π΅ ΡΠ΅ΠΌΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΡΠΎΠ»Π΄Π΅Ρ_ΠΈΠ΄ β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠ΄Π΅ΡΠΊΠ° Π³Π΄Π΅ ΡΠ΅ΠΌΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΡΠ΅ΡΠ²ΠΈΡΠ΅_Π°ΡΡΠΎΡΠ½Ρ_ΠΈΠ΄ β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π°Π»ΠΎΠ³Π° ΡΡΠ»ΡΠ³Π΅ Ρ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ΠΌ Π΄Π΅Π»Ρ ΠΎΠ±Π»Π°ΠΊΠ°.
ΠΈΠΌΠ°Π³Π΅_ΠΈΠ΄ β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ»ΠΈΠΊΠ΅ Π΄ΠΈΡΠΊΠ° Π΄ΠΎΠ±ΠΈΡΠ΅Π½ΠΎΠ³ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΠΌ ΠΠ°ΡΠΊΠ΅Ρ-Π°
ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎ ΠΈΠΌΠ΅ ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° β ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎ ΠΈΠΌΠ΅ ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° ΠΏΡΠΈΡΡΡΠΏ ΠΈ Π±Π°Π·Π°ΠΌΠ° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΡ ΠΡΠ°ΡΠ°Π½Π°
Π΄Π±Π½Π°ΠΌΠ΅ β ΠΈΠΌΠ΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΡΠ½ΡΡΠ°Ρ Π¦Π₯ ΠΈ ΠΠΈΠ‘ΠΠ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
ΠΏΡΠ±Π»ΠΈΡ_ΠΊΠ΅ΠΈ_ΠΏΠ°ΡΡ
β ΠΏΡΡΠ°ΡΡ Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ° Π²Π°ΡΠΈΠΌ ΡΠ°Π²Π½ΠΈΠΌ ΡΡΡ
ΠΊΡΡΡΠ΅ΠΌ, ΠΊΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΏΠΎΠ²Π΅Π·ΠΈΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΎΠΌ ubuntu
Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ ΡΠ° Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠΈΠΌΠ°
ΠΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅ΡΠ°
Π‘Π°Π΄Π° ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅ΡΠ° Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ - Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΠ°Π½Π΄Π΅ΠΊ:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
ΠΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ΡΠ΅ Π΄Π° ΠΎΠ²Π΄Π΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ ΠΈΠ·Π½Π°Π΄.
ΠΡΠ΅ΠΆΠ° ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ
Π‘Π°Π΄Π° ΡΠ΅ΠΌΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠΈ ΠΌΡΠ΅ΠΆΡ Ρ ΠΊΠΎΡΠΎΡ ΡΠ΅ ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π°ΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅, ΡΡΠΈ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ΅ (ΠΏΠΎ ΡΠ΅Π΄Π½Π° Ρ ΡΠ²Π°ΠΊΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Ρ) ΠΈ ΠΏΠΎΠ΄ΠΈΡΠΈ Π¦Π₯ ΠΈ ΠΠΈΠ‘ΠΠ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅.
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
}
}
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ²Π°ΠΊΠΈ ΠΎΠ΄ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΎΡΠΏΠΎΡΠ°Π½ Π½Π° Π³ΡΠ΅ΡΠΊΠ΅ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠΌΠ΅ΡΡΠ΅Π½ Ρ ΡΡΠΈ Π·ΠΎΠ½Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ.
ΠΠ΅Π± ΡΠ΅ΡΠ²Π΅ΡΠΈ
Π§ΠΈΠ½ΠΈΠ»ΠΎ ΡΠ΅ Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° Π½Π°ΡΡΠ°Π²ΠΈΠΌΠΎ Ρ ΠΈΡΡΠΎΠΌ Π΄ΡΡ
Ρ, Π°Π»ΠΈ ΡΠ°ΠΌ Π½Π°ΠΈΡΠ°ΠΎ Π½Π° ΠΏΠΎΡΠ΅ΡΠΊΠΎΡΠ΅. ΠΡΠ΅ ΡΠΎΠ³Π° ΡΠ°ΠΌ ΠΏΡΠ²ΠΎ ΠΏΠΎΠ΄ΠΈΠ³Π°ΠΎ ΠΠΈΠ‘ΠΠ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ ΡΠ΅ΠΊ Π½Π°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, Π·Π½Π°ΡΡΡΠΈ ΡΠ΅Π³ΠΎΠ² ΠΠ, ΡΠ°ΠΊΡΠΏΠΈΠΎ ΡΠ°ΠΌ ΡΠ»ΠΈΠΊΡ Π΄ΠΈΡΠΊΠ° ΡΠ° ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΎΠΌ, Π³Π΄Π΅ ΡΠ°ΠΌ ΠΎΠ΄ΡΠ΅Π΄ΠΈΠΎ Ρ
ΠΎΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠ»ΠΈ ΡΠ°Π΄Π° Π½Π΅ Π·Π½Π°ΠΌΠΎ ΠΠ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΏΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ-Π°, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠ°Π²ΡΠ΅ΡΠ° ΡΠ»ΠΈΠΊΠ΅. Π‘ΡΠΎΠ³Π° ΡΠ°ΠΌ ΠΌΠΎΡΠ°ΠΎ Π΄Π° ΠΏΡΠΈΠ±Π΅Π³Π½Π΅ΠΌ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ
ΠΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΌΠ°Π·ΠΎΠ½ΠΎΠ²Ρ ΡΡΠ»ΡΠ³Ρ ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°, ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠ΅ΠΌΠΎ Π½Π΅ΠΊΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΎΠ½Π° ΠΏΡΠΈΡ
Π²Π°ΡΠΈΡΠΈ ΠΈ ΠΎΠ±ΡΠ°Π΄ΠΈΡΠΈ. ΠΠΎΡΡΠ΅Π±Π½Π° Π½Π°ΠΌ ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Π° Π΄Π° ΠΎΠ΄Π΅ Π΄ΠΎ ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈΠ·Π° Ρ
ΠΎΡΡΠ° ΠΠΈΠ‘ΠΠ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎΠ³ ΠΈΠΌΠ΅Π½Π°-Π»ΠΎΠ·ΠΈΠ½ΠΊΠ΅, ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π½Π°Π²Π΅ΠΎ Ρ Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ, Π½Π°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ°. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΌΠ°Π»ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌΠΎ ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ 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
ΠΠ½ΡΠ°Π½Ρ Π³ΡΡΠΏΠ° ΠΈ Π±Π°Π»Π°Π½ΡΠ΅Ρ
ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠΌΠΎ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ ΡΠ»ΠΈΠΊΡ Π΄ΠΈΡΠΊΠ°, ΠΊΠΎΠ½Π°ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄ΠΎΠ΄Π°ΡΠΈ Π½Π°ΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π·Π° Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° Π½Π°Π·Π½Π°ΡΠΈΠΌΠΎ Π΄Π° ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΏΠΎΡΡΠΎΡΠ΅ΡΡ ΡΠ»ΠΈΠΊΡ Π΄ΠΈΡΠΊΠ°:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Π‘Π°Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ Π³ΡΡΠΏΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ:
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"
}
}
ΠΡΠ΅Π΄ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΠΈ ΠΏΠ°ΠΆΡΡ Π½Π° ΡΠΎ ΠΊΠ°ΠΊΠΎ ΡΠΌΠΎ ΡΠΎ ΠΏΡΠ΅Π½Π΅Π»ΠΈ Ρ ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ cluster_uri
, username
ΠΈ password
. Π’ΠΎ ΡΡ ΠΊΠΎΡΠ΅ ΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΈΠ·Π²Π°Π΄ΠΈΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΡ ΠΈ ΡΡΠ°Π²ΠΈΡΠΈ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΡΠ°ΡΠ°Π½Π΅.
Π‘Π²Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ Π±Π°Π»Π°Π½ΡΠ΅ΡΠ°.
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
}
}
}
}
ΠΠ°Π»ΠΎ ΡΠ΅ΡΠ΅ΡΠ°
ΠΡΡΠ°Π»ΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΌΠ°Π»ΠΎ. ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈ, ΠΌΠΎΡΠ°ΡΠ΅ΡΠ΅ Π΄Π° ΠΎΠ΄Π΅ΡΠ΅ Π½Π° ΠΡΠ°ΡΠ°Π½Π° Π£Π ΠΈ ΡΡΡΠ½ΠΎ Π΄ΠΎΠ΄Π°ΡΠ΅ Π¦Π₯ ΠΊΠ»Π°ΡΡΠ΅Ρ (ΡΠΈΡΠΈ ΠΠ ΡΠΎΡ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠ΅) ΠΊΠ°ΠΎ ΠΈΠ·Π²ΠΎΡ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°. ΠΠ»ΠΈ Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ Π·Π½Π° ΠΠ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠΎΠ²Π΅ΡΠΈΠΌΠΎ ΠΌΡ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ ΡΡΠ²Π°Ρ Π΄ΠΎ ΠΊΡΠ°ΡΠ°.
Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π½ΠΎΠ²ΠΎΠ³ ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅ΡΠ° - ΠΡΠ°ΡΠ°Π½Ρ, ΠΈ Π΄Π°ΠΌΠΎ ΡΠΎΡ ΠΠ Π°Π΄ΡΠ΅ΡΡ Π±Π°Π»Π°Π½ΡΠ΅ΡΠ° ΠΊΠ°ΠΎ Π΄ΠΎΠΌΠ°ΡΠΈΠ½Π°. Π‘Π²Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ ΠΊΠΎΡΠ΅ Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ½ΠΈ Π½Π° ΠΊΠΎΡΠΎΡ ΡΠ΅Π½ Π±Π°Π»Π°Π½ΡΠ΅Ρ ΠΎΠ΄ΡΠ΅Π΄ΠΈ ΡΠ΅ ΡΠ°ΡΡΠΈ Ρ ΠΠΈΠ‘ΠΠ, Π° ΡΠ°ΠΌΠΈΠΌ ΡΠΈΠΌ ΠΈ Π½Π° ΡΠ²ΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠ°.
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"
}
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ°ΠΌΠΎ
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠΈΠΊΠ°ΠΆΠ΅ΠΌΠΎ ΠΠ Π°Π΄ΡΠ΅ΡΡ Π±Π°Π»Π°Π½ΡΠ΅ΡΠ° ΠΈ Π΄ΠΎΠΌΠ°ΡΠΈΠ½Π° Π¦Π»ΠΈΡΠΊΠ₯ΠΎΡΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
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"
}
ΠΠΎΠΆΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ
Π‘Π²Π΅! ΠΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½ΠΈ ΡΠ°ΡΠ» ΡΠ΅ ΡΠΏΡΠ΅ΠΌΠ°Π½ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ, ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ
, ΡΠ΅ΡΠΈ Π’Π΅ΡΡΠ°ΡΠΎΡΠΌΡ Π΄Π° ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ ΡΠ²Π΅ ΡΡΠΎ ΡΠΌΠΎ ΠΎΠΏΠΈΡΠ°Π»ΠΈ Π³ΠΎΡΠ΅. Π¦Π΅ΠΎ ΠΏΡΠΎΡΠ΅Ρ ΠΌΠΈ ΡΠ΅ ΡΡΠ°ΡΠ°ΠΎ ΠΎΠΊΠΎ 15 ΠΌΠΈΠ½ΡΡΠ°.
ΠΠ° ΠΊΡΠ°ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΡΠ΅Π»Π΅ΠΏΡ ΠΏΠΎΡΡΠΊΡ:
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
Π Ρ ΠΎΠ±Π»Π°ΠΊΡ ΡΠ΅ Π±ΠΈΡΠΈ Π²ΠΈΠ΄ΡΠΈΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΏΠΎΠ΄ΠΈΠ³Π½ΡΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅:
Π‘Π°ΠΆΠΈΠΌΠ°ΡΠΈ
Π‘Π°Π΄Π°, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΡΠ°ΡΠ°Π½Ρ ΠΊΠ°ΠΎ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²Π°ΠΊΠΎ ΠΎΠ΄ Π²Π°Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ° Π²Π΅Π»ΠΈΠΊΠΎΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΌ ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΠ°Π½Π΄Π΅ΠΊ.Π¦Π»ΠΎΡΠ΄. ΠΠΎΡΠΈΡΠ½ΠΈ Π°Π»Π°ΡΠΈ ΠΈΠ· Π₯Π°ΡΡ ΠΈΠ¦ΠΎΡΠΏ-Π° ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ ΠΠ°ΡΠΊΠ΅Ρ ΠΈ Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ ΠΌΠΎΠ³Ρ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΠΈ Ρ ΡΠΎΠΌΠ΅. ΠΠ°Π΄Π°ΠΌ ΡΠ΅ Π΄Π° ΡΠ΅ Π½Π΅ΠΊΠΎΠΌΠ΅ ΠΎΠ²Π°Ρ ΡΠ»Π°Π½Π°ΠΊ Π±ΠΈΡΠΈ ΠΊΠΎΡΠΈΡΡΠ°Π½ :)
ΠΠ‘ Π£ Π½Π°ΡΡΠ°Π²ΠΊΡ ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠΈ Π»ΠΈΠ½ΠΊ Π΄ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ Π³ΠΎΡΠΎΠ²Π΅ ΡΠ΅ΡΠ΅ΠΏΡΠ΅ Π·Π° ΠΠ°ΡΠΊΠ΅Ρ ΠΈ Π’Π΅ΡΡΠ°ΡΠΎΡΠΌ, ΡΠΈΡΠ΅ ΡΠ°ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ Π½Π°Π²Π΅ΠΎ Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»Π°Π½ΠΊΡ.
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ