apache-formula
apache-formula copied to clipboard
how to create extra LogDir and using apache/vhosts/standard.sls and hanling apache-reload?
I would like to create some extra dir for apache:sites, managed through apache.vhosts.standard state.
I would like to add log_dir creation before apache is restarted, dir are created by an external state create_dir.sls
But when running state.highstate, apache is complaining that error reloading, because a2ensite is launching apache-reload before LogDir are created.
What would be the way to add LogDir creation before vhosts? I don't necessarily need to alter the formula, I just want to introduce my own step.
pillar top.sls
# Pillar top inclusions
base:
'*':
- customers
'web*':
- webserver # stantdard pillar config
- auto.webconfig # sites are separated here
I added a LogDir key for that purpose (could be dirname calculated, but that's another story)
auto/webconfig.sls
apache:
sites:
client1-domain.fr:
# template_file: salt://webserver/vhosts/minimal.tmpl
ServerName: client1-domain.fr
ServerAlias: www.client1-domain.fr
ServerAdmin: [email protected]
LogLevel: warn
LogDir: /home/client1/logs
ErrorLog: /home/client1/logs/error.log
CustomLog: /home/client1/logs/access.log
DocumentRoot: /home/client1/vhost/www
Directory:
default:
Options: -Indexes +FollowSymLinks
Order: allow,deny
Allow: from all
Require: all granted
AllowOverride: None
state
top.sls
base:
'*':
- fail2ban
- salt-minion
'web*':
- apache
- apache.modules
- apache.mod_fastcgi
- webserver.php-fpm
- webserver.create_dir
- apache.vhosts.standard
webserver/create_dir.sls
# create users dir not created by the formula
#
{% for id, site in salt['pillar.get']('apache:sites', {}).items() %}
{% set logdir = site.get('LogDir') %}
{{ id }}-logdir:
file.directory:
- unless: test -d {{ logdir }}
- name: {{ logdir }}
- makedirs: True
- allow_symlink: True
{% endfor %}