Skip to content

Commit

Permalink
Merge pull request #278 from netmanagers/master
Browse files Browse the repository at this point in the history
feat(servers_config): add require statement to manage dependencies
  • Loading branch information
javierbertoli authored Apr 28, 2021
2 parents 46faf4e + 6478143 commit 6ec5bf2
Show file tree
Hide file tree
Showing 10 changed files with 65 additions and 6 deletions.
4 changes: 4 additions & 0 deletions kitchen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -373,9 +373,13 @@ verifier:
suites:
- name: default
provisioner:
dependencies:
- name: test_dep
path: test/salt/default/states
state_top:
base:
'*':
- test_dep.create_dependency_file
- nginx._mapdata
- nginx
pillars:
Expand Down
3 changes: 0 additions & 3 deletions nginx/config.sls
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,3 @@ nginx_config:
- context:
config: {{ nginx.server.config|json(sort_keys=False) }}
{% endif %}
{% if nginx.check_config_before_apply %}
- check_cmd: /usr/sbin/nginx -t -c
{% endif %}
6 changes: 6 additions & 0 deletions nginx/servers_config.sls
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,12 @@ nginx_server_available_dir:
}}
- makedirs: True
- template: jinja
{%- if 'requires' in settings %}
- require:
{%- for k, v in settings.requires.items() %}
- {{ k }}: {{ v }}
{%- endfor %}
{%- endif %}
{% if 'source_path' not in settings.config %}
- context:
config: {{ settings.config|json(sort_keys=False) }}
Expand Down
3 changes: 3 additions & 0 deletions nginx/service.sls
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ nginx_service:
{% else %}
- pkg: nginx_install
{% endif %}
{% if nginx.check_config_before_apply %}
- only_if: /usr/sbin/nginx -t
{% endif %}
12 changes: 12 additions & 0 deletions pillar.example
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,18 @@ nginx:
# and None indicates no action
enabled: true

# This let's you add dependencies on other resources being applied for a
# particular vhost
# A common case is when you use this formula together with letsencrypt's,
# validating through nginx: you need nginx running (to validate the vhost) but
# can't have the ssl vhost up until the certificate is created (because it
# won't exist and will make nginx fail to load the configuration)
#
# An example, when using LE to create the cert for 'some.host.domain':
# requires:
# cmd: create-initial-cert-some.host.domain
requires: {}

# Remove the site config file shipped by nginx
# (i.e. '/etc/nginx/sites-available/default' by default)
# It also remove the symlink (if it is exists).
Expand Down
11 changes: 11 additions & 0 deletions test/integration/default/controls/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,5 +71,16 @@
its('content') { should include 'try_files $uri $uri/ =404;' }
its('content') { should include 'include snippets/letsencrypt.conf;' }
end
describe file "#{dir}/mysite_with_require" do
it { should be_file }
it { should be_owned_by file_owner }
it { should be_grouped_into file_group }
its('mode') { should cmp '0644' }
its('content') { should include 'server_name with-deps;' }
its('content') { should include 'listen 80;' }
its('content') { should include 'index index.html index.htm;' }
its('content') { should include 'location ~ .htm {' }
its('content') { should include 'try_files $uri $uri/ =404;' }
end
end
end
9 changes: 9 additions & 0 deletions test/integration/default/controls/file.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# frozen_string_literal: true

control 'Dependency test file' do
title 'should exist'

describe file('/tmp/created_to_test_dependencies') do
it { should be_file }
end
end
13 changes: 13 additions & 0 deletions test/salt/default/pillar/nginx.sls
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,19 @@ nginx:
- location ~ .htm:
- try_files: '$uri $uri/ =404'
- include: 'snippets/letsencrypt.conf'
mysite_with_require:
enabled: true
config:
- server:
- server_name: with-deps
- listen:
- '80'
- index: 'index.html index.htm'
- location ~ .htm:
- try_files: '$uri $uri/ =404'
requires:
file: created_to_test_dependencies

dh_param:
'mydhparam2.pem':
keysize: 2048
6 changes: 6 additions & 0 deletions test/salt/default/states/test_dep/create_dependency_file.sls
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## this state creates a file that is used to test vhosts dependencies
# (see https://github.com/saltstack-formulas/nginx-formula/pull/278)

created_to_test_dependencies:
file.managed:
- name: /tmp/created_to_test_dependencies
4 changes: 1 addition & 3 deletions test/salt/passenger/pillar/nginx.sls
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ nginx:
- location ^~ /.well-known/acme-challenge/:
- proxy_pass: http://localhost:9999
server:

config:
# This is required to get the passenger module loaded
# In Debian it can be done with this
Expand Down Expand Up @@ -64,5 +63,4 @@ nginx:
- index: 'index.html index.htm'
- location ~ .htm:
- try_files: '$uri $uri/ =404'
# - include: '/etc/nginx/snippets/letsencrypt.conf'
- include: 'snippets/letsencrypt.conf'
- include: '/etc/nginx/snippets/letsencrypt.conf'

0 comments on commit 6ec5bf2

Please sign in to comment.