Skip to content

just-ai/panda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Panda - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ систСм ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° мноТСствС сСрвСров. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ansible, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности.

Π§Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с ansible:

  • Π±Π΅Π· агСнтная систСма, доступ ΠΊ сСрвСрам осущСствляСтся ΠΏΠΎ ssh ΠΈ установки ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ПО Π½Π° сСрвСрах Π½Π΅ трСбуСтся
  • использованиС шаблонов ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСноса ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ сСрвСра ΠΈΠ· Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ источника
  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ дСйствия Π½Π° мноТСствС сСрвСров ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

Π§Ρ‚ΠΎ особСнного:

  • конфигурация panda строится Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ установлСн Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ хост. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ являСтся Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ прСдставляСт собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр прилоТСния ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ сущности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π‘Π”, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ firewall ΠΈ Ρ‚.ΠΏ., для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ deploy/undeploy/start/stop.
  • panda способна Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° мноТСство сСрвСров, Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, с сСрвСров Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для провСдСния ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ². Π’Π²ΠΈΠ΄Ρƒ наличия этой возмоТности, Π½Π΅Ρ‚ нСобходимости Π·Π°ΠΏΡ€Π΅Ρ‰Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΊΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ нСпосрСдствСнно Π½Π° сСрвСрах, ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ нСпосрСдствСнно Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС, Π²Ρ‹ Π² дальнСйшСм смоТСтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ дСйствиС pull ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ !pull ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹.
  • panda ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π³ΠΈΠ±ΠΊΠΈΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ шаблонов Freemarker ΠΈ прСдоставляСт ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ свойств вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для использования Π² макроподстановках. Благодаря этой ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Одним ΠΈΠ· интСрСсных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ "compile-time service discovery", ΠΊΠΎΠ³Π΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ шаблонов, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°Ρ… списки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ сСрвСров ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π‘Π” ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ создании Π‘Π” ΠΈ Ρ‚.ΠΏ.
  • Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ шаблонов ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ происходит локально, Ρ‡Ρ‚ΠΎ сильно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ²
  • всС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ panda ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… сСрвСрах, сначала Ρ€Π΅Π½Π΄Π΅Ρ€ΡΡ‚ΡŒΡΡ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² bash-скрипты. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠ°Π½Π΄Π°, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.
  • всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, выполняСмыС Π½Π° управляСмых ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° bash-скриптах (хотя ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹), Ρ‡Ρ‚ΠΎ сниТаСт ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Ρ‚.ΠΊ. ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипты Π½Π° bash'Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ администратор ΠΈ программист, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ ΠΈ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ с devops-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° ansible ΠΈΠ»ΠΈ puppet
  • panda написана Π½Π° Java ΠΈ ΠΎΡ‡Π΅Π½ΡŒ лСгковСсна. ΠŸΡ€ΠΈ нСобходимости Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ - Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с Π»Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒΡŽ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ вряд Π»ΠΈ Π²Π°ΠΌ понадобится Π±ΠΎΠ»Π΅Π΅ 1-2 Π΄Π½Π΅ΠΉ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ - позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π² систСмС контроля вСрсий Π² ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. master-password для чтСния сСкрСтной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ‹ смоТСтС Π·Π°Π΄Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π² консоли, Π»ΠΈΠ±ΠΎ Π² локальном ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

О Π½Π°Π·Π²Π°Π½ΠΈΠΈ: ΠΎΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΠ· ΠΈΠ³Ρ€Ρ‹ слов: Kung Fu Panda -> Config Panda (config-panda) -> просто Panda.

Установка

Установка ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°

  1. Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ сборку (TBD)
  2. Π Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΡƒ /opt/panda
  3. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ symlink Π½Π° исполняСмый Ρ„Π°ΠΉΠ»
sudo ln -s /opt/panda/bin/panda.sh  /usr/local/bin/panda
  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ~/.panda.properties ΡƒΠΊΠ°Π·Π°Π² Π² Π½Ρ‘ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:
  • config_folder - ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - .
  • ssh_user, ssh_pass - ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для ssh-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для выполнСния дСйствий Π½Π° ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… сСрвСрах
  • ssh_key_path (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) - ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ ssh ΠΊΠ»ΡŽΡ‡Π°.
  • master_pass - ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ/Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ сСкрСтных Π΄Π°Π½Π½Ρ‹Ρ….
  • env - Π² случаС, Ссли ваша конфигурация ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ окруТСния, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ здСсь Π΅Π³ΠΎ имя.

Установка ΠΈΠ· исходного ΠΊΠΎΠ΄Π° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

  1. ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости
    sudo yum install -y git java maven
    
  2. ΡΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
    git clone https://bitbucket.org/just-ai/panda.git
    
  3. ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
    cd panda
    
  4. Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сборку ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
    mvn clean package -P DEV
    
  5. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ symlink Π½Π° исполняСмый Ρ„Π°ΠΉΠ»
    sudo ln -s `pwd`/target/panda/bin/panda.sh  /usr/local/bin/panda
    
  6. ПослС этого Π²Ρ‹ смоТСтС ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ mvn compile ΠΈΠ»ΠΈ дСйствиСм Build Project Π² IDEA. Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствиС mvn package Π½Π΅ потрСбуСтся.
  7. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ~/.panda.properties Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "установка ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°"

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ основныС понятия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Panda.

  • ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ - логичСская ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π°Ρ Π½Π°Π±ΠΎΡ€ сСрвСров ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ: тСст, стСйдТ, ΠΏΡ€ΠΎΠ΄, ΠΏΡ€ΠΎΠ΄-для-особСнного-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’ нашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ опрСдСляСтся ΠΏΠ°ΠΏΠΊΠΎΠΉ с Ρ„Π°ΠΉΠ»ΠΎΠΌ env.yml, имя ΠΏΠ°ΠΏΠΊΠΈ становится ΠΈΠΌΠ΅Π½Π΅ΠΌ окруТСния.
  • Π₯ост - это просто хост, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав окруТСния ΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Π₯осты ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ env.yml Π² сСкции hosts ΠΈ содСрТат Π΄Π²Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: name - ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ имя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для ссылки Π½Π° хост Π² Ρ€Π°ΠΌΠΊΠ°Ρ… env.yml ΠΈ fqdn.
  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (экзСмпляр) - это экзСмпляр ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ сСрвиса ΠΈΠ»ΠΈ нСкая полСзная функция, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСна Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ хост. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²: nginx, postgres, Π‘Π” Π² postgres'Π΅, настройки firewall'Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ firewall-trusted-env, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ всС хосты окруТСния Π² трастСд-Π·ΠΎΠ½Ρƒ), ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, наши собствСнныС прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ характСризуСтся трСмя ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ полями:
  • ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ pg01x)
  • Ρ‚ΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (имя шаблона, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ postgresql)
  • хост (ΠΈΠ»ΠΈ маска ΠΈΠΌΡ‘Π½ хостов)
  • Π¨Π°Π±Π»ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° - это "ΠΊΠΎΠ΄" ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°: ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΠ½Ρ„ΠΈΠ³-ΠΌΠ°ΠΏΠ°, Π½Π°Π±ΠΎΡ€ скриптов для установки/запуска/остановки ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… дСйствий.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠ°ΠΏΠΎΠΊ

ΠšΠΎΡ€Π½Π΅Π²Π°Ρ ΠΏΠ°ΠΏΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°ΠΏΠΊΠ° ./example Π² этом Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈ. Π­Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π° Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ config, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ panda. Π’.ΠΊ. ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ config_folder = . Ρ‚ΠΎ слСдуСт просто Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ panda ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ ./example ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ config_folder Π² Ρ„Π°ΠΉΠ»Π΅ ~/.panda.properties.

Π’ ΠΏΠ°ΠΏΠΊΠ΅ ./example/Components находятся ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². НапримСр, Components/docker-prepare - шаблон ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° для настройки Π΄ΠΎΠΊΠ΅Ρ€-сСрвиса. ИмСнСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° являСтся имя ΠΏΠ°ΠΏΠΊΠΈ docker-prepare ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ этому ΠΈΠΌΠ΅Π½ΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этому ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° env.yml. К структурС описания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΡ‹ вСрнёмся Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

ВсС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π² ./example/* (ΠΊΡ€ΠΎΠΌΠ΅ Components) ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ test. Имя окруТСния, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ собираСмся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, задаётся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ env ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΠ°Π½Π΄Π°. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности, вСдь ΠΏΠΎ сути, ΠΏΠ°Ρ€Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² config ΠΈ env просто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅, содСрТащСй Ρ„Π°ΠΉΠ» env.yml

env.yml

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ окруТСния находится Ρ„Π°ΠΉΠ» env.yml. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π΅Π³ΠΎ структуру (порядок сСкций Π² env.yml значСния Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚, Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ hosts ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π°, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… - ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°).

hosts

Π’ сСкции hosts описываСтся список хостов входящих Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΡ… ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ алиасы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² env.yml для установки Π½Π° Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Для ΠΊΠ°ΠΆΠ½ΠΎΠ³ΠΎ хоста Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • name - ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ имя, алиас
  • fqdn - fully qualified domain name - ΠΏΠΎΠ»Π½ΠΎΠ΅ имя сСрвСра ΠΈΠ»ΠΈ ip-адрСс
  • props - ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства хоста для использования Π² макроподстановках

components

Π”Π°Π»Π΅Π΅, Π² сСкции components задаётся конфигурация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • id - id - ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. На Π΅Π³ΠΎ основС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² провСряСтся ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°. РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ составныС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: us__app__tomcat01x, Π³Π΄Π΅ us - локация, app - Ρ€ΠΎΠ»ΡŒ сСрвСра, tomcat - имя сСрвиса, 01 - Π½ΠΎΠΌΠ΅Ρ€, x - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Π’ дальнСйшСм Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символ * ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ panda.sh -env prod reload us__app__tomcat* - сообщит систСмС, Ρ‡Ρ‚ΠΎ трСбуСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ всСх tomcat Π² us.
  • component - имя шаблона ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. По сути это просто имя ΠΏΠ°ΠΏΠΊΠΈ Π² Components
  • host - имя хоста, ΠΈΠ»ΠΈ список ΠΈΠΌΡ‘Π½, ΠΈΠ»ΠΈ плСйсхолдСр. Π—Π°Π΄Π°Ρ‘Ρ‚ список хостов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ устанавливаСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. НапримСр, '*' - ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΊΠΎ всСм сСрвСрам, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π² сСкции hosts.
  • props - ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π·Π°Π΄Π°Ρ‘Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ свойств для использования Π² макроподстановках Ρ‡Π΅Ρ€Π΅Π· ${props.xxx}. Если ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅ свойство встрСчаСтся Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ props ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, свойства ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² самом ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ component.yml ΠΈ Π² сСкции hosts.
  • config - имя ΠΏΠ°ΠΏΠΊΠΈ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌΠΈ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ настройки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Имя ΠΏΠ°ΠΏΠΊΠΈ задаётся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ°ΠΏΠΊΠΈ окруТСния. Π’ случаС Ссли эта ΠΏΠ°ΠΏΠΊΠ° ΡƒΠΊΠ°Π·Π°Π½Π°, Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ систСма сначала срСндСрит ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· шаблона, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ· этой ΠΏΠ°ΠΏΠΊΠΈ config ΠΈ Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΠΈΡ… ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ получаСтся, Ρ‡Ρ‚ΠΎ конфигурация заданная Π² ΠΏΠ°ΠΏΠΊΠ΅ config являСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΉ.

props

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΈ послСдняя Ρ‡Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° env.yml - сСкция props, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ свойства окруТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π»ΡŽΠ±Ρ‹Ρ… ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ….

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° описания шаблона ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ /Components, имя ΠΏΠ°ΠΏΠΊΠΈ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ» component.yml, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠ°ΠΏΠΊΠΈ config - с шаблонами ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΊΠ° scripts, с ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ скриптами.

component.yml

Рассмотрим структуру Ρ„Π°ΠΉΠ»Π° component.yml

Π€Π°ΠΉΠ» component.yml состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… сСкций:

  • props - Π·Π°Π΄Π°Ρ‘Ρ‚ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ значСния свойств ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°
  • commands - Π·Π°Π΄Π°Ρ‘Ρ‚ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… скриптов
  • configMap - опрСдСляСт располоТСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° сСрвСрС.

props

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ свойств, для использования Π² макроподстановках Π²Π½ΡƒΡ‚Ρ€ΠΈ шаблонов.

НапримСр:

props:
  port: 1210
  prometheusPort: 1215
  healthCheck: true

К свойствам ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· шаблонов ΠΊΠ°ΠΊ ${props.port}. Бвойства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈ объявлСнии экзСмпляра ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² env.yml Π² сСкции components ΠΈΠ»ΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… свойствах окруТСния Π² сСкции props Ρ„Π°ΠΉΠ»Π° env.yml

commands

Π’ сСкции commands опрСдСляСтся ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ ΠΊΠΎΠΌΠΌΠ°Π½Π΄ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΈΡ… скриптов.

commands:
  script: control.sh
  commands:
    deploy:
      cmd: ./deploy.sh

Π’ ΠΏΠΎΠ»Π΅ commands.script - задаётся скрипт, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ссли для Π½ΠΈΡ… Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… скриптов Π² сСкции commands. Π’ ΠΏΠΎΠ»Π΅ commands.commands - ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ скрипты для выполнСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄. НапримСр Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ задаётся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ deploy. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ скрипты ΠΈ для всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ start/stop ΠΈ Ρ‚.ΠΏ.

ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всСх Ρ„Π°ΠΉΠ»ΠΎΠ², ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² этой сСкции задаётся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ°ΠΏΠΊΠΈ scripts Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ.

configMap

configMap:
  - source: application.yml
    target: /etc/justai/botserver/application.yml
    mkdirs: true
    user: botserver
  - source: botserver.cfg
    target: /etc/justai/botserver/botserver.cfg
    user: botserver
    optional: true

Π’ этой сСкции задаётся ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ· локальной ΠΏΠ°ΠΏΠΊΠΈ config Π½Π° Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива configMap ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • source - ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, имя локального Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ°ΠΏΠΊΠ΅ config
  • target - ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π½Π° сСрвСрС
  • mkdirs - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ
  • user - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ».
  • mode - с ΠΊΠ°ΠΊΠΈΠΌΠΈ пСрмиссиями ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»
  • directory - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ ΠΏΠ°ΠΏΠΊΡƒ. Π’ этом случаС Π±ΡƒΠ΄Π΅Ρ‚ скопировано всё содСрТимоС ΠΏΠ°ΠΏΠΊΠΈ source Π² ΠΏΠ°ΠΏΠΊΡƒ target
  • optional - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ являСтся Π»ΠΈ Ρ„Π°ΠΉΠ» ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚.Π΅. Π²Ρ‹ΠΊΠΈΠ΄Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли Ρ„Π°ΠΉΠ» Π½Π΅ сущСствуСт.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ panda ΡΠ²Π»ΡΡŽΡ‚ΡΡ дСйствия: render, push, deploy ΠΈ pull. НиТС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны, Π° здСсь рассмотрим свойства, ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх ΠΊΠΎΠΌΠ°Π½Π΄.

Для Π²Ρ‹Π·ΠΎΠ²Π° всСх ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки: panda.sh -env test-htz pull, Π»ΠΈΠ±ΠΎ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ~/.panda.properties env=test-htz (см. Ρ€Π°Π·Π΄Π΅Π» Установка)

ВсС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ дСйствия Π½Π°Π΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π² послСднСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ id ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствиС. Π’ качСствС id ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ список ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ плСйсхолдСры *. Если id ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ дСйствия Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊΠΎ всСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ окруТСния.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

render

panda.bat -env <environment> render [component-id] 

Команда срСндСрит ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² ΠΏΠ°ΠΏΠΊΡƒ <config>/<env>/!render/<host>/<component-id>

push

panda.bat -env <environment> push [component-id] 

Команда сначала Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚, Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (ΠΈΠ»ΠΈ для всСго окруТСния) Π½Π° сСрвСр, сохраняСт ΠΈΡ… Π½Π° сСрвСрС Π² ΠΏΠ°ΠΏΠΊΠ΅ ~/panda/<component-id> ΠΈ раскладываСт ΠΏΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΌ путям, сконфигурированным Π² configMap.

deploy

cm.bat -env <environment> deploy [component-id] 

Команда выполняСт Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ДСйствиС deploy ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выполняСт дСйствия render ΠΈ push. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΉ выполняСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

  • Π² Ρ„Π°Π·Π΅ render выполняСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° шаблонов, Π² Ρ‚ΠΎΠΌ числС, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ макроподстановки Π² Ρ„Π°ΠΉΠ»Π΅ control.sh (ΠΈΠ»ΠΈ deploy.sh, Ссли ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°)
  • Π² Ρ„Π°Π·Π΅ push этот скрипт, вмСстС со всСй ΠΏΡ€ΠΎΡ‡Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΏΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅Ρ‚ Π½Π° сСрвСр
  • Π² Ρ„Π°Π·Π΅ deploy этот Ρ„Π°ΠΉΠ» просто выполняСтся Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС ΠΏΡƒΡ‚Ρ‘ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π»ΠΈΠ±ΠΎ control.sh deploy Π»ΠΈΠ±ΠΎ просто deploy.sh, Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

pull

cm.bat -env <environment> pull [component-id] 

Команда ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (ΠΈΠ»ΠΈ для всСго окруТСния) ΠΈ сохраняСт ΠΈΡ… Π² ΠΏΠ°ΠΏΠΊΡƒ config/<env>/!pull/<host>/<component-id>.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ deploy ΠΈ ΠΏΠΎ сути ΡΠ²Π»ΡΡŽΡ‚ΡΡ просто Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° скриптС control.sh ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π°Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ просто Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π²Ρ‹Π·ΠΎΠ²Ρ‹ systemctl.

  • reload
  • start
  • stop
  • restart

ДСйствия ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ/Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ сСкрСтных Π΄Π°Π½Π½Ρ‹Ρ…

encrypt

panda.bat -env test encrypt MY_PASSWORD

ДСйствиС позволяСт Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ строку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ master_pass Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ Π² локальном ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ (~/.panda.properties). Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ свойства ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² env.yml Π² Π²ΠΈΠ΄Π΅:

components:
  - id: app
    props:
      db_password: SECRET:<строка ΠΈΠ· encrypt>

decrypt

panda.bat -env test decrypt <строка сгСнСрированная ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ encrypt>

ДСйствиС позволяСт Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ строку, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ€Π°Π½Π΅Π΅ дСйствиСм encrypt.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ нСбольшого окруТСния ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… хостов, с установлСнной систСмой ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, которая позволяСт ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ этих хостов ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡ… Π² grafana.

ПослС установки prometheus ΠΈ grafana Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ находится Π² ΠΏΠ°ΠΏΠΊΠ΅ ./example, ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ test, ΠΈ содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Π½ΠΎΠ΄
  • Π½Π° всСх Π½ΠΎΠ΄Π°Ρ… установлСн docker ΠΈ firewalld
  • всС Π½ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΡƒΡŽ Π·ΠΎΠ½Ρƒ firewalld
  • Π½Π° ΡƒΠ·Π»Π΅ infra01 установлСна систСма ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°: prometheus/grafana
  • Π½Π° всСх ΡƒΠ·Π»Π°Ρ… установлСн node-exporter ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ

Для воспроизвСдСния этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Π°ΠΌ понадобится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ panda
  2. Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΈ Π½Π° любом хостингС, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° Π½ΠΈΡ… CentOS 7
  3. ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° sudo. Если ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‚ΠΎ для Π½Π΅Π³ΠΎ потрСбуСтся Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π²Π° особСнных Ρ„Π»Π°Π³Π°: NOPASSWD ΠΈ !requiretty. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:
    panda  ALL=(ALL)    NOPASSWD: ALL
    Defaults:panda !requiretty
    
  4. ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ~/.panda.properties ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: ssh_user=<имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ> ssh_pass=<ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>
  5. ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ адрСса Π²Π°ΡˆΠΈΡ… хостов Π² Ρ„Π°ΠΉΠ»Π΅ env.yml
  6. Π² ΠΏΠ°ΠΏΠΊΠ΅ ./example Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ panda -env test deploy -y
  7. Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² локальном dns адрСса для тСстов:
    • prometheus.somecompany.org
    • grafana.somecompany.org
  8. ПослС этого Π²Ρ‹ смоТСтС ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ сСрвисам prometheus/grafana ΠΏΠΎ этим ΠΈΠΌΠ΅Π½Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ basic-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ, Π»ΠΎΠ³ΠΈΠ½: mon-admin/mon-admin

TODO:

  • большС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
  • тэги - для Π²Ρ‹Π±ΠΎΡ€Π° Π·ΠΎΠ½/хостов/Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для установки
  • порядок выполнСния тасок ΠΏΠΎ порядку опрСдСлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²
  • dependsOn
  • сохранСниС прогрСсса ΠΈ Ρ„Π»Π°Π³ continue
  • Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (наслСдованиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²)
  • Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ дСкларация свойств ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ…)
  • дСйствия diff, status, check
  • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° zones/namespaces

About

Panda - configuration management tool

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •