Saltstack v2017.7.0 compatibility, Docker 17.06 compatibility, adds force and build options to dockerng.image_present (#15)
* extend container and compose functionality, make compose file idiomatic, allow setting mine function
* "network" backward compatibility
* conformed to naming convention and changed file mode
* fixed Jinja so that docker.swarm can render even if swarm master ip is not available from the mine
* renamed grain_function to mine_function for more accurate description
* Saltstack v2017.7.0 compatibility, Docker 17.06 compatibility, adds force and build options to dockerng.image_present
diff --git a/docker/client/container.sls b/docker/client/container.sls
index 322f616..cf47819 100644
--- a/docker/client/container.sls
+++ b/docker/client/container.sls
@@ -9,8 +9,16 @@
{%- set required_containers = [] %}
{{id}}_image:
+ {%- if grains['saltversioninfo'][0] >= 2017 %}
+ docker_image.present:
+ {%- else %}
dockerng.image_present:
+ {%- endif %}
- name: {{ container.image }}
+ {%- if container.build is defined %}
+ - build: {{ container.build }}
+ {%- endif %}
+ - force: {{ container.force|default(False) }}
{%- if grains.get('noservices') %}
- onlyif: /bin/false
{%- endif %}
@@ -41,7 +49,11 @@
{%- endfor %}
{{id}}_container:
+ {%- if grains['saltversioninfo'][0] >= 2017 %}
+ docker_container.running:
+ {%- else %}
dockerng.running:
+ {%- endif %}
- name: {{id}}
- start: {{ container.start|default(True) }}
- user: {{ container.user|default("root") }}
@@ -94,11 +106,19 @@
{%- if 'restart' in container %}
- restart_policy: {{ container.restart }}
{%- endif %}
- - require:
+ - watch:
+ {%- if grains['saltversioninfo'][0] >= 2017 %}
+ - docker_image: {{id}}_image
+ {%- else %}
- dockerng: {{id}}_image
+ {%- endif %}
{%- if required_containers is defined %}
{%- for containerid in required_containers %}
+ {%- if grains['saltversioninfo'][0] >= 2017 %}
+ - docker_container: {{containerid}}
+ {%- else %}
- dockerng: {{containerid}}
+ {%- endif %}
{%- endfor %}
{%- endif %}
{%- for key, value in container.iteritems() %}
diff --git a/docker/client/service.sls b/docker/client/service.sls
index 178ed33..42c8270 100644
--- a/docker/client/service.sls
+++ b/docker/client/service.sls
@@ -24,6 +24,7 @@
docker service create
--name {{ name }}
--with-registry-auth
+ --detach=true
{%- for env, value in service.get('environment', {}).iteritems() %} -e {{ env }}="{{ value }}"{%- endfor %}
{%- for port in service.get('ports', []) %} -p {{ port }}{%- endfor %}
{%- for name, host in service.get('hosts', {}).iteritems() %} --host {{ host.get('name', name) }}:{{ host.address }}{%- endfor %}
@@ -60,8 +61,8 @@
i=1;
while [ $i -lt 5 ]; do
docker service update
- --name {{ name }}
--with-registry-auth
+ --detach=true
{%- if service.replicas is defined %} --replicas {{ service.replicas }}{%- endif %}
{%- if service.user is defined %} --user {{ service.user }}{%- endif %}
{%- if service.workdir is defined %} --workdir {{ service.workdir }}{%- endif %}
diff --git a/docker/map.jinja b/docker/map.jinja
index d70b4b0..012d86d 100644
--- a/docker/map.jinja
+++ b/docker/map.jinja
@@ -74,4 +74,6 @@
- volumes_from
- links
- restart
+ - force
+ - build
{%- endload %}