Congregamus Nginx cum duobus mandatis

Salvete!
Nomen meum est Sergey, fabrum infrastructurae laboro in API team of tinkoff.ru suggestu.

In hoc articulo de quaestionibus loquar, quae turma nostra versatur cum librarios elaborando parat nginx ad varia opera. Dicam etiam tibi de ferramento quod me plurimos ex his superare permisit.

Nginx est multifunctionalis et procuratorem agentis active explicans. Magnum modulorum numerum notat; hoc non est completum album. Quaeque propositio quaedam requisita in libratoris functione et versionis Nginx imponit (exempli gratia, praesentiam http/2 et grpc ineundo), et modulorum compositionem.

Volumus videre novam versionem cum modulorum debito statuto, sub certa Linux distributione currentem. In casu nostro, hae systemata debita et rpm-fundantur. Optio cum vasis in hoc articulo non habetur.

Volumus celeriter functionem librariorum nostrorum mutare. Hic statim quaestio oritur: quomodo hoc assequendum est, dum quam maxime paucas opes expendit? Melius est processum constituere ut finitum numerum input parametri definire possimus, et in output artificium recipiat in forma sarcinae deb/rpm desideratae OS.

Quam ob rem complura problemata enuntiari possunt;

  • Nulla semper fasciculi cum Nginx novissima versione.
  • Nullae sunt fasciculi cum modulis quaesitis.
  • Congerendi et aedificandi sarcinam manually tempus est consumendi et plane taedii.
  • Nulla est descriptio quomodo haec vel illa Nginx instantiae conveniant.

Ad has quaestiones solvendas, necessitas oritur pro instrumento quod speciem in forma legibili humano acciperet et Nginx sarcinam conveniret cum necessaria functionis in eo fundata.

Optionem idoneam non invenientes nobis in vastitate Github, decrevimus proprium instrumentum creare. nginx fabricator.

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

In nostro instrumento descriptionem specificationis in forma codicis creare voluimus, quae tunc in conditorio Git collocari potest. Ad hoc, forma nota talibus rebus elegimus β€” yaml. Specificationis exemplum:

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

Hic indicamus nos velle videre involucrum debentem cum Nginx versione 1.14.2 cum debita modulorum copia. Sectio cum modulis ad libitum est. Uterque enim ex his potes ponere;

  • Nomine.
  • Inscriptio ubi ea possis accipere:
    • Git repositio. Etiam ramum vel tag specificare potes.
    • Archivum interretiale.
    • Locus ad archivum ligamen.

Nonnulli moduli adiectis dependentiis instituendis requirunt, exempli gratia nginx-auth-ldap libldap2-dev inauguratum requirit. Necessariae clientelae etiam specificari possunt in modulo describendo.

circuitus

In instrumento nostro celeriter ambitum acquirere potes cum utilitates institutae ad compilationem, involucrum conventus et alia programmata auxiliaria. Docker vas cum omnibus rebus quibus opus est hic specimen est (repositorium iam duo exempla documentorum Docker pro Decuria et cento habet).

Postquam specificatio exarata est et ambitus praeparatur, architectorem nostrum deducimus, antea clientelas inauguratus;

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

Numerus hic revisio libitum est et pro conventibus versionibus adhibetur. Scriptum est in informationes meta fasciculi, ut facile in servientibus update.
Ex lignis potes monitor quid agatur. En exemplum praecipua;

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'.

Itaque, cum duobus tantum mandatis, ambitum et Nginx inquisitum conventum creamus, et sarcina in indicem apparet unde scriptura emissa est.

Embedding

Possumus etiam instrumentum nostrum in processibus CI/CD integrare. Quaelibet ex multis CI systematibus hodie exstantibus adiuvare potest cum hoc, e.g Teamcity aut Gitlab CI.

Quam ob rem, quotiens specificatio in Git repositorium mutatur, fabrica artificii automatice deductae est. Recognitio numerus ad fabricandum contra fabricandum iungitur.
Aliquanto temporis spatio configurare potes artificium quod mittendum est in repositorio tuo locali, Nexus, Artifactorius, et cetera.

Additum etiam commodum est quod lima configurationis yaml coniungi posse cum Ansible vel alio systema configurationis automatico, et inde capere possumus numerum et sarcinam versionis quam explicari volumus.

deinde quid

Nondum expletum est consilium. Ecce quod nunc laboramus:

  • Facultatem configurationis dilatamus, sed simul quam maxime simplicem servamus. Mille parametris definire non vis, si duobus tantum indiges, reliqua defalta. Haec includit vexilla compilationem (iam mutare potes in file configurationis internae src/config.py), iter institutionem et inusorem deducendi.
  • Optiones addimus ut sarcinam variis artificiis repositoriis automatice mittam.
  • Morem exequi mandatum cum moduli onerantes (exempli gratia, uti github.com/nginx-modules/nginx_upstream_check_module oportet primo applicare commissuram certae versionis)
  • Addit probat:
    • Sarcina recte installatur.
    • Nginx versionem debitam habet et cum vexillis et modulis quaesitis construitur.
    • Vias, rationes, et sic porro creantur.

Sed hoc instrumento nunc uti potes, et emendationes etiam suggerere. github.com/TinkoffCreditSystems/Nginx-builder salve!

Source: www.habr.com