áá±áá¹áá¬ááŸáá·áºááŒá¬ážááá¯ááºáá«á!
áá»áœááºá¯ááºáá¡áááºááŸá¬ Sergey ááŒá
áºáá«áááºá áá»áœááºá¯ááºááẠtinkoff.ru ááááºáá±á¬ááºážá API á¡ááœá²á·ááœáẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááºáá»ááºáá®áá¬á¡ááŒá
Ạá¡áá¯ááºáá¯ááºáá«áááºá
á€áá±á¬ááºážáá«ážááœááºáá»áœááºá¯ááºááá¯á·áá¡áááºážááẠBalancers ááá¯á¡ááŒá±áá¶á áá»áááºááœááºáá»áŸá¬ááŒááºáááºáá¬ááœááºááŒá¯á¶ááœá±á·ááá±á¬ááŒá¿áá¬áá»á¬ážá¡ááŒá±á¬ááºážááŒá±á¬áá«áááºá
Nginx ááẠáááºá
á¯á¶áá¯á¶ážá áááºááŒáœá
áœá¬ áá¯ááºáá±á¬ááºáá±áá±á¬ ááá±á¬ááºá
á®áá¬áá¬ááŒá
áºáááºá áááºážááœáẠmodule á¡áá»á¬ážá¡ááŒá¬ážáá« á ááºáááºá
áá®ážááŒá¬áž Linux ááŒáá·áºááŒá°ážááŸá¯á¡á±á¬ááºááœáẠáá¯ááºáá±á¬ááºáá±ááá·áº ááá¯á¡ááºáá±á¬ module á¡á á¯á¶áá«ááá·áº á¡áá áºáá±á¬áá¬ážááŸááºážááᯠáá»áœááºá¯ááºááá¯á· ááŒááºááœá±á·ááá¯áá«áááºá áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá áááºážááá¯á·ááẠdeb- ááŸáá·áº rpm-based á áá áºáá»á¬ážááŒá áºáááºá ááœááºááááºáá¬áá»á¬ážáá«áá±á¬ ááœá±ážáá»ááºááŸá¯ááᯠá€áá±á¬ááºážáá«ážááœáẠááá·áºááœááºážá ááºážá á¬ážáááºááá¯ááºáá«á
áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á áá»áááºááœááºáá»áŸá¬áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠá¡ááŒááºááŒá±á¬ááºážáá²ááá¯áá«áááºá á€áá±áá¬ááœáẠáá»ááºáá»ááºážááẠáá±ážá áá¬ááŸááá¬áááº- á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºááá¯ááºááá»áŸ á¡áááºážáááºáá¯á¶ážáᬠáááºážááᯠáááºááá¯á·á¡á±á¬ááºááŒááºááá¯ááºáááºáááºážá áá»áœááºá¯ááºááá¯á·ááẠinput parameters áá»á¬ážááᯠááá·áºáááºáá¶áá«ááºáá»á¬áž áááºááŸááºááá¯ááºá á±ááẠáá¯ááºáááºážá ááºááᯠáááºááŸááºááŒááºážááẠááá¯áá±á¬ááºážáááºááŒá áºááŒá®áž output ááœáẠááá¯áá»ááºáá±á¬ OS á¡ááœáẠdeb/rpm package áá¯á¶á á¶ááŒáá·áº artifact áá áºáá¯ááᯠáááºáá¶áááŸááááºááŒá áºáááºá
ááááºá¡áá±ááŒáá·áº ááŒá¿áá¬áá»á¬ážá áœá¬ááᯠáá¯á¶áá±á¬áºááá¯ááºáááº-
- Nginx ááá±á¬ááºáá¯á¶ážááœááºáá¬ážááŸááºážááŸáá·áº á¡ááŒá²áááºážáááºáá±á·áá»áºáá»á¬áž áááŸááá«á
- ááá¯á¡ááºáá±á¬ module áá»á¬ážááŸáá·áºáááºáá±á·áá»áºáá»á¬ážáááŸááá«á
- áááºáá±á·áá»áºáá áºáá¯ááᯠááá¯ááºááá¯áẠááŒá¯á á¯ááŒá®áž áááºáá±á¬ááºááŒááºážááẠá¡áá»áááºáá¯ááºááŒá®áž áááºáááºážááœááºážááŸáááºá
- á€ááá¯á·ááá¯ááºááᯠNginx á á¶ááá°áá¬ááᯠáááºááá¯á·á á¯á ááºážáá¬ážáááºááᯠáá±á¬áºááŒáá»ááºáááŸááá«á
á€ááŒá¿áá¬áá»á¬ážááá¯ááŒá±ááŸááºážáááºá áá°áá¬ážáááºááá¯ááºáá±á¬áá±á¬áºáááºááœáẠáááºááŸááºáá»ááºáá áºáá¯ááá·áºááœááºážáááºááŸáá·áº áááºážááá¯á¡ááŒá±áá¶á ááá¯á¡ááºáá±á¬áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŒáá·áº Nginx áááºáá±á·ááºá»ááᯠá á¯á ááºážááá·áºáááááá¬áá áºáá¯á¡ááœáẠááá¯á¡ááºáá¬áááºá
Github ááá»ááºááŒá±á¬ááŸáá±á¬áá±áá¬ááœááºáá»áœááºá¯ááºááá¯á·á¡ááœááºááá·áºáá»á±á¬áºáá±á¬ááœá±ážáá»ááºááœáá·áºááá¯ááŸá¬áááœá±á·áá±á¬ááŒá±á¬áá·áºáá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºáááááá¬ááá¯áááºáá®ážáááºáá¯á¶ážááŒááºáá²á·ááẠ-
á¡áá±ážá áááºá¡áá»ááºá¡ááẠ(áááºážááŒááº)
áá»áœááºá¯ááºááá¯á·ááá°ážááºááœááºá ááá¯á·áá±á¬áẠGit repository ááœááºááá·áºááœááºážááá¯ááºááá·áº áá¯ááºáá¯á¶á á¶ááŒáá·áº áááºááŸááºáá»ááºááá±á¬áºááŒáá»ááºááᯠáááºáá®ážááá¯áá«áááºá ááá¯ááá¯á·áá¯ááºáá±á¬ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠááá¯ááá¯á·áá±á¬á¡áá¬áá»á¬ážá¡ááœáẠáááºážááŸá®ážááá·áºáá¯á¶á á¶ááᯠááœá±ážáá»ááºáá²á·ááẠ- 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
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá¯á¡ááºáá±á¬ module á¡á á¯á¶ááŒáá·áº Nginx áá¬ážááŸááºáž 1.14.2 áá«ááá·áº deb áááºáá±á·áá»áºááᯠááŒááºááá¯ááŒá±á¬ááºáž ááœáŸááºááŒáá«áááºá áá±á¬áºáá»á°ážáá»á¬ážáá«ááá·áºá¡ááá¯ááºážááẠá áááºááŒáá¯ááºááœá±ážáá»ááºááá¯ááºáááºá áááºážááá¯á·áá áºáá¯á á®á¡ááœáẠáááºáááºááŸááºááá¯ááºáááº-
- á¡áááºá
- áááá¯ááºáá±á¬ááááºá
á¬-
- Git repository á¡ááá¯ááºážá¡ááẠááá¯á·ááá¯áẠáááºááá¯áááºáž áááºááŸááºááá¯ááºáááºá
- áááºááá·áºááºááᯠááááºážáááºážáá«á
- ááŸááºáááºážááá¯á· ááŒááºááœááºážááá·áºááºá
á¡áá»áá¯á·áá±á¬ module áá»á¬ážááẠáááºáááºááẠáá±á¬ááºáááºááŸá®ááá¯ááŸá¯áá»á¬áž ááá¯á¡ááºáááºá á¥ááᬠnginx-auth-ldap ááẠlibldap2-dev ááᯠááá·áºááœááºážáááºááá¯á¡ááºáááºá module ááá¯áá±á¬áºááŒááá·áºá¡áá« ááá¯á¡ááºáá±á¬ááŸá®ááá¯ááŸá¯áá»á¬ážááá¯áááºáž áááºááŸááºááá¯ááºáá«áááºá
áááºáááºážáá»ááº
áá»áœááºá¯ááºááá¯á·ááá°ážááºááœáẠcompilationá package assembly ááŸáá·áº á¡ááŒá¬ážáá±á¬ auxiliary software áá»á¬ážá¡ááœáẠááá·áºááœááºážáá¬ážáá±á¬ utilities áá»á¬ážáá«ááŸááá±á¬ áááºáááºážáá»ááºáá áºáá¯ááᯠáá»ááºááŒááºá áœá¬áááá¯ááºáááºá áááºááá¯á¡ááºááá»áŸá¡áá¬á¡á¬ážáá¯á¶ážáá«ááŸááá±á¬ Docker ááœááºááááºáá¬ááẠá€áá±áá¬ááœáẠá á¶ááá°áá¬ááŒá áºááẠ(ááá¯ááŸá±á¬ááºáá¯á¶ááœáẠubuntu ááŸáá·áº centos á¡ááœáẠDocker ááá¯ááºáá»á¬ážá ááá°áá¬á¡áá»áá¯á·ááŸáááŸáá·áºááŒá®ážááŒá áºáááº)á
áááºááŸááºáá»ááºááᯠáá±ážááœá²ááŒá®áž áááºáááºážáá»ááºááᯠááŒááºáááºááŒá®ážáá±á¬ááºá áááºážá ááŸá®ááá¯ááŸá¯áá»á¬ážá¡á¬áž ááááºá ááá·áºááœááºážáá¬ážááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·á áááºáá±á¬ááºáá°ááᯠá áááºááá¯ááºáá«áááºá
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 á ááºážáá±ážááœá²ááᯠáááºáá®ážááŒá®áž á¡áá¯ááºááẠscript á áááºááá·áºáá±áá¬á០áááºážááœáŸááºááœáẠáá±á«áºáá¬áá«áááºá
ááá¬ážáááºáž
áá»áœááºá¯ááºááá¯á·ááááááá¬ááᯠCI/CD áá¯ááºáááºážá
ááºáá»á¬ážááœááºáááºáž áá±á«ááºážá
ááºááá¯ááºáááºá ááá±á·áááºááŸáááŸááá±ááá·áº CI á
áá
áºáá»á¬ážá
áœá¬áá²á០áááºááá·áºá¡áá¬áááᯠáááºážááᯠá¥ááá¬á¡áá±ááŒáá·áº áá°áá®áá±ážááá¯ááºáá«áááºá
ááááºá¡áá±ááŒáá·áº Git repository ááœáẠáááºááŸááºáá»ááºáá»á¬áž ááŒá±á¬ááºážáá²ááá·áºá¡áá«ááá¯ááºážá artifact áááºáá±á¬ááºááŸá¯ááẠá¡ááá¯á¡áá»á±á¬áẠá
áááºáááºááŒá
áºáááºá áááºážááŒááºááŸá¯áá¶áá«ááºááẠbuild launch counter ááŸáá·áº áá»áááºáááºáá¬ážáááºá
á¡áá»áááºá¡áááºážáááºááá¯áá±ážááŒááºážááŒáá·áºá áááºááẠáááºááá±ááᶠáááºáá±á·áá»áºááá¯ááŸá±á¬ááºááŸá¯á Nexusá Artifactory á
áááºááá¯á·ááá¯á· áá±ážááá¯á·ááá·áº artifact ááᯠconfigure áá¯ááºááá¯ááºáá«áááºá
áá±á¬ááºáááºá¡á¬ážáá¬áá»ááºáá áºáá¯ááá±á¬á· yaml configuration ááá¯ááºááᯠAnsible ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±á¬ á¡ááá¯á¡áá»á±á¬ááºááœá²á·á ááºážáá¯á¶á áá áºááá¯á· áá»áááºáááºááá¯ááºááŒá®ážá áááºážááŸáá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯ááá¯áá±á¬ áá¬ážááŸááºážáá¶áá«ááºááŸáá·áº áááºáá±á·ááºá»á¡áá»áá¯ážá¡á á¬ážááᯠááá°ááá¯ááºáá«áááºá
áá±á¬ááºáá áºáá¯ááá¬áá²
ááá±á¬áá»ááºá áááŒá®ážáá±ážáá°ážá á€áááºááŸá¬ áá»áœááºá¯ááºááá¯á· ááá¯áá¯ááºáá±á¬ááºáá±ááá·áºá¡áá¬ááŒá áºáááº-
- áá»áœááºá¯ááºááá¯á·ááẠááœá²á·á ááºážááŸá¯áááŒá áºááá¯ááºááŒá±ááᯠáá»á²á·ááœááºáá±á¬áºáááºáž áá áºáá»áááºáááºážááœáẠáááºážááᯠáááºááá¯ááºááá»áŸ ááá¯ážááŸááºážá¡á±á¬ááºáá¬ážáá«á áááºááẠááŸá áºáá¯áá¬ááá¯á¡ááºáá«á áá±á¬ááºáá áºáá±á¬ááºááᯠááááºááŸááºáá»ááºáá² áá»ááºááẠáá¯á¶áá±á¡á¬ážááŒáá·áº ááá¯ááºáá®áá«áááºá áááºážááœáẠá á¯á ááºážááŸá¯á¡áá¶áá»á¬áž áá«áááºááẠ(ááᯠáááºááẠáááºážááá¯á·ááᯠá¡ááœááºážááá¯ááºážááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯áẠsrc/config.py ááœáẠááŒá±á¬ááºážáá²ááá¯ááºáááº)á áááºáááºááŸá¯áááºážááŒá±á¬ááºáž ááŸáá·áº á áááºá¡áá¯á¶ážááŒá¯áá°á
- áá»áœááºá¯ááºááá¯á·ááẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ artifact repositories ááá¯á· áááºáá±á·áá»áºáá áºáá¯ááᯠá¡ááá¯á¡áá»á±á¬áẠáá±ážááá¯á·ááŒááºážá¡ááœáẠááœá±ážáá»ááºá áá¬áá»á¬ážááᯠáá±á«ááºážááá·áºáá±áá«áááºá
- áá±á¬áºáá»á°ážáá
áºáá¯ááᯠáááºááá·áºá¡áá« á
áááºááŒáá¯ááºá¡áááá·áºááᯠáá¯ááºáá±á¬ááºáá« (á¥ááá¬á á¡áá¯á¶ážááŒá¯áááº
github.com/nginx-modules/nginx_upstream_check_module áááºáááºááŸááºááŸááºáá¬ážááŸááºážáá áºáá¯á patch ááᯠáŠážá áœá¬á¡áá¯á¶ážááŒá¯ááá«áááº) - á
á
áºáá±ážááŸá¯áá»á¬ážááá·áºááŒááºáž-
- á¡áá¯ááºááᯠááŸááºáááºá áœá¬ ááá·áºááœááºážáá¬ážáááºá
- Nginx ááœáẠááá¯á¡ááºáá±á¬áá¬ážááŸááºážááŸáááŒá®áž ááá¯á¡ááºáá±á¬á¡áá¶áá»á¬ážááŸáá·áº áá±á¬áºáá»á°ážáá»á¬ážááŒáá·áº áááºáá±á¬ááºáá¬ážáááºá
- ááá¯á¡ááºáá±á¬ áááºážááŒá±á¬ááºážáá»á¬ážá á¡áá±á¬áá·áºáá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠáááºáá®ážáá¬ážáááºá
ááá¯á·áá±á¬áº áááºááẠá€áááááá¬ááᯠááá¯á¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž ááá¯ážáááºááŸá¯áá»á¬ážááá¯áááºáž á¡ááŒá¶ááŒá¯ááá¯ááºáááº-
source: www.habr.com