ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠ°Π·Π΄Π΅Π» http. Π― ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
"AnsibleUndefinedVariable: the inline if-expression on line 9 in 'http/grpc.j2' evaluated to false and no else section was defined."}
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π° ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml
Π¨Π°Π³ΠΈ ΠΏΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ:
# https://github.com/nginxinc/ansible-role-nginx
- name: Install NGINX
include_role:
name: nginxinc.nginx
vars:
nginx_install_from: os_repository
nginx_start: false
nginx_type: opensource
nginx_state: present
# https://github.com/nginxinc/ansible-role-nginx-config
- name: Configure NGINX
include_role:
name: nginxinc.nginx_config
vars:
nginx_config_start: false
nginx_config_cleanup: true
nginx_config_debug_output: true
nginx_config_debug_tasks: true
# top level nginx configuration
nginx_config_main_template_enable: true
nginx_config_main_template:
template_file: nginx.conf.j2
conf_file_name: nginx.conf
conf_file_location: /etc/nginx/
worker_connections: 1024
http_custom_includes:
- "/etc/nginx/sites-enabled/*.conf"
user: www-data
worker_processes: auto
pid: /var/run/nginx.pid
# http configuration section
http_enable: true
http_settings:
grpc_global:
bind:
address: $remote_addr
transparent: false
buffer_size: 4k
connect_timeout: 60s
[...]
Π― ΠΎΠΆΠΈΠ΄Π°Π», ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ΄Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠ°ΡΠ΅Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π‘ΠΊΠΎΡΠΎ Π±ΡΠ΄Π΅Ρ PR.
ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π±ΡΡΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ, Π±ΡΠ΄Ρ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ Π²ΡΡΠ°ΡΠΈΡΡ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΡΡΠ°Π½ΠΈΠ» Π»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ PR Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²Π½Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° 0.3.3
Π±ΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ, Π½Π°Π΄Π΅ΡΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π² ΡΠ΅ΡΡΠ°Ρ
ΠΌΠΎΠ»Π΅ΠΊΡΠ» Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π² ΡΡΠΎΠΌ.
ΠΠΎΠ³Ρ, Π½ΠΎ Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ΅ΡΡΠΈΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΏΠΎΡ ΠΎΠΆΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ gzip:
gzip:
enable: true
buffers:
number: 32
size: 4k
comp_level: 1
disable:
- '"msie6"'
http_version: 1.1
min_length: 20
proxied:
- expired
types:
- text/html
vary: false
fatal: [testing-snap05.snapview.net]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: the inline if-expression on line 27 in 'http/gzip.j2' evaluated to false and no else section was defined."}
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ "ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ" Π»ΠΈΠ½ΠΈΠ΅ΠΉ.
ΠΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ°Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΡΡ Π²Π΅ΡΡΠΈΡ Jinja2 Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅? Π’Π΅ΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΈ Ρ Π²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΎΠ½Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΡ Π»ΡΠ΄Π΅ΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΠΉ Jinja2.
ΠΠΎΡ Π²Π΅ΡΡΠΈΡ:
python3-jinja2 2.10.1-2
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π° proxy: Π² http_settings. ΠΠ³ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΈ Π² nginx.conf Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ.
proxy: # Optional -- Configure Proxy
buffer_size: 4k # Optional
buffering: true # Optional boolean
buffers: # Optional
number: 8 # Required
size: 4k # Required
busy_buffers_size: 8k # Optional
cache: false # Optional -- Set to 'false' or specify cache zone
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π·Π°Ρ
ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ Jinja2 2.11.x
ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΡΡΠ°Π½ΠΈΡ Π»ΠΈ ΡΡΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π²Π°ΡΠΈΡ
ΠΎΡΠΈΠ±ΠΎΠΊ. Re proxy
, Π² ΠΏΠΎΠ΄ΠΏΡΠ½ΠΊΡΠ΅ defaults/main/template.yml
Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠ°. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠΊΡΠΈ Π² ΠΏΠΎΠ»Π΅ nginx_config_http_template
. Π― ΡΠΎΠ·Π΄Π°ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ PR, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡΠ΅Π΅. Π ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠΌΠ½Π΅Π½ΠΈΠΉ ΠΌΠΎΠ»Π΅ΠΊΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΡΡΡΡ Ρ
ΠΎΡΠΎΡΠΈΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΈΡΡΠΈΠ½Ρ ΠΈ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ.
Π― ΠΎΡΠΊΡΡΠ» ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΏΡΠΎΠΊΡΠΈ: ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΏΠ°ΠΌΠΈΡΡ ΡΡΠΎΡ.
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ http/gzip.j2
. ΠΡΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Jinja2==2.11.3
, Π½ΠΎ ΡΡΠΎ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ.
ΠΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³:
---
nginx_config_main_template:
http_settings:
gzip:
enable: true
buffers:
number: 32
size: 16k
comp_level: 6
vary: true
proxied:
- any
types:
- "*"
ΠΡΠΈΠ±ΠΊΠ°:
"msg": "AnsibleUndefinedVariable: the inline if-expression on line 27 in 'http/gzip.j2' evaluated to false and no else section was defined.",
Π‘ΡΡΠΎΠΊΠ° 27 Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½ proxied
. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π΄Π΅ΡΡ https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml#L62 -L76 ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ Π»ΠΈ Ρ Π²Π°Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²ΡΠ·Π°Π½Π° Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠΎΠ»ΡΡ ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Jinja2 (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Jinja2 ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ?).