20969: Reloads nginx when custom TLS cert and key files change.
[arvados.git] / tools / salt-install / config_examples / multi_host / aws / states / custom_certs.sls
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 {%- set orig_cert_dir = salt['pillar.get']('extra_custom_certs_dir', '/srv/salt/certs')  %}
6 {%- set dest_cert_dir = '/etc/nginx/ssl' %}
7 {%- set certs = salt['pillar.get']('extra_custom_certs', [])  %}
8
9 {% if certs %}
10 extra_custom_certs_file_directory_certs_dir:
11   file.directory:
12     - name: /etc/nginx/ssl
13     - user: root
14     - group: root
15     - dir_mode: 0750
16     - file_mode: 0640
17     - require:
18       - pkg: nginx_install
19     - recurse:
20       - user
21       - group
22       - mode
23
24   {%- for cert in certs %}
25     {%- set cert_file = 'arvados-' ~ cert ~ '.pem' %}
26     {%- set key_file = 'arvados-' ~ cert ~ '.key' %}
27 extra_custom_certs_{{ cert }}_cert_file_copy:
28   file.copy:
29     - name: {{ dest_cert_dir }}/{{ cert_file }}
30     - source: {{ orig_cert_dir }}/{{ cert_file }}
31     - force: true
32     - user: root
33     - group: root
34     - mode: 0640
35     - unless: cmp {{ dest_cert_dir }}/{{ cert_file }} {{ orig_cert_dir }}/{{ cert_file }}
36     - require:
37       - file: extra_custom_certs_file_directory_certs_dir
38
39 extra_custom_certs_{{ cert }}_key_file_copy:
40   file.copy:
41     - name: {{ dest_cert_dir }}/{{ key_file }}
42     - source: {{ orig_cert_dir }}/{{ key_file }}
43     - force: true
44     - user: root
45     - group: root
46     - mode: 0640
47     - unless: cmp {{ dest_cert_dir }}/{{ key_file }} {{ orig_cert_dir }}/{{ key_file }}
48     - require:
49       - file: extra_custom_certs_file_directory_certs_dir
50
51 extra_nginx_service_reload_on_{{ cert }}_certs_changes:
52   cmd.run:
53     - name: systemctl reload nginx
54     - require:
55       - file: extra_custom_certs_{{ cert }}_cert_file_copy
56       - file: extra_custom_certs_{{ cert }}_key_file_copy
57     - onchanges:
58       - file: extra_custom_certs_{{ cert }}_cert_file_copy
59       - file: extra_custom_certs_{{ cert }}_key_file_copy
60     - onlyif:
61       - test $(openssl rsa -modulus -noout -in {{ dest_cert_dir }}/{{ key_file }}) == $(openssl x509 -modulus -noout -in {{ dest_cert_dir }}/{{ cert_file }})
62   {%- endfor %}
63 {%- endif %}