Getting started¶
Database support¶
It is recommended that you install a database server. You can install one on the same host as volkszaehler or choose a different host:
[debops_service_mariadb_server]
hostname
In case you chose a different host, you will need to specify which of your
database servers the volkszaehler instance should use by specifying the database
server host as volkszaehler__database_server
.
Webserver support¶
The following two webservers are supported by the role:
- Apache using debops.apache.
- Nginx using debops.nginx.
The role maintainer has chosen Nginx as webserver for his deployments. He added Apache support because he is very familiar with debops.apache (author). Note that integration testing is done with debops.nginx only, currently.
In case you chose Apache, you don’t need PHP FPM which debops.php might install by default. To ensure that FPM is not going to be installed, add the following to your inventory:
php__server_api_packages:
- 'cli'
Example inventory¶
To manage volkszaehler on a given host or set of hosts, they need to be added
to the [debops_service_volkszaehler_${webserver}]
Ansible group in the inventory:
[debops_service_volkszaehler_apache]
hostname
[debops_service_mariadb_server]
hostname
[debops_service_volkszaehler_nginx]
hostname2
Example playbook¶
Ansible playbook that uses the debops-contrib.volkszaehler
role together
with debops.apache:
---
- name: Setup and manage volkszaehler with Apache as webserver
hosts: [ 'debops_service_volkszaehler_apache' ]
become: True
environment: '{{ inventory__environment | d({})
| combine(inventory__group_environment | d({}))
| combine(inventory__host_environment | d({})) }}'
roles:
- role: debops-contrib.volkszaehler/env
tags: [ 'role::volkszaehler', 'role::volkszaehler:env', 'role::mariadb' ]
- role: debops.apache/env
tags: [ 'role::apache', 'role::apache:env' ]
- role: debops.php/env
tags: [ 'role::php', 'role::php:env','role::apt_preferences', 'role::logrotate' ]
- role: debops.apt_preferences
tags: [ 'role::apt_preferences' ]
apt_preferences__dependent_list:
- '{{ php__apt_preferences__dependent_list }}'
- role: debops.ferm
tags: [ 'role::ferm' ]
ferm__dependent_rules:
- '{{ apache__ferm__dependent_rules }}'
- role: debops.mariadb
tags: [ 'role::mariadb' ]
mariadb__dependent_databases: '{{ volkszaehler__mariadb__dependent_databases }}'
mariadb__dependent_users: '{{ volkszaehler__mariadb__dependent_users }}'
when: (volkszaehler__database == 'mariadb')
- role: debops.php
tags: [ 'role::php' ]
php__dependent_packages:
- '{{ volkszaehler__php__dependent_packages }}'
php__dependent_pools:
- '{{ volkszaehler__php__dependent_pools }}'
- role: debops.logrotate
tags: [ 'role::logrotate' ]
logrotate__dependent_config:
- '{{ php__logrotate__dependent_config }}'
- role: geerlingguy.composer
tags: [ 'role::composer' ]
- role: debops.apache
tags: [ 'role::apache' ]
apache__dependent_vhosts:
- '{{ volkszaehler__apache__dependent_vhosts }}'
- role: debops-contrib.volkszaehler
tags: [ 'role::volkszaehler' ]
Ansible playbook that uses the debops-contrib.volkszaehler
role together
with debops.nginx:
---
- name: Setup and manage volkszaehler with Nginx as webserver
hosts: [ 'debops_service_volkszaehler_nginx' ]
become: True
environment: '{{ inventory__environment | d({})
| combine(inventory__group_environment | d({}))
| combine(inventory__host_environment | d({})) }}'
roles:
- role: debops-contrib.volkszaehler/env
tags: [ 'role::volkszaehler', 'role::volkszaehler:env', 'role::mariadb' ]
- role: debops.php/env
tags: [ 'role::php', 'role::php:env','role::apt_preferences', 'role::logrotate' ]
- role: debops.apt_preferences
tags: [ 'role::apt_preferences' ]
apt_preferences__dependent_list:
- '{{ nginx__apt_preferences__dependent_list }}'
- '{{ php__apt_preferences__dependent_list }}'
- role: debops.ferm
tags: [ 'role::ferm' ]
ferm__dependent_rules:
- '{{ nginx__ferm__dependent_rules }}'
- role: debops.mariadb
tags: [ 'role::mariadb' ]
mariadb__dependent_databases: '{{ volkszaehler__mariadb__dependent_databases }}'
mariadb__dependent_users: '{{ volkszaehler__mariadb__dependent_users }}'
when: (volkszaehler__database == 'mariadb')
- role: debops.php
tags: [ 'role::php' ]
php__dependent_packages:
- '{{ volkszaehler__php__dependent_packages }}'
php__dependent_pools:
- '{{ volkszaehler__php__dependent_pools }}'
- role: debops.logrotate
tags: [ 'role::logrotate' ]
logrotate__dependent_config:
- '{{ php__logrotate__dependent_config }}'
- role: geerlingguy.composer
tags: [ 'role::composer' ]
- role: debops.nginx
tags: [ 'role::nginx' ]
nginx__dependent_upstreams:
- '{{ volkszaehler__nginx__dependent_upstreams }}'
nginx__dependent_servers:
- '{{ volkszaehler__nginx__dependent_servers }}'
- role: debops-contrib.volkszaehler
tags: [ 'role::volkszaehler' ]
These playbooks are shipped with this role under
./docs/playbooks/
from which you can symlink them to your
playbook directory.
In case you use multiple DebOps Contrib roles, consider using the
DebOps Contrib playbooks.
Ansible tags¶
You can use Ansible --tags
or --skip-tags
parameters to limit what
tasks are performed during Ansible run. This can be used after a host was first
configured to speed up playbook execution, when you are sure that most of the
configuration is already in the desired state.
Available role tags:
role::volkszaehler:env
- Environment role tag, should be used in the playbook to execute a special environment role contained in the main role. The environment role prepares the environment for other dependency roles to work correctly.
role::volkszaehler
- Main role tag, should be used in the playbook to execute all of the role tasks as well as role dependencies.
role::volkszaehler:pkgs
- Tasks related to system package management like installing or removing packages.