Salt: support systemd (don't assume Redhat <=> systemd)

Also work around problems with Salt & systemd services, in particular
that Salt doesn't issue a daemon-reload.
This commit is contained in:
Justin Santa Barbara
2015-06-29 14:17:17 -04:00
parent 974377b306
commit bcd92c7522
17 changed files with 264 additions and 77 deletions

View File

@@ -1,6 +1,3 @@
DOCKER_OPTS=""
{% if grains.docker_opts is defined and grains.docker_opts %}
DOCKER_OPTS="${DOCKER_OPTS} {{grains.docker_opts}}"
{% endif %}
DOCKER_OPTS="${DOCKER_OPTS} --bridge=cbr0 --iptables=false --ip-masq=false"
{% set grains_opts = grains.get('docker_opts', '') -%}
DOCKER_OPTS="{{grains_opts}} --bridge=cbr0 --iptables=false --ip-masq=false"
DOCKER_NOFILE=1000000

View File

@@ -0,0 +1,20 @@
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
Requires=docker.socket
[Service]
EnvironmentFile={{ environment_file }}
ExecStart=/usr/bin/docker -d -H fd:// "$DOCKER_OPTS"
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
Restart=always
RestartSec=2s
StartLimitInterval=0
[Install]
WantedBy=multi-user.target

View File

@@ -1,4 +1,4 @@
{% if grains['os_family'] == 'RedHat' %}
{% if pillar.get('is_systemd') %}
{% set environment_file = '/etc/sysconfig/docker' %}
{% else %}
{% set environment_file = '/etc/default/docker' %}
@@ -116,6 +116,36 @@ lxc-docker-{{ override_docker_ver }}:
- file: /var/cache/docker-install/{{ override_deb }}
{% endif %}
# Default docker systemd unit file doesn't use an EnvironmentFile; replace it with one that does.
{% if pillar.get('is_systemd') %}
{{ pillar.get('systemd_system_path') }}/docker.service:
file.managed:
- source: salt://docker/docker.service
- template: jinja
- user: root
- group: root
- mode: 644
- defaults:
environment_file: {{ environment_file }}
# The docker service.running block below doesn't work reliably
# Instead we run our script which e.g. does a systemd daemon-reload
# But we keep the service block below, so it can be used by dependencies
# TODO: Fix this
fix-service-docker:
cmd.wait:
- name: /opt/kubernetes/helpers/services bounce docker
- watch:
- file: {{ pillar.get('systemd_system_path') }}/docker.service
- file: {{ environment_file }}
{% if override_docker_ver != '' %}
- require:
- pkg: lxc-docker-{{ override_docker_ver }}
{% endif %}
{% endif %}
docker:
service.running:
- enable: True