diff --git a/nginx/init.sls b/nginx/init.sls index 7ad31bd..b278137 100644 --- a/nginx/init.sls +++ b/nginx/init.sls @@ -13,6 +13,9 @@ include: {%- if nginx.snippets is defined %} - nginx.snippets {%- endif %} + {%- if nginx.streams is defined %} + - nginx.streams + {%- endif %} - nginx.servers - nginx.certificates diff --git a/nginx/map.jinja b/nginx/map.jinja index b3beb3d..d518ccd 100644 --- a/nginx/map.jinja +++ b/nginx/map.jinja @@ -16,6 +16,7 @@ 'server_available': '/etc/nginx/sites-available', 'server_enabled': '/etc/nginx/sites-enabled', 'snippets_dir': '/etc/nginx/snippets', + 'streams_dir': '/etc/nginx/streams', 'server_use_symlink': True, 'pid_file': '/run/nginx.pid', 'openssl_package': 'openssl', @@ -32,6 +33,7 @@ 'server_available': '/etc/nginx/conf.d', 'server_enabled': '/etc/nginx/conf.d', 'snippets_dir': '/etc/nginx/snippets', + 'streams_dir': '/etc/nginx/streams', 'server_use_symlink': False, 'pid_file': '/run/nginx.pid', 'rh_os_releasever': '$releasever', @@ -49,6 +51,7 @@ 'server_available': '/etc/nginx/conf.d', 'server_enabled': '/etc/nginx/conf.d', 'snippets_dir': '/etc/nginx/snippets', + 'streams_dir': '/etc/nginx/streams', 'server_use_symlink': False, 'pid_file': '/run/nginx.pid', 'rh_os_releasever': '$releasever', @@ -69,6 +72,7 @@ 'server_available': '/etc/nginx/vhosts.d', 'server_enabled': '/etc/nginx/vhosts.d', 'snippets_dir': '/etc/nginx/snippets', + 'streams_dir': '/etc/nginx/streams', 'server_use_symlink': False, 'pid_file': '/run/nginx.pid', 'gpg_check': True, @@ -84,6 +88,7 @@ 'server_available': '/etc/nginx/sites-available', 'server_enabled': '/etc/nginx/sites-enabled', 'snippets_dir': '/etc/nginx/snippets', + 'streams_dir': '/etc/nginx/streams', 'server_use_symlink': True, 'openssl_package': 'openssl', }, @@ -95,6 +100,7 @@ 'server_available': '/etc/nginx/sites-available', 'server_enabled': '/etc/nginx/sites-enabled', 'snippets_dir': '/etc/nginx/snippets', + 'streams_dir': '/etc/nginx/streams', 'server_use_symlink': True, 'openssl_package': 'dev-libs/openssl', }, @@ -107,6 +113,7 @@ 'server_available': '/usr/local/etc/nginx/sites-available', 'server_enabled': '/usr/local/etc/nginx/sites-enabled', 'snippets_dir': '/usr/local/etc/nginx/snippets', + 'streams_dir': '/usr/local/etc/nginx/streams', 'server_use_symlink': True, 'openssl_package': 'openssl', 'pid_file': '/var/run/nginx.pid', @@ -140,6 +147,9 @@ 'events': { 'worker_connections': 512, }, + 'stream' : { + 'include': '/etc/nginx/streams/*', + }, 'http': { 'sendfile': 'on', 'tcp_nopush': 'on', @@ -204,3 +214,7 @@ }) %} {% endif %} {% endif %} + +{% if salt['grains.get']('os_family') == 'FreeBSD' %} + {% do nginx.server.config.stream.update({'include' : nginx.lookup.streams_dir ~ '/*'}) %} +{% endif %} diff --git a/nginx/passenger.sls b/nginx/passenger.sls index 374c35d..c22f6a9 100644 --- a/nginx/passenger.sls +++ b/nginx/passenger.sls @@ -15,6 +15,9 @@ include: {%- if nginx.snippets is defined %} - nginx.snippets {%- endif %} + {%- if nginx.streams is defined %} + - nginx.streams + {%- endif %} - nginx.servers - nginx.certificates diff --git a/nginx/pkg.sls b/nginx/pkg.sls index 680c524..ff7e651 100644 --- a/nginx/pkg.sls +++ b/nginx/pkg.sls @@ -78,28 +78,6 @@ nginx_official_repo: - watch_in: - pkg: nginx_install - {%- if grains.os not in ('Debian',) %} - ## applies to Ubuntu and derivatives only #} -nginx_ppa_repo: - pkgrepo: - {%- if from_ppa %} - - managed - {%- else %} - - absent - {%- endif %} - {% if grains.os == 'Ubuntu' %} - - ppa: nginx/{{ nginx.ppa_version }} - {% else %} - - name: deb http://ppa.launchpad.net/nginx/{{ nginx.ppa_version }}/ubuntu {{ grains.oscodename }} main - - keyid: C300EE8C - - keyserver: keyserver.ubuntu.com - {% endif %} - - require_in: - - pkg: nginx_install - - watch_in: - - pkg: nginx_install - {%- endif %} - {%- if from_phusionpassenger %} nginx_phusionpassenger_repo_keyring: file.managed: diff --git a/nginx/servers_config.sls b/nginx/servers_config.sls index 6652d64..0b1a4f1 100644 --- a/nginx/servers_config.sls +++ b/nginx/servers_config.sls @@ -10,6 +10,7 @@ {% set server_states = [] %} {#- _nginx is a lightened copy of nginx map intended to passed in templates #} {%- set _nginx = nginx.copy() %} +{%- do _nginx.pop('streams') if nginx.streams is defined %} {%- do _nginx.pop('snippets') if nginx.snippets is defined %} {%- do _nginx.pop('servers') if nginx.servers is defined %} diff --git a/nginx/streams.sls b/nginx/streams.sls new file mode 100644 index 0000000..3bf4d99 --- /dev/null +++ b/nginx/streams.sls @@ -0,0 +1,33 @@ +# nginx.streams +# +# Manages creation of streams + +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ '/map.jinja' import nginx, sls_block with context %} +{%- from tplroot ~ '/libtofs.jinja' import files_switch with context %} + +{#- _nginx is a lightened copy of nginx map intended to passed in templates #} +{%- set _nginx = nginx.copy() %} + +{%- do _nginx.pop('streams') if nginx.snippets is defined %} +{%- do _nginx.pop('servers') if nginx.servers is defined %} + + +nginx_streams_dir: + file.directory: + {{ sls_block(nginx.servers.dir_opts) }} + - name: {{ nginx.lookup.streams_dir }} + +{% for stream, config in nginx.streams.items() %} +nginx_streams_{{ stream }}: + file.managed: + - name: {{ nginx.lookup.streams_dir ~ '/' ~ stream }} + - source: {{ files_switch([ stream, 'server.conf' ], + 'nginx_stream_file_managed' + ) + }} + - template: jinja + - context: + config: {{ config|json() }} + nginx: {{ _nginx|json() }} +{% endfor %} diff --git a/pillar.example b/pillar.example index f5e2190..0ed0841 100644 --- a/pillar.example +++ b/pillar.example @@ -109,7 +109,16 @@ nginx: - upstream netdata: - server: 127.0.0.1:19999 - keepalive: 64 - + + streams: + example_stream: + - upstream some_upstream: + - server: '10.0.0.1:8000' + - server: '10.0.0.2:8000' + - server: + - listen: 7000 + - proxy_pass: some_upstream + server: # this partially exposes file.managed parameters as they relate to the main # nginx.conf file