Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ свой Nginx ΠΏΠ°Ρ€ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄

ΠŸΡ€ΠΈΠ²Π΅Ρ‚!
МСня Π·ΠΎΠ²ΡƒΡ‚ Π‘Π΅Ρ€Π³Π΅ΠΉ, я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ инфраструктурным ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ API ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ tinkoff.ru.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»Π°ΡΡŒ наша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ балансировщиков Π½Π° основС Nginx для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ расскаТу ΠΎΠ± инструмСнтС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ….

Nginx β€” это ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ прокси-сСрвСр. Он отличаСтся большим количСством ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π²ΠΎΡ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ трСбования ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ балансировщика ΠΈ вСрсии Nginx (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ http/2 ΠΈ проксированиС grpc), ΠΈ составу Π΅Π³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Нам хочСтся Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ²Π΅ΠΆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ с Π½ΡƒΠΆΠ½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ дистрибутивом Linux. Π’ нашСм случаС это deb- ΠΈ rpm-based систСмы. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ рассматриваСтся.

Нам хочСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π½Π°ΡˆΠΈΡ… балансировщиков. И здСсь сразу встаСт вопрос β€” ΠΊΠ°ΠΊ этого Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, Π·Π°Ρ‚Ρ€Π°Ρ‚ΠΈΠ² ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС рСсурсов? А Π΅Ρ‰Π΅ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ процСсс Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ число Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Π² Π²ΠΈΠ΄Π΅ deb/rpm ΠΏΠ°ΠΊΠ΅Ρ‚Π° для Π½ΡƒΠΆΠ½ΠΎΠΉ ОБ.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

  • НС всСгда Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ со свСТСй вСрсиСй Nginx.
  • НСт ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ модулями.
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ сборка ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ попросту ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Π°.
  • НСт описания, ΠΊΠ°ΠΊ собран Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ инстанс Nginx.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π½Π΅ΠΊΠΈΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» Π±Ρ‹ Π½Π° Π²Ρ…ΠΎΠ΄ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π² Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ собирал ΠΏΠΎ Π½Π΅ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Nginx с Π½ΡƒΠΆΠ½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ.

НС найдя подходящСго для нас Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π½Π° просторах Π³ΠΈΡ‚Ρ…Π°Π±Π°, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой инструмСнт β€” nginx-builder.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π’ нашСм инструмСнтС ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ описаниС спСцификации Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Для этого Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ β€” yaml. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ спСцификации:

nginx_version: 1.14.1
output_package: deb
modules:
  - module:
      name: nginx-auth-ldap
      git_url: https://github.com/kvspb/nginx-auth-ldap.git
      git_branch: master
      dependencies:
        - libldap2-dev
  - module:
      name: ngx_http_substitutions_filter_module
      git_url: https://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
  - module:
      name: headers-more-nginx-module
      web_url: https://github.com/openresty/headers-more-nginx-module/archive/v0.261.zip
  - module:
      name: nginx-module-vts
      git_url: https://github.com/vozlt/nginx-module-vts.git
      git_tag: v0.1.18
  - module:
      name: ngx_devel_kit
      git_url: https://github.com/simplresty/ngx_devel_kit.git
      git_tag: v0.3.0
  - module:
      name: ngx_cache_purge
      git_url: https://github.com/FRiCKLE/ngx_cache_purge.git
  - module:
      name: ngx_http_dyups_module
      git_url: https://github.com/yzprofile/ngx_http_dyups_module.git
  - module:
      name: nginx-brotli
      git_url: https://github.com/eustas/ngx_brotli.git
      git_tag: v0.1.2
  - module:
      name: nginx_upstream_check_module
      git_url: https://github.com/yaoweibin/nginx_upstream_check_module.git
  - module:
      name: njs
      git_url: https://github.com/nginx/njs.git
      git_tag: 0.2.5
      config_folder_path: nginx

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ deb-ΠΏΠ°ΠΊΠ΅Ρ‚ с вСрсиСй Nginx 1.14.2 с Π½ΡƒΠΆΠ½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. БСкция с модулями β€” ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ:

  • НазваниС.
  • АдрСс, Π³Π΄Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ:
    • Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ»ΠΈ Ρ‚Π΅Π³.
    • Π’Π΅Π±-ссылка Π½Π° Π°Ρ€Ρ…ΠΈΠ².
    • Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ ссылка Π½Π° Π°Ρ€Ρ…ΠΈΠ².

НСкоторыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ установки Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… зависимостСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для nginx-auth-ldap Π½ΡƒΠΆΠ΅Π½ установлСнный libldap2-dev. НСобходимыС зависимости Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ описании модуля.

ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅

Π’ нашСм инструмСнтС ΠΌΠΎΠΆΠ½ΠΎ быстро ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ с установлСнными ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ для компиляции, сборки ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ПО. Π—Π΄Π΅ΡΡŒ ΠΊΠ°ΠΊ нСльзя Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ со всСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ (Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² docker-Ρ„Π°ΠΉΠ»ΠΎΠ² для ubuntu ΠΈ centos).

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ спСцификация составлСна ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, ΠΌΡ‹ запускаСм наш сборщик, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ установив Π΅Π³ΠΎ зависимости:

pip3 install -r requirements.txt
./main.py build -f [ΠΊΠΎΠ½Ρ„ΠΈΠ³_Ρ„Π°ΠΉΠ»].yaml -r [Π½ΠΎΠΌΠ΅Ρ€_Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ]

НомСр Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ здСсь ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΈ слуТит для вСрсионирования сборок. Он записываСтся Π² ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‡Ρ‚ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° сСрвСрах.
По Π»ΠΎΠ³Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° происходящим. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ основных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ²:

builder - INFO - Parse yaml file: example.config.yaml
builder - INFO - Download scripts for build deb package
builder - INFO - Downloading nginx src...
builder - INFO - --> http://nginx.org/download/nginx-1.14.1.tar.gz
builder - INFO - Downloading 3d-party modules...
builder - INFO - Module nginx-auth-ldap will download by branch
builder - INFO - -- Done: nginx-auth-ldap
builder - INFO - -- Done: ngx_http_substitutions_filter_module
builder - INFO - Module headers-more-nginx-module will downloading
builder - INFO - Module nginx-module-vts will download by tag
builder - INFO - -- Done: nginx-module-vts
builder - INFO - Module ngx_devel_kit will download by tag
builder - INFO - -- Done: ngx_devel_kit
builder - INFO - -- Done: ngx_cache_purge
builder - INFO - -- Done: ngx_http_dyups_module
builder - INFO - Downloading dependencies
builder - INFO - Building .deb package
builder - INFO - Running 'dh_make'...
builder - INFO - Running 'dpkg-buildpackage'...
dpkg-deb: building package 'nginx' in '../nginx_1.14.1-1_amd64.deb'.

Π’Π°ΠΊ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΠ°Ρ€ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΡ‹ создаСм ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ сборку Nginx, ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ появляСтся Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½ скрипт.

ВстраиваниС

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ наш инструмСнт Π² CI/CD процСссы. Π’ этом ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ любая ΠΈΠ· мноТСства ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½Π° сСгодняшний дСнь CI-систСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Teamcity ΠΈΠ»ΠΈ Gitlab CI.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ спСцификации Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ автоматичСски запускаСтся сборка Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°. НомСр Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ привязываСтся ΠΊ счСтчику запусков Π±ΠΈΠ»Π΄Π°.
ΠŸΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ² Π΅Ρ‰Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π° Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Nexus, Artifactory ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ плюсом являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ yaml-Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Ansible ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ систСму автоматичСского конфигурирования, ΠΈ Π±Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π½ΠΎΠΌΠ΅Ρ€ вСрсии ΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ.

Π§Ρ‚ΠΎ дальшС

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½. Π’ΠΎΡ‚ Π½Π°Π΄ Ρ‡Π΅ΠΌ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ сСйчас:

  • Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ конфигурирования, Π½ΠΎ ΠΏΡ€ΠΈ этом сохраняСм Π΅Π΅ максимально простой. НС хочСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ тысячу ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ссли Π½ΡƒΠΆΠ½ΠΎ всСго Π΄Π²Π°, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. К этому относятся Ρ„Π»Π°Π³ΠΈ компиляции (сСйчас ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ src/config.py), ΠΏΡƒΡ‚ΠΈ установки, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для запуска.
  • ДобавляСм Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ автоматичСской ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ².
  • ВыполнСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ модуля (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для использования github.com/nginx-modules/nginx_upstream_check_module Π½ΡƒΠΆΠ½ΠΎ сначала ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ вСрсии)
  • ДобавляСм ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ тСстов:
    • ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ устанавливаСтся.
    • Nginx ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ собран с Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ ΠΈ модулями.
    • Π‘ΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ, ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ записи ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Но ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим инструмСнтом Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΆΠ΅ сСйчас, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” github.com/TinkoffCreditSystems/Nginx-builder wellcome!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com