Add docs and tests to the environment capabilities
Systemd service units may require additional environment settings to be effective. This patch adds two new variables to the systemd_service role which will allow operators to add environment variables to a given service as needed. These options be be supplied globally or from within a service definition. Documentation on how these options are used has been added to the defaults file. A test has been added to ensure we're exercising the new capability. Change-Id: If4ea993b7173ac3218f051a1d4f0fba9aeb838ea Signed-off-by: Kevin Carter <kevin@cloudnull.com>
This commit is contained in:
parent
b2063bb703
commit
79e6cdb138
@ -67,6 +67,27 @@ systemd_default_service_type: simple
|
|||||||
# This option can also be defined for specific service entries under "systemd_services".
|
# This option can also be defined for specific service entries under "systemd_services".
|
||||||
# systemd_lock_path: "/var/lock/service1"
|
# systemd_lock_path: "/var/lock/service1"
|
||||||
|
|
||||||
|
# Global Environment variables for system services.
|
||||||
|
# This option will provide the operator a way to set additional environment options
|
||||||
|
# used within the execution of a given service. Environment variables can be passed
|
||||||
|
# into the service using ADHOC options or through a given environment file. If both
|
||||||
|
# options are specified, and a collision occurs options will be set in the order in
|
||||||
|
# which they are read (top to bottom) with a given file being processed last.
|
||||||
|
#
|
||||||
|
# If the `systemd_environment_file` is defined a file will be read into the systemd service
|
||||||
|
# unit, the contents of the file will be added to the execution environment of the service.
|
||||||
|
#
|
||||||
|
# The `systemd_environment_file` option is a string. The full path to a given file must be used.
|
||||||
|
# systemd_environment_file: "/etc/default/default-file"
|
||||||
|
#
|
||||||
|
# The `systemd_environmen`t option is a hash. each item in the hash is expected to be a sting
|
||||||
|
# Example
|
||||||
|
# systemd_environment:
|
||||||
|
# VAR1: "word1 word2"
|
||||||
|
# VAR2: "word3"
|
||||||
|
# VAR3: "$word 5 6"
|
||||||
|
systemd_environment: {}
|
||||||
|
|
||||||
# The systemd services dictionary is a set of services that will be created. The dictionary
|
# The systemd services dictionary is a set of services that will be created. The dictionary
|
||||||
# can contain the following options:
|
# can contain the following options:
|
||||||
# `service_name` -- (required) used to define the name of the service. This is typically the name of the executable.
|
# `service_name` -- (required) used to define the name of the service. This is typically the name of the executable.
|
||||||
@ -79,6 +100,8 @@ systemd_default_service_type: simple
|
|||||||
# `program_accounting` -- (optional) Case sensitive Key=Value pairs for service Accounting
|
# `program_accounting` -- (optional) Case sensitive Key=Value pairs for service Accounting
|
||||||
# `enabled` -- (optional) Set the enabled state of the service.
|
# `enabled` -- (optional) Set the enabled state of the service.
|
||||||
# `state` -- (optional) Set the running state of the service.
|
# `state` -- (optional) Set the running state of the service.
|
||||||
|
# `environment` -- (optional) set additional environment settings, this option is a hash of strings.
|
||||||
|
# `environment_file` -- (optional) set additional environment settings through a given file. this option is a string.
|
||||||
|
|
||||||
# Under the service dictionary the "timer" key can be added which will enable a given service
|
# Under the service dictionary the "timer" key can be added which will enable a given service
|
||||||
# as a timer (Legacy cron job).
|
# as a timer (Legacy cron job).
|
||||||
@ -91,6 +114,21 @@ systemd_default_service_type: simple
|
|||||||
|
|
||||||
# Examples:
|
# Examples:
|
||||||
# systemd_services:
|
# systemd_services:
|
||||||
|
# - service_name: ServiceU
|
||||||
|
# config_overrides: {} # This is used to add in arbitratry unit file options
|
||||||
|
# execstarts:
|
||||||
|
# - ServiceU
|
||||||
|
# environment_file: "/etc/default/default-file"
|
||||||
|
#
|
||||||
|
# - service_name: ServiceV
|
||||||
|
# config_overrides: {} # This is used to add in arbitratry unit file options
|
||||||
|
# execstarts:
|
||||||
|
# - ServiceV
|
||||||
|
# environment:
|
||||||
|
# VAR1: "word1 word2"
|
||||||
|
# VAR2: "word3"
|
||||||
|
# VAR3: "$word 5 6"
|
||||||
|
#
|
||||||
# - service_name: ServiceW
|
# - service_name: ServiceW
|
||||||
# config_overrides: {} # This is used to add in arbitratry unit file options
|
# config_overrides: {} # This is used to add in arbitratry unit file options
|
||||||
# execstarts:
|
# execstarts:
|
||||||
|
@ -16,10 +16,12 @@ Type={{ service_type }}
|
|||||||
User={{ item.systemd_user_name | default(systemd_user_name) }}
|
User={{ item.systemd_user_name | default(systemd_user_name) }}
|
||||||
Group={{ item.systemd_group_name | default(systemd_group_name) }}
|
Group={{ item.systemd_group_name | default(systemd_group_name) }}
|
||||||
|
|
||||||
{% if item.environment is defined %}
|
{% for key, value in (item.environment | default(systemd_environment)).items() %}
|
||||||
{% for key, value in item.environment.items() | default({}) %}
|
|
||||||
Environment="{{ key }}={{ value }}"
|
Environment="{{ key }}={{ value }}"
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if (item.environment_file is defined) or (systemd_environment_file is defined) %}
|
||||||
|
EnvironmentFile={{ item.environment_file | default(systemd_environment_file) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% set _execstarts = item.execstarts %}
|
{% set _execstarts = item.execstarts %}
|
||||||
|
@ -25,7 +25,12 @@
|
|||||||
- service_name: "test simple service0"
|
- service_name: "test simple service0"
|
||||||
execstarts: "/bin/bash -c 'while true; do sleep 2 && echo test simple service; done'"
|
execstarts: "/bin/bash -c 'while true; do sleep 2 && echo test simple service; done'"
|
||||||
enabled: yes
|
enabled: yes
|
||||||
- service_name: "test oneshot service0"
|
- service_name: "test simple service0 with env vars"
|
||||||
|
execstarts: "/bin/bash -c 'while true; do sleep 2 && echo $ENV_VAR1; done'"
|
||||||
|
enabled: yes
|
||||||
|
environment:
|
||||||
|
ENV_VAR1: "testing"
|
||||||
|
- service_name: "test oneshot service1"
|
||||||
config_overrides:
|
config_overrides:
|
||||||
Unit:
|
Unit:
|
||||||
Description: Test oneshot service
|
Description: Test oneshot service
|
||||||
@ -67,7 +72,8 @@
|
|||||||
changed_when: false
|
changed_when: false
|
||||||
with_items:
|
with_items:
|
||||||
- test_simple_service0
|
- test_simple_service0
|
||||||
- test_oneshot_service0
|
- test_simple_service0_with_env_vars
|
||||||
|
- test_oneshot_service1
|
||||||
- test_timer_service0.timer
|
- test_timer_service0.timer
|
||||||
- test_timer_service1.timer
|
- test_timer_service1.timer
|
||||||
tags:
|
tags:
|
||||||
|
Loading…
Reference in New Issue
Block a user