αž™αžΎαž„αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ† Nginx αžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αžΈαžšαž”αžΈ

αž‡αŸ†αžšαžΆαž”αžŸαž½αžš!
αžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‚αžΊ Sergey αžαŸ’αž‰αž»αŸ†αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαžœαž·αžŸαŸ’αžœαž€αžšαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜ API αž“αŸƒαžœαŸαž‘αž·αž€αžΆ tinkoff.ru αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž“αŸ…αž–αŸαž›αžšαŸ€αž”αž…αŸ†αžαž»αž›αŸ’αž™αž—αžΆαž–αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ Nginx αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αž•αŸ’αžŸαŸαž„αŸ—αŸ” αžαŸ’αž‰αž»αŸ†αž€αŸαž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αŸ†αž–αžΈαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αž™αž€αžˆαŸ’αž“αŸ‡αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸƒαž–αž½αž€αž‚αŸαŸ”

Nginx αž‚αžΊαž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαžŠαŸ‚αž›αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž…αŸ’αžšαžΎαž“ αž“αž·αž„αž€αŸ†αž–αž»αž„αž’αž—αž·αžœαžŒαŸ’αžαž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αŸ” αžœαžΆαž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›, αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž”αž‰αŸ’αž‡αžΈαž–αŸαž‰αž›αŸαž‰αž‘αŸαŸ”. αž‚αž˜αŸ’αžšαŸ„αž„αž“αžΈαž˜αž½αž™αŸ—αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž›αžΎαž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹ Balancer αž“αž·αž„αž€αŸ†αžŽαŸ‚αžšαž”αžŸαŸ‹ Nginx (αž§αž‘αžΆαž αžšαžŽαŸ αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹ http/2 αž“αž·αž„ grpc proxying) αž“αž·αž„αžŸαž˜αžΆαžŸαž—αžΆαž–αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž™αžΎαž„αž…αž„αŸ‹αžƒαžΎαž‰αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαž»αŸ†αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžš αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž›αžΈαž“αž»αž…αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎ deb- αž“αž·αž„ rpm αŸ” αž‡αž˜αŸ’αžšαžΎαžŸαž‡αžΆαž˜αž½αž™αž’αž»αž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž…αžΆαžšαžŽαžΆαž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‘αŸαŸ”

αž™αžΎαž„αž…αž„αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž˜αž»αžαž„αžΆαžšαž“αŸƒαžαž»αž›αŸ’αž™αž—αžΆαž–αžšαž”αžŸαŸ‹αž™αžΎαž„αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαŸ” αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžŸαŸ†αžŽαž½αžšαž—αŸ’αž›αžΆαž˜αŸ—αž€αžΎαžαž‘αžΎαž„: αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž…αŸ†αžŽαžΆαž™αž’αž“αž’αžΆαž“αžαž·αž…αžαž½αž…αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“? αžœαžΆαž“αžΉαž„αž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαŸ€αž”αž…αŸ†αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž…αŸ†αž“αž½αž“αž€αŸ†αžŽαžαŸ‹αž“αŸƒαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αž‰αŸ’αž…αžΌαž› αž αžΎαž™αž“αŸ…αž›αž‘αŸ’αž’αž•αž›αž‘αž‘αž½αž›αž”αžΆαž“αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαž€αž‰αŸ’αž…αž”αŸ‹ deb/rpm αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ OS αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αŸ”

αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž”αž‰αŸ’αž αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž:

  • αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžšαž”αžŸαŸ‹ Nginx αž‘αŸαŸ”
  • αž˜αž·αž“αž˜αžΆαž“αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‘αŸαŸ”
  • αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž€αž‰αŸ’αž…αž”αŸ‹αž˜αž½αž™αžŠαŸ„αž™αžŠαŸƒαž‚αžΊαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αŸαž›αžœαŸαž›αžΆ αž“αž·αž„αž‚αž½αžšαž±αŸ’αž™αž’αž»αž‰αž‘αŸ’αžšαžΆαž“αŸ‹αŸ”
  • αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžαŸ’αžαž» Nginx αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡ αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž“αžΉαž„αž”αž‰αŸ’αž…αžΌαž›αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž’αžΆαž“αž”αžΆαž“αžŠαŸ„αž™αž˜αž“αž»αžŸαŸ’αžŸ αž“αž·αž„αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž€αž‰αŸ’αž…αž”αŸ‹ Nginx αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αž»αžαž„αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαžΆαŸ”

αž˜αž·αž“αžŸαŸ’αžœαŸ‚αž„αžšαž€αž‡αž˜αŸ’αžšαžΎαžŸαžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž“αŸ…αž›αžΎαž—αžΆαž–αž’αŸ†αž‘αžΌαž›αžΆαž™αž“αŸƒ Github αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αž„αŸ’αž€αžΎαžαž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„ - 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 αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αž“αžΆαž–αŸαž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸαŸ‡ αž’αžΆαž…αž‡αž½αž™αž€αŸ’αž“αž»αž„αžšαžΏαž„αž“αŸαŸ‡αž”αžΆαž“αŸ” αž‘αžΈαž€αŸ’αžšαž»αž„αž€αŸ’αžšαž»αž˜ ឬ Gitlab CI.

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ Git αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž›αŸαžβ€‹αž€αŸ†αžŽαŸ‚β€‹αž‘αž˜αŸ’αžšαž„αŸ‹β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αž‘αŸ…β€‹αž“αžΉαž„β€‹αž”αž‰αŸ’αž‡αžšαž”αžΎαž€β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αžŸαžΆαž„αžŸαž„αŸ‹αŸ”
αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αŸαž›αžœαŸαž›αžΆαž”αž“αŸ’αžαŸ‚αž˜αž”αž“αŸ’αžαž·αž…αž‘αŸ€αž αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž•αŸ’αž‰αžΎαž‘αŸ…αž€αžΆαž“αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αž€αž‰αŸ’αž…αž”αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ Nexus, Artifactory αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎαŸ”

αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž”αž“αŸ’αžαŸ‚αž˜αž‚αžΊαžαžΆαž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ yaml αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… Ansible αž¬αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž αžΎαž™αž–αžΈαž‘αžΈαž“αŸ„αŸ‡αž™αžΎαž„αž’αžΆαž…αž™αž€αž›αŸαžαž€αŸ†αžŽαŸ‚ αž“αž·αž„αž”αŸ’αžšαž—αŸαž‘αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”

αž˜αžΆαž“β€‹αž’αŸ’αžœαžΈβ€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹

αž‚αž˜αŸ’αžšαŸ„αž„β€‹αž“αŸαŸ‡β€‹αž˜αž·αž“β€‹αž‘αžΆαž“αŸ‹β€‹αž”αž‰αŸ’αž…αž”αŸ‹β€‹αž“αŸ…β€‹αž‘αžΎαž™β€‹αž‘αŸαŸ” αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž₯αž‘αžΌαžœαž“αŸαŸ‡αŸ–

  • αž™αžΎαž„αž–αž„αŸ’αžšαžΈαž€αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αžšαž€αŸ’αžŸαžΆαžœαžΆαž±αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ” αž’αŸ’αž“αž€β€‹αž˜αž·αž“β€‹αž…αž„αŸ‹β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšβ€‹αž˜αž½αž™β€‹αž–αžΆαž“αŸ‹β€‹αž‘αŸ αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αž’αŸ’αž“αž€β€‹αžαŸ’αžšαžΌαžœβ€‹αž€αžΆαžšβ€‹αžαŸ‚β€‹αž–αžΈαžšβ€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž αžΎαž™β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž“αŸ…β€‹αžŸαž›αŸ‹β€‹αžαŸ’αžšαžΌαžœβ€‹αžαžΆαž˜β€‹αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αž“αŸαŸ‡αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‘αžΆαŸ†αž„αž‘αž„αŸ‹αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ (αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž„αž€αŸ’αž“αž»αž„ src/config.py) αž•αŸ’αž›αžΌαžœαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”
  • αž™αžΎαž„αž€αŸ†αž–αž»αž„αž”αž“αŸ’αžαŸ‚αž˜αž‡αž˜αŸ’αžšαžΎαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‰αžΎαž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‘αŸ…αž€αžΆαž“αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαž•αŸ’αžŸαŸαž„αŸ—αŸ”
  • αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž“αŸ…αž–αŸαž›αž•αŸ’αž‘αž»αž€αž˜αŸ‰αžΌαžŒαž»αž› (αž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎ github.com/nginx-modules/nginx_upstream_check_module αžŠαŸ†αž”αžΌαž„αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž’αž“αž»αžœαžαŸ’αžαž”αŸ†αžŽαŸ‡αž“αŸƒαž€αŸ†αžŽαŸ‚αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™)
  • αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαŸ–
    • αž€αž‰αŸ’αž…αž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ”
    • Nginx αž˜αžΆαž“αž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžš αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž„αŸ‹ αž“αž·αž„αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ”
    • αž•αŸ’αž›αžΌαžœαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž‚αžŽαž“αžΈ αž“αž·αž„αž’αŸ’αžœαžΈαŸ—αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžΎβ€‹αž§αž”αž€αžšαžŽαŸβ€‹αž“αŸαŸ‡β€‹αž₯αž‘αžΌαžœβ€‹αž“αŸαŸ‡ αž αžΎαž™β€‹αž€αŸβ€‹αžŸαŸ’αž“αžΎβ€‹αž±αŸ’αž™β€‹αž˜αžΆαž“β€‹αž€αžΆαžšβ€‹αž€αŸ‚αž›αž˜αŸ’αž’β€‹αž•αž„β€‹αžŠαŸ‚αžš - github.com/TinkoffCreditSystems/Nginx-builder αžŸαŸ’αžœαžΆβ€‹αž‚αž˜β€‹αž“αŸ!

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹