From 112a376a001d6b9fcb981ae11b6a6843100c6cfc Mon Sep 17 00:00:00 2001 From: Tyler Hunt Date: Tue, 12 Feb 2019 15:48:09 -0700 Subject: [PATCH 01/51] passing the hold and allow_updated to docker pkg.installed --- docker/init.sls | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/init.sls b/docker/init.sls index ae424593..f4785cf2 100644 --- a/docker/init.sls +++ b/docker/init.sls @@ -33,6 +33,8 @@ docker-package: - pkgrepo: docker-package-repository {%- endif %} - refresh: {{ docker.refresh_repo }} + - allow_updates: {{ docker.allow_updates }} + - hold: {{ docker.hold }} - require: - pkg: docker-package-dependencies {%- if grains['os']|lower not in ('amazon', 'fedora', 'suse',) %} From 16467656b69798de7b7172ac261b4b5f99ca5301 Mon Sep 17 00:00:00 2001 From: Tyler Hunt Date: Tue, 12 Feb 2019 15:52:47 -0700 Subject: [PATCH 02/51] accessing correct level of config --- docker/init.sls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/init.sls b/docker/init.sls index f4785cf2..436f3ead 100644 --- a/docker/init.sls +++ b/docker/init.sls @@ -33,8 +33,8 @@ docker-package: - pkgrepo: docker-package-repository {%- endif %} - refresh: {{ docker.refresh_repo }} - - allow_updates: {{ docker.allow_updates }} - - hold: {{ docker.hold }} + - allow_updates: {{ docker.pkg.allow_updates }} + - hold: {{ docker.pkg.hold }} - require: - pkg: docker-package-dependencies {%- if grains['os']|lower not in ('amazon', 'fedora', 'suse',) %} From e2b1e792a2632c93db27d54cad1b0b95b1831553 Mon Sep 17 00:00:00 2001 From: N Date: Thu, 30 May 2019 19:17:16 +0100 Subject: [PATCH 03/51] Fix rendering error on MacOS ('oscodename') --- docker/kernel.sls | 2 +- docker/osfamilymap.yaml | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docker/kernel.sls b/docker/kernel.sls index 4e7d8164..3c07aa69 100644 --- a/docker/kernel.sls +++ b/docker/kernel.sls @@ -6,7 +6,7 @@ pkgrepo-dependencies: - name: python-apt {% if "pkgrepo" in docker.kernel %} -{{ grains["oscodename"] }}-backports-repo: +{{ grains["oscodename"]|lower }}-backports-repo: pkgrepo.managed: {% for key, value in docker.kernel.pkgrepo.items() %} - {{ key }}: {{ value }} diff --git a/docker/osfamilymap.yaml b/docker/osfamilymap.yaml index 281c3cd2..2a613f9f 100644 --- a/docker/osfamilymap.yaml +++ b/docker/osfamilymap.yaml @@ -6,7 +6,7 @@ Debian: repo: url_base: https://download.docker.com/linux/{{ grains['os'] |lower }} key_url: https://download.docker.com/linux/{{ grains['os'] |lower }}/gpg - version: {{ grains['oscodename'] |lower }} + version: {{ grains['oscodename']|lower if 'oscodename' in grains else '' }} file: /etc/apt/sources.list.d/docker.list RedHat: @@ -15,7 +15,7 @@ RedHat: repo: url_base: https://download.docker.com/linux/{{ grains['os'] |lower }}/{{ grains['osmajorrelease'] }}/$basearch/stable/ key_url: https://download.docker.com/linux/{{ grains['os'] |lower }}/gpg - version: {{ grains['oscodename'] |lower }} + version: {{ grains['oscodename']|lower if 'oscodename' in grains else '' }} file: /etc/yum.repos.d/docker-ce.repo Suse: @@ -23,4 +23,3 @@ Suse: name: docker pkgs: - python3-pip #python 3 is default on OpenSUSE 15.0 - From 5f7db530e712032a6a8cfbac682821b251205c24 Mon Sep 17 00:00:00 2001 From: N Date: Thu, 30 May 2019 20:45:42 +0100 Subject: [PATCH 04/51] Docker is brew name --- docker/osfamilymap.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker/osfamilymap.yaml b/docker/osfamilymap.yaml index 2a613f9f..58336ee7 100644 --- a/docker/osfamilymap.yaml +++ b/docker/osfamilymap.yaml @@ -23,3 +23,7 @@ Suse: name: docker pkgs: - python3-pip #python 3 is default on OpenSUSE 15.0 + +MacOS: + pkg: + name: docker From a96c4c2b792f1c7271d5a571a2f28e9dfabcd735 Mon Sep 17 00:00:00 2001 From: N Date: Thu, 30 May 2019 20:52:54 +0100 Subject: [PATCH 05/51] No upstart/sysv on Darwin --- docker/init.sls | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/init.sls b/docker/init.sls index 1c733e1a..4d93a900 100644 --- a/docker/init.sls +++ b/docker/init.sls @@ -30,8 +30,6 @@ docker-package: {%- if grains['os']|lower not in ('amazon', 'fedora', 'suse',) %} - pkgrepo: docker-package-repository {%- endif %} - - require_in: - - file: docker-config {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 cmd.run: - name: /usr/bin/pip install {{ '--upgrade' if docker.pip.upgrade else '' }} pip @@ -45,6 +43,7 @@ docker-package: - require: - pkg: docker-package-dependencies + {%- if grains.os != 'MacOS' %} docker-config: file.managed: - name: {{ docker.configfile }} @@ -52,6 +51,11 @@ docker-config: - template: jinja - mode: 644 - user: root + - require: + - pkg: docker-package + - watch_in: + - service: docker-service + {%- endif %} {% if docker.daemon_config %} docker-daemon-dir: @@ -77,7 +81,6 @@ docker-service: - name: docker - enable: True - watch: - - file: docker-config - pkg: docker-package {% if docker.daemon_config %} - file: docker-daemon-config From 6b1b5fe8883b5963975354cc1df9e6f6daefaaa3 Mon Sep 17 00:00:00 2001 From: N Date: Tue, 2 Jul 2019 16:41:33 +0100 Subject: [PATCH 06/51] chore(python): use python3 apt packages --- docker/defaults.yaml | 2 +- docker/osfamilymap.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/defaults.yaml b/docker/defaults.yaml index d7776a45..d88827ec 100644 --- a/docker/defaults.yaml +++ b/docker/defaults.yaml @@ -17,7 +17,7 @@ docker: pkgs: - iptables - ca-certificates - - python-docker + - python3-docker pkg: name: docker-ce diff --git a/docker/osfamilymap.yaml b/docker/osfamilymap.yaml index 58336ee7..c64fc154 100644 --- a/docker/osfamilymap.yaml +++ b/docker/osfamilymap.yaml @@ -1,8 +1,8 @@ Debian: pkgs: - apt-transport-https - - python-apt - - python-pip + - python3-apt + - python3-pip repo: url_base: https://download.docker.com/linux/{{ grains['os'] |lower }} key_url: https://download.docker.com/linux/{{ grains['os'] |lower }}/gpg @@ -11,7 +11,7 @@ Debian: RedHat: pkgs: - - python2-pip + - python3-pip repo: url_base: https://download.docker.com/linux/{{ grains['os'] |lower }}/{{ grains['osmajorrelease'] }}/$basearch/stable/ key_url: https://download.docker.com/linux/{{ grains['os'] |lower }}/gpg From 90641213b470002aa412d5e3e2ac22262b00bf84 Mon Sep 17 00:00:00 2001 From: N Date: Tue, 2 Jul 2019 16:36:57 +0100 Subject: [PATCH 07/51] fix(syntax): param 'refresh' replaces 'refresh_db' --- docker/repo.sls | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker/repo.sls b/docker/repo.sls index 61a84f26..3e869390 100644 --- a/docker/repo.sls +++ b/docker/repo.sls @@ -21,7 +21,11 @@ docker-package-repository: {% else %} - key_url: {{ docker.repo.key_url }} {% endif %} + {%- if grains['saltversioninfo'] >= [2018, 3, 0] %} + - refresh: True + {%- else %} - refresh_db: True + {%- endif %} - require_in: - pkg: docker-package - require: From 7d900faf1becf0b4aa25e021e8d7c8032d54391f Mon Sep 17 00:00:00 2001 From: RemiChristiaan Date: Thu, 4 Jul 2019 13:30:07 +0200 Subject: [PATCH 08/51] Using the tplroot method (borrowed from the ufw-formula) prevents having to set --extra-filerefs when using the formula with salt-ssh. --- docker/map.jinja | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docker/map.jinja b/docker/map.jinja index f1f39fa4..425986ef 100644 --- a/docker/map.jinja +++ b/docker/map.jinja @@ -23,11 +23,11 @@ }, }, merge=salt['pillar.get']('registry:lookup:amazon')) %} -# Begin migration to new style map.jinja -{% import_yaml "docker/defaults.yaml" as defaults %} -{% import_yaml 'docker/osfamilymap.yaml' as osfamilymap %} -{% import_yaml "docker/codenamemap.yaml" as codemap %} -{% import_yaml "docker/osmap.yaml" as osmap %} +{%- set tplroot = tpldir.split('/')[0] %} +{% import_yaml tplroot ~ "/defaults.yaml" or {} as defaults %} +{% import_yaml tplroot ~ "/osfamilymap.yaml" or {} as osfamilymap %} +{% import_yaml tplroot ~ "/codenamemap.yaml" or {} as codemap %} +{% import_yaml tplroot ~ "/osmap.yaml" or {} as osmap %} {% set pkg = salt['pillar.get']('docker-pkg:lookup', default={}, merge=True) %} {% do defaults.docker.update(pkg) %} From 9193df070dae09cb9e075cbd71b2991b728d7145 Mon Sep 17 00:00:00 2001 From: RemiChristiaan Date: Thu, 4 Jul 2019 14:05:36 +0200 Subject: [PATCH 09/51] Updating apt (ubuntu/debian) resulted in the following error: Skipping acquire of configured file 'stable/binary-i386/Packages' as repository 'https://download.docker.com/linux/ubuntu bionic InRelease' doesn't support architecture 'i386' Adding [arch=] between deb and https solved this problem. --- docker/repo.sls | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/repo.sls b/docker/repo.sls index 3e869390..96379a68 100644 --- a/docker/repo.sls +++ b/docker/repo.sls @@ -8,7 +8,8 @@ {% set humanname_old = 'Old ' if docker.use_old_repo else '' %} {%- if grains['os_family']|lower in ('debian',) %} -{% set url = 'https://apt.dockerproject.org/repo ' ~ grains["os"]|lower ~ '-' ~ grains["oscodename"] ~ ' main' if docker.use_old_repo else docker.repo.url_base ~ ' ' ~ docker.repo.version ~ ' stable' %} +{% set url = '[arch=' ~ grains["osarch"] ~ '] https://apt.dockerproject.org/repo ' ~ grains["os"]|lower ~ '-' ~ grains["oscodename"] ~ ' main' if docker.use_old_repo else '[arch=' ~ grains["osarch"] ~ '] ' ~ doc + docker-package-repository: pkgrepo.{{ repo_state }}: From a245db5e265dfd437a5a2f44e71159f228258402 Mon Sep 17 00:00:00 2001 From: RemiChristiaan Date: Thu, 4 Jul 2019 14:05:36 +0200 Subject: [PATCH 10/51] Updating apt (ubuntu/debian) resulted in the following error: Skipping acquire of configured file 'stable/binary-i386/Packages' as repository 'https://download.docker.com/linux/ubuntu bionic InRelease' doesn't support architecture 'i386' Adding [arch=] between deb and https solved this problem. --- docker/repo.sls | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/repo.sls b/docker/repo.sls index 3e869390..b2db2c69 100644 --- a/docker/repo.sls +++ b/docker/repo.sls @@ -8,7 +8,8 @@ {% set humanname_old = 'Old ' if docker.use_old_repo else '' %} {%- if grains['os_family']|lower in ('debian',) %} -{% set url = 'https://apt.dockerproject.org/repo ' ~ grains["os"]|lower ~ '-' ~ grains["oscodename"] ~ ' main' if docker.use_old_repo else docker.repo.url_base ~ ' ' ~ docker.repo.version ~ ' stable' %} +{% set url = '[arch=' ~ grains["osarch"] ~ '] https://apt.dockerproject.org/repo ' ~ grains["os"]|lower ~ '-' ~ grains["oscodename"] ~ ' main' if docker.use_old_repo else '[arch=' ~ grains["osarch"] ~ '] ' ~ docker.repo.url_base ~ ' ' ~ docker.repo.version ~ ' stable' %} + docker-package-repository: pkgrepo.{{ repo_state }}: From 39577e2072d5c875d5a16cbc6ceb6467702afa99 Mon Sep 17 00:00:00 2001 From: N Date: Thu, 4 Jul 2019 14:47:43 +0100 Subject: [PATCH 11/51] Revert "Make it easier when using salt-ssh" --- docker/map.jinja | 10 +++++----- docker/repo.sls | 3 +-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docker/map.jinja b/docker/map.jinja index 425986ef..f1f39fa4 100644 --- a/docker/map.jinja +++ b/docker/map.jinja @@ -23,11 +23,11 @@ }, }, merge=salt['pillar.get']('registry:lookup:amazon')) %} -{%- set tplroot = tpldir.split('/')[0] %} -{% import_yaml tplroot ~ "/defaults.yaml" or {} as defaults %} -{% import_yaml tplroot ~ "/osfamilymap.yaml" or {} as osfamilymap %} -{% import_yaml tplroot ~ "/codenamemap.yaml" or {} as codemap %} -{% import_yaml tplroot ~ "/osmap.yaml" or {} as osmap %} +# Begin migration to new style map.jinja +{% import_yaml "docker/defaults.yaml" as defaults %} +{% import_yaml 'docker/osfamilymap.yaml' as osfamilymap %} +{% import_yaml "docker/codenamemap.yaml" as codemap %} +{% import_yaml "docker/osmap.yaml" as osmap %} {% set pkg = salt['pillar.get']('docker-pkg:lookup', default={}, merge=True) %} {% do defaults.docker.update(pkg) %} diff --git a/docker/repo.sls b/docker/repo.sls index b2db2c69..3e869390 100644 --- a/docker/repo.sls +++ b/docker/repo.sls @@ -8,8 +8,7 @@ {% set humanname_old = 'Old ' if docker.use_old_repo else '' %} {%- if grains['os_family']|lower in ('debian',) %} -{% set url = '[arch=' ~ grains["osarch"] ~ '] https://apt.dockerproject.org/repo ' ~ grains["os"]|lower ~ '-' ~ grains["oscodename"] ~ ' main' if docker.use_old_repo else '[arch=' ~ grains["osarch"] ~ '] ' ~ docker.repo.url_base ~ ' ' ~ docker.repo.version ~ ' stable' %} - +{% set url = 'https://apt.dockerproject.org/repo ' ~ grains["os"]|lower ~ '-' ~ grains["oscodename"] ~ ' main' if docker.use_old_repo else docker.repo.url_base ~ ' ' ~ docker.repo.version ~ ' stable' %} docker-package-repository: pkgrepo.{{ repo_state }}: From 0253e6e2bb6ee73d6ed46f06505af87bc779464b Mon Sep 17 00:00:00 2001 From: RemiChristiaan Date: Fri, 5 Jul 2019 08:54:56 +0200 Subject: [PATCH 12/51] Use tpldir to make imports work from e.g. salt-ssh without having to resort to --extra-filerefs=salt://docker/map.jinja,... on the cmd line. Also added the os architecture to the apt sources.list line: deb [arch=] http://... --- docker/compose-ng.sls | 6 ++++-- docker/compose.sls | 4 +++- docker/containers.sls | 4 +++- docker/files/config | 5 +---- docker/files/upstart.conf.deprecated.registry | 6 ++++-- docker/init.sls | 6 +++++- docker/kernel.sls | 4 +++- docker/map.jinja | 13 ++++++++----- docker/registry.sls | 4 +++- docker/remove.sls | 4 +++- docker/repo.sls | 7 +++++-- 11 files changed, 42 insertions(+), 21 deletions(-) diff --git a/docker/compose-ng.sls b/docker/compose-ng.sls index e7f3c756..9826d751 100644 --- a/docker/compose-ng.sls +++ b/docker/compose-ng.sls @@ -1,5 +1,7 @@ -{%- from "docker/map.jinja" import docker with context %} -{%- from "docker/map.jinja" import compose with context %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} +{%- from tplroot ~ "/map.jinja" import compose with context %} include: - docker.compose diff --git a/docker/compose.sls b/docker/compose.sls index 3aea9fc0..c9bda46e 100644 --- a/docker/compose.sls +++ b/docker/compose.sls @@ -1,4 +1,6 @@ -{% from "docker/map.jinja" import docker with context %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} include: - docker diff --git a/docker/containers.sls b/docker/containers.sls index 6f103522..e0e7b94a 100644 --- a/docker/containers.sls +++ b/docker/containers.sls @@ -1,4 +1,6 @@ -{% from "docker/map.jinja" import containers with context %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import containers with context %} include: - docker diff --git a/docker/files/config b/docker/files/config index b2eed115..d84dca4b 100644 --- a/docker/files/config +++ b/docker/files/config @@ -1,6 +1,3 @@ -{% from "docker/map.jinja" import docker with context %} - - # Docker Upstart and SysVinit configuration file # @@ -22,6 +19,6 @@ # This is also a handy place to tweak where Docker's temporary files go. #export TMPDIR="/mnt/bigdrive/docker-tmp" -{% for line in docker.get("config", []) %} +{% for line in config %} {{ line }} {% endfor %} diff --git a/docker/files/upstart.conf.deprecated.registry b/docker/files/upstart.conf.deprecated.registry index 1c057804..65f495c6 100644 --- a/docker/files/upstart.conf.deprecated.registry +++ b/docker/files/upstart.conf.deprecated.registry @@ -1,5 +1,7 @@ -{% from "docker/map.jinja" import registry with context %} -{% from "docker/map.jinja" import amazon with context %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import registry with context %} +{%- from tplroot ~ "/map.jinja" import amazon with context %} description "{{ registry.description }}" start on runlevel [2345] diff --git a/docker/init.sls b/docker/init.sls index 4db571a2..18d84abf 100644 --- a/docker/init.sls +++ b/docker/init.sls @@ -1,4 +1,6 @@ -{% from "docker/map.jinja" import docker with context %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} {%- set docker_pkg_name = docker.pkg.old_name if docker.use_old_repo else docker.pkg.name %} {%- set docker_pkg_version = docker.version | default(docker.pkg.version) %} @@ -61,6 +63,8 @@ docker-config: - pkg: docker-package - watch_in: - service: docker-service + - context: + config: {{ docker.config }} {%- endif %} {% if docker.daemon_config %} diff --git a/docker/kernel.sls b/docker/kernel.sls index 3c07aa69..9f6c467f 100644 --- a/docker/kernel.sls +++ b/docker/kernel.sls @@ -1,4 +1,6 @@ -{% from "docker/map.jinja" import docker with context %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} {%- if docker.kernel is defined and grains['os_family']|lower == 'debian' %} pkgrepo-dependencies: diff --git a/docker/map.jinja b/docker/map.jinja index f1f39fa4..0bf07181 100644 --- a/docker/map.jinja +++ b/docker/map.jinja @@ -23,11 +23,14 @@ }, }, merge=salt['pillar.get']('registry:lookup:amazon')) %} -# Begin migration to new style map.jinja -{% import_yaml "docker/defaults.yaml" as defaults %} -{% import_yaml 'docker/osfamilymap.yaml' as osfamilymap %} -{% import_yaml "docker/codenamemap.yaml" as codemap %} -{% import_yaml "docker/osmap.yaml" as osmap %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} + +{# Begin migration to new style map.jinja using tplroot for portability #} +{% import_yaml tplroot ~ "/defaults.yaml" or {} as defaults %} +{% import_yaml tplroot ~ "/osfamilymap.yaml" or {} as osfamilymap %} +{% import_yaml tplroot ~ "/codenamemap.yaml" or {} as codemap %} +{% import_yaml tplroot ~ "/osmap.yaml" or {} as osmap %} {% set pkg = salt['pillar.get']('docker-pkg:lookup', default={}, merge=True) %} {% do defaults.docker.update(pkg) %} diff --git a/docker/registry.sls b/docker/registry.sls index 5477c83e..f670c4c1 100644 --- a/docker/registry.sls +++ b/docker/registry.sls @@ -1,4 +1,6 @@ -{% from "docker/map.jinja" import registry with context %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} file-registry-upstart-conf: file.managed: diff --git a/docker/remove.sls b/docker/remove.sls index 8bd08f03..fc96667b 100644 --- a/docker/remove.sls +++ b/docker/remove.sls @@ -1,4 +1,6 @@ -{% from "docker/map.jinja" import docker with context %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} docker-packages-cleaned-service-dead: service.dead: diff --git a/docker/repo.sls b/docker/repo.sls index 3e869390..5ed8bda7 100644 --- a/docker/repo.sls +++ b/docker/repo.sls @@ -1,4 +1,7 @@ -{% from "docker/map.jinja" import docker with context %} + +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} {% set repo_state = 'absent' %} {% if docker.use_upstream_repo or docker.use_old_repo %} @@ -13,7 +16,7 @@ docker-package-repository: pkgrepo.{{ repo_state }}: - humanname: {{ grains["os"] }} {{ grains["oscodename"]|capitalize }} {{ humanname_old }}Docker Package Repository - - name: deb {{ url }} + - name: deb [arch={{ grains["osarch"] }}] {{ url }} - file: {{ docker.repo.file }} {% if docker.use_old_repo %} - keyserver: keyserver.ubuntu.com From 9b139aaedab5b76f54e93ad1d61183b71b357392 Mon Sep 17 00:00:00 2001 From: N Date: Mon, 8 Jul 2019 22:25:30 -0600 Subject: [PATCH 13/51] fix(sls): avoid unnecessary rendering error --- docker/init.sls | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker/init.sls b/docker/init.sls index 5019a617..f731ee32 100644 --- a/docker/init.sls +++ b/docker/init.sls @@ -34,8 +34,6 @@ docker-package: - allow_updates: {{ docker.pkg.allow_updates }} - hold: {{ docker.pkg.hold }} {%- endif %} - - require_in: - - file: docker-config {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 cmd.run: - name: /usr/bin/pip install {{ '--upgrade' if docker.pip.upgrade else '' }} pip @@ -111,4 +109,4 @@ docker-py: - require: - pkg: docker-package-dependencies {%- endif %} -{% endif %} \ No newline at end of file +{% endif %} From b0ce436449df117360044dc5236e67042163e5e2 Mon Sep 17 00:00:00 2001 From: N Date: Mon, 8 Jul 2019 22:32:41 -0600 Subject: [PATCH 14/51] doc(clean): make remove alias for clean --- README.rst | 5 +++++ docker/clean.sls | 54 ++++++++++++++++++++++++++++++++++++++++++++++ docker/remove.sls | 55 ++--------------------------------------------- 3 files changed, 61 insertions(+), 53 deletions(-) create mode 100644 docker/clean.sls diff --git a/README.rst b/README.rst index d5628f3c..c1fe2590 100644 --- a/README.rst +++ b/README.rst @@ -70,6 +70,11 @@ In the example pillar above: - Upstart files are created for each container, so ``service stop|start|status`` should just work - ``service stop`` will wipeout the container completely (ie ``docker stop + docker rm ``) +``docker.clean`` +---------------- + +Stop Docker daemon. Remove older docker packages (usually called 'docker' and 'docker-engine'). + ``docker.repo`` --------------- diff --git a/docker/clean.sls b/docker/clean.sls new file mode 100644 index 00000000..8bd08f03 --- /dev/null +++ b/docker/clean.sls @@ -0,0 +1,54 @@ +{% from "docker/map.jinja" import docker with context %} + +docker-packages-cleaned-service-dead: + service.dead: + - name: docker + {% if "process_signature" in docker %} + - sig: {{ docker.process_signature }} + - onlyif: ps -ef | grep "{{ docker.process_signature }}" ##stop stderr from sig + {% endif %} + - require_in: + - pkg: docker-packages-cleaned + +docker-packages-cleaned: + pkg.removed: + - pkgs: + - {{ docker.pkg.old_name if docker.use_old_repo else docker.pkg.name }} + - docker + - docker.io + - docker-client + - docker-client-latest + - docker-common + - docker-latest + - docker-latest-logrotate + - docker-logrotate + - docker-selinux + - docker-engine-selinux + - docker-engine + {%- for pkgname in docker.pkgs %} + - {{ pkgname }} + {%- endfor %} + +{# remove pip packages installed by formula #} + +docker-pips-removed: + pip.removed: + - onlyif: python -m pip --version >/dev/null 2>&1 + - names: + {% if docker.compose_version -%} + - docker-compose == {{ docker.compose_version }} + {% else -%} + - docker-compose + {% endif -%} + {% if docker.install_docker_py -%} + {% if "python_package" in docker -%} + - {{ docker.python_package }} + {% elif "pip_version" in docker -%} + - docker-py {{ docker.pip_version }} + {% else -%} + - docker-py + {%- endif -%} + {% endif %} + {%- if docker.proxy %} + - proxy: {{ docker.proxy }} + {%- endif %} diff --git a/docker/remove.sls b/docker/remove.sls index 8bd08f03..754c5e38 100644 --- a/docker/remove.sls +++ b/docker/remove.sls @@ -1,54 +1,3 @@ -{% from "docker/map.jinja" import docker with context %} -docker-packages-cleaned-service-dead: - service.dead: - - name: docker - {% if "process_signature" in docker %} - - sig: {{ docker.process_signature }} - - onlyif: ps -ef | grep "{{ docker.process_signature }}" ##stop stderr from sig - {% endif %} - - require_in: - - pkg: docker-packages-cleaned - -docker-packages-cleaned: - pkg.removed: - - pkgs: - - {{ docker.pkg.old_name if docker.use_old_repo else docker.pkg.name }} - - docker - - docker.io - - docker-client - - docker-client-latest - - docker-common - - docker-latest - - docker-latest-logrotate - - docker-logrotate - - docker-selinux - - docker-engine-selinux - - docker-engine - {%- for pkgname in docker.pkgs %} - - {{ pkgname }} - {%- endfor %} - -{# remove pip packages installed by formula #} - -docker-pips-removed: - pip.removed: - - onlyif: python -m pip --version >/dev/null 2>&1 - - names: - {% if docker.compose_version -%} - - docker-compose == {{ docker.compose_version }} - {% else -%} - - docker-compose - {% endif -%} - {% if docker.install_docker_py -%} - {% if "python_package" in docker -%} - - {{ docker.python_package }} - {% elif "pip_version" in docker -%} - - docker-py {{ docker.pip_version }} - {% else -%} - - docker-py - {%- endif -%} - {% endif %} - {%- if docker.proxy %} - - proxy: {{ docker.proxy }} - {%- endif %} +include: + - clean From be9a7696afe9d282983c3f7d72736306ab78ae2e Mon Sep 17 00:00:00 2001 From: N Date: Mon, 8 Jul 2019 22:46:34 -0600 Subject: [PATCH 15/51] fix(merge): workaround broken map.jinja merge --- docker/osfamilymap.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docker/osfamilymap.yaml b/docker/osfamilymap.yaml index 281c3cd2..80ec3e9d 100644 --- a/docker/osfamilymap.yaml +++ b/docker/osfamilymap.yaml @@ -24,3 +24,8 @@ Suse: pkgs: - python3-pip #python 3 is default on OpenSUSE 15.0 +MacOS: + pkg: + name: docker + allow_updates: False + hold: False From 71b46bd7ed5ecb420ddfc945cf908fc9e2339b75 Mon Sep 17 00:00:00 2001 From: N Date: Mon, 8 Jul 2019 22:59:54 -0600 Subject: [PATCH 16/51] chore(template): align osmap with template-formula --- docker/defaults.yaml | 1 + docker/init.sls | 113 +-------------------------------------- docker/install.sls | 114 ++++++++++++++++++++++++++++++++++++++++ docker/osfamilymap.yaml | 20 +++++++ 4 files changed, 136 insertions(+), 112 deletions(-) create mode 100644 docker/install.sls diff --git a/docker/defaults.yaml b/docker/defaults.yaml index d7776a45..1f1c53e6 100644 --- a/docker/defaults.yaml +++ b/docker/defaults.yaml @@ -9,6 +9,7 @@ docker: config: [] daemon_config: {} version: '' + rootuser: root use_upstream_repo: True use_old_repo: False diff --git a/docker/init.sls b/docker/init.sls index 5019a617..54b70169 100644 --- a/docker/init.sls +++ b/docker/init.sls @@ -1,114 +1,3 @@ -{% from "docker/map.jinja" import docker with context %} - -{%- set docker_pkg_name = docker.pkg.old_name if docker.use_old_repo else docker.pkg.name %} -{%- set docker_pkg_version = docker.version | default(docker.pkg.version) %} -{%- set docker_packages = docker.kernel.pkgs + docker.pkgs %} include: - - .kernel - - .repo - -docker-package-dependencies: - pkg.installed: - - pkgs: - {%- for pkgname in docker_packages %} - - {{ pkgname }} - {%- endfor %} - {%- if "pip" in docker and "pkgname" in docker.pip %} - - {{ docker.pip.pkgname }} - {%- endif %} - - unless: test "`uname`" = "Darwin" - - refresh: {{ docker.refresh_repo }} - -docker-package: - pkg.installed: - - name: {{ docker_pkg_name }} - - version: {{ docker_pkg_version or 'latest' }} - - refresh: {{ docker.refresh_repo }} - - require: - - pkg: docker-package-dependencies - {%- if grains['os']|lower not in ('amazon', 'fedora', 'suse',) %} - - pkgrepo: docker-package-repository - {%- endif %} - {%- if grains['os']|lower not in ('suse',) %} - - allow_updates: {{ docker.pkg.allow_updates }} - - hold: {{ docker.pkg.hold }} - {%- endif %} - - require_in: - - file: docker-config - {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 - cmd.run: - - name: /usr/bin/pip install {{ '--upgrade' if docker.pip.upgrade else '' }} pip - {%- else %} - pip.installed: - - name: pip - - reload_modules: true - - upgrade: {{ docker.pip.upgrade }} - {%- endif %} - - onlyif: {{ docker.pip.install_pypi_pip }} #### onlyif you really need pypi pip instead of using official distro pip. - - require: - - pkg: docker-package-dependencies - -docker-config: - file.managed: - - name: {{ docker.configfile }} - - source: salt://docker/files/config - - template: jinja - - mode: 644 - - user: root - - {% if docker.daemon_config %} -docker-daemon-dir: - file.directory: - - name: /etc/docker - - user: root - - group: root - - mode: 755 - -docker-daemon-config: - file.serialize: - - name: /etc/docker/daemon.json - - user: root - - group: root - - mode: 644 - - dataset: - {{ docker.daemon_config | yaml() | indent(8) }} - - formatter: json - {% endif %} - -docker-service: - service.running: - - name: docker - - enable: True - - watch: - - file: docker-config - - pkg: docker-package - {% if docker.daemon_config %} - - file: docker-daemon-config - {% endif %} - {% if "process_signature" in docker %} - - sig: {{ docker.process_signature }} - {% endif %} - -{% if docker.install_docker_py %} -docker-py: - {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 - cmd.run: - - name: /usr/bin/pip install {{ docker.python_package }} - {%- else %} - pip.installed: - {%- if "python_package" in docker %} - - name: {{ docker.python_package }} - {%- elif "pip_version" in docker %} - - name: docker-py {{ docker.pip_version }} - {%- else %} - - name: docker-py - {%- endif %} - - reload_modules: true - {%- if docker.proxy %} - - proxy: {{ docker.proxy }} - {%- endif %} - - require: - - pkg: docker-package-dependencies - {%- endif %} -{% endif %} \ No newline at end of file + - .install diff --git a/docker/install.sls b/docker/install.sls new file mode 100644 index 00000000..134d2c5d --- /dev/null +++ b/docker/install.sls @@ -0,0 +1,114 @@ +{% from "docker/map.jinja" import docker with context %} + +{%- set docker_pkg_name = docker.pkg.old_name if docker.use_old_repo else docker.pkg.name %} +{%- set docker_pkg_version = docker.version | default(docker.pkg.version) %} +{%- set docker_packages = docker.kernel.pkgs + docker.pkgs %} + +include: + - .kernel + - .repo + +docker-package-dependencies: + pkg.installed: + - pkgs: + {%- for pkgname in docker_packages %} + - {{ pkgname }} + {%- endfor %} + {%- if "pip" in docker and "pkgname" in docker.pip %} + - {{ docker.pip.pkgname }} + {%- endif %} + - unless: test "`uname`" = "Darwin" + - refresh: {{ docker.refresh_repo }} + +docker-package: + pkg.installed: + - name: {{ docker_pkg_name }} + - version: {{ docker_pkg_version or 'latest' }} + - refresh: {{ docker.refresh_repo }} + - require: + - pkg: docker-package-dependencies + {%- if grains['os']|lower not in ('amazon', 'fedora', 'suse',) %} + - pkgrepo: docker-package-repository + {%- endif %} + {%- if grains['os']|lower not in ('suse',) %} + - allow_updates: {{ docker.pkg.allow_updates }} + - hold: {{ docker.pkg.hold }} + {%- endif %} + - require_in: + - file: docker-config + {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 + cmd.run: + - name: /usr/bin/pip install {{ '--upgrade' if docker.pip.upgrade else '' }} pip + {%- else %} + pip.installed: + - name: pip + - reload_modules: true + - upgrade: {{ docker.pip.upgrade }} + {%- endif %} + - onlyif: {{ docker.pip.install_pypi_pip }} #### onlyif you really need pypi pip instead of using official distro pip. + - require: + - pkg: docker-package-dependencies + +docker-config: + file.managed: + - name: {{ docker.configfile }} + - source: salt://docker/files/config + - template: jinja + - mode: 644 + - user: root + + {% if docker.daemon_config %} +docker-daemon-dir: + file.directory: + - name: /etc/docker + - user: root + - group: root + - mode: 755 + +docker-daemon-config: + file.serialize: + - name: /etc/docker/daemon.json + - user: root + - group: root + - mode: 644 + - dataset: + {{ docker.daemon_config | yaml() | indent(8) }} + - formatter: json + {% endif %} + +docker-service: + service.running: + - name: docker + - enable: True + - watch: + - file: docker-config + - pkg: docker-package + {% if docker.daemon_config %} + - file: docker-daemon-config + {% endif %} + {% if "process_signature" in docker %} + - sig: {{ docker.process_signature }} + {% endif %} + +{% if docker.install_docker_py %} +docker-py: + {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 + cmd.run: + - name: /usr/bin/pip install {{ docker.python_package }} + {%- else %} + pip.installed: + {%- if "python_package" in docker %} + - name: {{ docker.python_package }} + {%- elif "pip_version" in docker %} + - name: docker-py {{ docker.pip_version }} + {%- else %} + - name: docker-py + {%- endif %} + - reload_modules: true + {%- if docker.proxy %} + - proxy: {{ docker.proxy }} + {%- endif %} + - require: + - pkg: docker-package-dependencies + {%- endif %} +{% endif %} diff --git a/docker/osfamilymap.yaml b/docker/osfamilymap.yaml index 281c3cd2..33df30a8 100644 --- a/docker/osfamilymap.yaml +++ b/docker/osfamilymap.yaml @@ -1,3 +1,19 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +# +# Setup variables using grains['os_family'] based logic. +# You just need to add the key:values for an `os_family` that differ +# from `defaults.yaml`. +# Only add an `os_family` which is/will be supported by the formula +# +# If you do not need to provide defaults via the `os_family` grain, +# you will need to provide at least an empty dict in this file, e.g. +# osfamilymap: {} +--- +{%- if grains.os == 'MacOS' %} + {% set macos_user = salt['cmd.run']("stat -f '%Su' /dev/console") %} +{%- endif %} + Debian: pkgs: - apt-transport-https @@ -24,3 +40,7 @@ Suse: pkgs: - python3-pip #python 3 is default on OpenSUSE 15.0 +MacOS: + rootuser: {{ macos_user | d('') }} + pkg: + name: docker From 8d61745ac46b5a0a715a193f5fd8d7df7cde5a88 Mon Sep 17 00:00:00 2001 From: N Date: Mon, 8 Jul 2019 23:18:17 -0600 Subject: [PATCH 17/51] feat(macos): docker desktop for mac support --- README.rst | 9 +++ docker/clean.sls | 5 ++ docker/defaults.yaml | 2 + docker/init.sls | 124 +++--------------------------------- docker/install.sls | 117 ++++++++++++++++++++++++++++++++++ docker/macosapp/init.sls | 11 ++++ docker/macosapp/install.sls | 60 +++++++++++++++++ docker/map.jinja | 2 +- docker/osfamilymap.yaml | 28 +++++++- pillar.example | 1 + 10 files changed, 240 insertions(+), 119 deletions(-) create mode 100644 docker/clean.sls create mode 100644 docker/install.sls create mode 100644 docker/macosapp/init.sls create mode 100644 docker/macosapp/install.sls diff --git a/README.rst b/README.rst index d5628f3c..05d73a86 100644 --- a/README.rst +++ b/README.rst @@ -70,11 +70,20 @@ In the example pillar above: - Upstart files are created for each container, so ``service stop|start|status`` should just work - ``service stop`` will wipeout the container completely (ie ``docker stop + docker rm ``) +``docker.clean`` +---------------- + +Stop Docker daemon and remove older docker packages (usually called 'docker' and 'docker-engine'). Linux only. + ``docker.repo`` --------------- Configures the upstream docker's repo (true, by default). +``docker.macosapp`` +------------------- + +Installs Docker Desktop for Mac. ``docker.compose`` ------------------ diff --git a/docker/clean.sls b/docker/clean.sls new file mode 100644 index 00000000..c568b836 --- /dev/null +++ b/docker/clean.sls @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# vim: ft=sls + +include: + - remove diff --git a/docker/defaults.yaml b/docker/defaults.yaml index d7776a45..4f4fdd2a 100644 --- a/docker/defaults.yaml +++ b/docker/defaults.yaml @@ -9,6 +9,7 @@ docker: config: [] daemon_config: {} version: '' + rootuser: root use_upstream_repo: True use_old_repo: False @@ -26,6 +27,7 @@ docker: version: latest allow_updates: False hold: False + use_upstream_app: False #macos pip: install_pypi_pip: False diff --git a/docker/init.sls b/docker/init.sls index 4db571a2..58075a8e 100644 --- a/docker/init.sls +++ b/docker/init.sls @@ -1,119 +1,11 @@ -{% from "docker/map.jinja" import docker with context %} +# -*- coding: utf-8 -*- +# vim: ft=sls -{%- set docker_pkg_name = docker.pkg.old_name if docker.use_old_repo else docker.pkg.name %} -{%- set docker_pkg_version = docker.version | default(docker.pkg.version) %} -{%- set docker_packages = docker.kernel.pkgs + docker.pkgs %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} +{%- set sls_package_install = tplroot ~ '.install' %} +{%- set sls_macapp_install = tplroot ~ '.macosapp' %} include: - - .kernel - - .repo - -docker-package-dependencies: - pkg.installed: - - pkgs: - {%- for pkgname in docker_packages %} - - {{ pkgname }} - {%- endfor %} - {%- if "pip" in docker and "pkgname" in docker.pip %} - - {{ docker.pip.pkgname }} - {%- endif %} - - unless: test "`uname`" = "Darwin" - - refresh: {{ docker.refresh_repo }} - -docker-package: - pkg.installed: - - name: {{ docker_pkg_name }} - - version: {{ docker_pkg_version or 'latest' }} - - refresh: {{ docker.refresh_repo }} - - require: - - pkg: docker-package-dependencies - {%- if grains['os']|lower not in ('amazon', 'fedora', 'suse',) %} - - pkgrepo: docker-package-repository - {%- endif %} - {%- if grains['os']|lower not in ('suse',) %} - - allow_updates: {{ docker.pkg.allow_updates }} - - hold: {{ docker.pkg.hold }} - {%- endif %} - - require_in: - - file: docker-config - {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 - cmd.run: - - name: /usr/bin/pip install {{ '--upgrade' if docker.pip.upgrade else '' }} pip - {%- else %} - pip.installed: - - name: pip - - reload_modules: true - - upgrade: {{ docker.pip.upgrade }} - {%- endif %} - - onlyif: {{ docker.pip.install_pypi_pip }} #### onlyif you really need pypi pip instead of using official distro pip. - - require: - - pkg: docker-package-dependencies - - {%- if grains.os != 'MacOS' %} -docker-config: - file.managed: - - name: {{ docker.configfile }} - - source: salt://docker/files/config - - template: jinja - - mode: 644 - - user: root - - require: - - pkg: docker-package - - watch_in: - - service: docker-service - {%- endif %} - - {% if docker.daemon_config %} -docker-daemon-dir: - file.directory: - - name: /etc/docker - - user: root - - group: root - - mode: 755 - -docker-daemon-config: - file.serialize: - - name: /etc/docker/daemon.json - - user: root - - group: root - - mode: 644 - - dataset: - {{ docker.daemon_config | yaml() | indent(8) }} - - formatter: json - {% endif %} - -docker-service: - service.running: - - name: docker - - enable: True - - watch: - - pkg: docker-package - {% if docker.daemon_config %} - - file: docker-daemon-config - {% endif %} - {% if "process_signature" in docker %} - - sig: {{ docker.process_signature }} - {% endif %} - -{% if docker.install_docker_py %} -docker-py: - {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 - cmd.run: - - name: /usr/bin/pip install {{ docker.python_package }} - {%- else %} - pip.installed: - {%- if "python_package" in docker %} - - name: {{ docker.python_package }} - {%- elif "pip_version" in docker %} - - name: docker-py {{ docker.pip_version }} - {%- else %} - - name: docker-py - {%- endif %} - - reload_modules: true - {%- if docker.proxy %} - - proxy: {{ docker.proxy }} - {%- endif %} - - require: - - pkg: docker-package-dependencies - {%- endif %} -{% endif %} \ No newline at end of file + - {{ sls_package_install if not docker.pkg.use_upstream_app else sls_macapp_install }} diff --git a/docker/install.sls b/docker/install.sls new file mode 100644 index 00000000..038aa973 --- /dev/null +++ b/docker/install.sls @@ -0,0 +1,117 @@ +{% from "docker/map.jinja" import docker with context %} + +{%- set docker_pkg_name = docker.pkg.old_name if docker.use_old_repo else docker.pkg.name %} +{%- set docker_pkg_version = docker.version | default(docker.pkg.version) %} +{%- set docker_packages = docker.kernel.pkgs + docker.pkgs %} + +include: + - .kernel + - .repo + +docker-package-dependencies: + pkg.installed: + - pkgs: + {%- for pkgname in docker_packages %} + - {{ pkgname }} + {%- endfor %} + {%- if "pip" in docker and "pkgname" in docker.pip %} + - {{ docker.pip.pkgname }} + {%- endif %} + - unless: test "`uname`" = "Darwin" + - refresh: {{ docker.refresh_repo }} + +docker-package: + pkg.installed: + - name: {{ docker_pkg_name }} + - version: {{ docker_pkg_version or 'latest' }} + - refresh: {{ docker.refresh_repo }} + - require: + - pkg: docker-package-dependencies + {%- if grains['os']|lower not in ('amazon', 'fedora', 'suse',) %} + - pkgrepo: docker-package-repository + {%- endif %} + {%- if grains['os']|lower not in ('suse',) %} + - allow_updates: {{ docker.pkg.allow_updates }} + - hold: {{ docker.pkg.hold }} + {%- endif %} + {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 + cmd.run: + - name: /usr/bin/pip install {{ '--upgrade' if docker.pip.upgrade else '' }} pip + {%- else %} + pip.installed: + - name: pip + - reload_modules: true + - upgrade: {{ docker.pip.upgrade }} + {%- endif %} + - onlyif: {{ docker.pip.install_pypi_pip }} #### onlyif you really need pypi pip instead of using official distro pip. + - require: + - pkg: docker-package-dependencies + + {%- if grains.os != 'MacOS' %} +docker-config: + file.managed: + - name: {{ docker.configfile }} + - source: salt://docker/files/config + - template: jinja + - mode: 644 + - user: root + - require: + - pkg: docker-package + - watch_in: + - service: docker-service + {%- endif %} + + {% if docker.daemon_config %} +docker-daemon-dir: + file.directory: + - name: /etc/docker + - user: root + - group: root + - mode: 755 + +docker-daemon-config: + file.serialize: + - name: /etc/docker/daemon.json + - user: root + - group: root + - mode: 644 + - dataset: + {{ docker.daemon_config | yaml() | indent(8) }} + - formatter: json + {% endif %} + +docker-service: + service.running: + - name: docker + - enable: True + - watch: + - pkg: docker-package + {% if docker.daemon_config %} + - file: docker-daemon-config + {% endif %} + {% if "process_signature" in docker %} + - sig: {{ docker.process_signature }} + {% endif %} + +{% if docker.install_docker_py %} +docker-py: + {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 + cmd.run: + - name: /usr/bin/pip install {{ docker.python_package }} + {%- else %} + pip.installed: + {%- if "python_package" in docker %} + - name: {{ docker.python_package }} + {%- elif "pip_version" in docker %} + - name: docker-py {{ docker.pip_version }} + {%- else %} + - name: docker-py + {%- endif %} + - reload_modules: true + {%- if docker.proxy %} + - proxy: {{ docker.proxy }} + {%- endif %} + - require: + - pkg: docker-package-dependencies + {%- endif %} +{% endif %} diff --git a/docker/macosapp/init.sls b/docker/macosapp/init.sls new file mode 100644 index 00000000..b16d0683 --- /dev/null +++ b/docker/macosapp/init.sls @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# vim: ft=sls + +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} +{%- set sls_package_install = tplroot ~ '.install' %} +{%- set sls_macapp_install = tplroot ~ '.macosapp.install' %} + +include: + - {{ sls_macapp_install if docker.pkg.use_upstream_app else sls_package_install }} diff --git a/docker/macosapp/install.sls b/docker/macosapp/install.sls new file mode 100644 index 00000000..ce5a5d3d --- /dev/null +++ b/docker/macosapp/install.sls @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# vim: ft=sls + +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import docker with context %} + + {%- if grains.os == 'MacOS' %} + +docker-macos-app-install-file-directory: + file.directory: + - name: /tmp/salt-docker-formula + - makedirs: True + - require_in: + - pkg: docker-macos-app-install-cmd-run + - cmd: docker-macos-app-install-cmd-run + +docker-macos-app-install-cmd-run: + pkg.installed: + - name: curl + cmd.run: + - name: curl -Lo /tmp/salt-docker-formula/{{ docker.pkg.app.name }} {{ docker.pkg.app.source }} + - unless: test -f /tmp/salt-docker-formula/{{ docker.pkg.app.name }} + - retry: + attempts: 3 + interval: 60 + until: True + splay: 10 + + {%- if docker.pkg.app.source_hash %} + +docker-macos-app-install-app-hash-module-run: + module.run: + - name: file.check_hash + - path: /tmp/salt-docker-formula/{{ docker.pkg.app.name }} + - file_hash: {{ docker.pkg.app.source_hash }} + - require: + - cmd: docker-macos-app-install-cmd-run + - require_in: + - macpackage: docker-macos-app-install-macpackage-installed + + {%- endif %} + +docker-macos-app-install-macpackage-installed: + macpackage.installed: + - name: /tmp/salt-docker-formula/{{ docker.pkg.app.name }} + - store: True + - dmg: True + - app: True + - force: True + - allow_untrusted: True + - onchanges: + - cmd: docker-macos-app-install-cmd-run + file.append: + - name: /Users/{{ docker.rootuser }}/.bash_profile + - text: 'export PATH=$PATH:/Applications/Docker.app/Contents/Versions/latest/bin' + - require: + - macpackage: docker-macos-app-install-macpackage-installed + + {%- endif %} diff --git a/docker/map.jinja b/docker/map.jinja index f1f39fa4..fedede00 100644 --- a/docker/map.jinja +++ b/docker/map.jinja @@ -30,7 +30,7 @@ {% import_yaml "docker/osmap.yaml" as osmap %} {% set pkg = salt['pillar.get']('docker-pkg:lookup', default={}, merge=True) %} -{% do defaults.docker.update(pkg) %} +{% do defaults.docker.pkg.update(pkg) %} {% set osfamily = salt['grains.filter_by'](osfamilymap, grain='os_family') or {} %} {% do defaults.docker.update(osfamily) %} diff --git a/docker/osfamilymap.yaml b/docker/osfamilymap.yaml index 58336ee7..0b2651d0 100644 --- a/docker/osfamilymap.yaml +++ b/docker/osfamilymap.yaml @@ -1,3 +1,19 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +# +# Setup variables using grains['os_family'] based logic. +# You just need to add the key:values for an `os_family` that differ +# from `defaults.yaml`. +# Only add an `os_family` which is/will be supported by the formula +# +# If you do not need to provide defaults via the `os_family` grain, +# you will need to provide at least an empty dict in this file, e.g. +# osfamilymap: {} +--- +{%- if grains.os == 'MacOS' %} + {% set macos_user = salt['cmd.run']("stat -f '%Su' /dev/console") %} +{%- endif %} + Debian: pkgs: - apt-transport-https @@ -22,8 +38,16 @@ Suse: pkg: name: docker pkgs: - - python3-pip #python 3 is default on OpenSUSE 15.0 + - python3-pip MacOS: + rootuser: {{ macos_user | d('') }} pkg: - name: docker + name: docker #homebrew + allow_updates: False + hold: False + use_upstream_app: True #docker desktop for mac + app: + name: Docker + source: https://download.docker.com/mac/stable/Docker.dmg + source_hash: a55462f153284ff212f8857945a69d4e128afb6753f5572984877f7b6fc3fc25 diff --git a/pillar.example b/pillar.example index cc778f21..683e3e92 100644 --- a/pillar.example +++ b/pillar.example @@ -75,6 +75,7 @@ docker: # Package handling #version: 1.13.1 #allow_updates: True + use_upstream_app: False # PIP proxy configuration (defaults to False) # proxy: proxy.com:3128 From e0cccf43aa8e4385f6280769d7628172255ba6dc Mon Sep 17 00:00:00 2001 From: N Date: Mon, 8 Jul 2019 23:20:43 -0600 Subject: [PATCH 18/51] doc(clean): make remove alias for clean --- README.rst | 4 ++++ docker/clean.sls | 55 +++++++++++++++++++++++++++++++++++++++++++++-- docker/remove.sls | 55 ++--------------------------------------------- 3 files changed, 59 insertions(+), 55 deletions(-) diff --git a/README.rst b/README.rst index 05d73a86..84321fd2 100644 --- a/README.rst +++ b/README.rst @@ -73,7 +73,11 @@ In the example pillar above: ``docker.clean`` ---------------- +<<<<<<< HEAD Stop Docker daemon and remove older docker packages (usually called 'docker' and 'docker-engine'). Linux only. +======= +Stop Docker daemon. Remove older docker packages (usually called 'docker' and 'docker-engine'). +>>>>>>> b0ce436... doc(clean): make remove alias for clean ``docker.repo`` --------------- diff --git a/docker/clean.sls b/docker/clean.sls index c568b836..8da519f8 100644 --- a/docker/clean.sls +++ b/docker/clean.sls @@ -1,5 +1,56 @@ # -*- coding: utf-8 -*- # vim: ft=sls +{% from "docker/map.jinja" import docker with context %} -include: - - remove +docker-packages-cleaned-service-dead: + service.dead: + - name: docker + {% if "process_signature" in docker %} + - sig: {{ docker.process_signature }} + - onlyif: ps -ef | grep "{{ docker.process_signature }}" ##stop stderr from sig + {% endif %} + - require_in: + - pkg: docker-packages-cleaned + +docker-packages-cleaned: + pkg.removed: + - pkgs: + - {{ docker.pkg.old_name if docker.use_old_repo else docker.pkg.name }} + - docker + - docker.io + - docker-client + - docker-client-latest + - docker-common + - docker-latest + - docker-latest-logrotate + - docker-logrotate + - docker-selinux + - docker-engine-selinux + - docker-engine + {%- for pkgname in docker.pkgs %} + - {{ pkgname }} + {%- endfor %} + +{# remove pip packages installed by formula #} + +docker-pips-removed: + pip.removed: + - onlyif: python -m pip --version >/dev/null 2>&1 + - names: + {% if docker.compose_version -%} + - docker-compose == {{ docker.compose_version }} + {% else -%} + - docker-compose + {% endif -%} + {% if docker.install_docker_py -%} + {% if "python_package" in docker -%} + - {{ docker.python_package }} + {% elif "pip_version" in docker -%} + - docker-py {{ docker.pip_version }} + {% else -%} + - docker-py + {%- endif -%} + {% endif %} + {%- if docker.proxy %} + - proxy: {{ docker.proxy }} + {%- endif %} diff --git a/docker/remove.sls b/docker/remove.sls index 8bd08f03..754c5e38 100644 --- a/docker/remove.sls +++ b/docker/remove.sls @@ -1,54 +1,3 @@ -{% from "docker/map.jinja" import docker with context %} -docker-packages-cleaned-service-dead: - service.dead: - - name: docker - {% if "process_signature" in docker %} - - sig: {{ docker.process_signature }} - - onlyif: ps -ef | grep "{{ docker.process_signature }}" ##stop stderr from sig - {% endif %} - - require_in: - - pkg: docker-packages-cleaned - -docker-packages-cleaned: - pkg.removed: - - pkgs: - - {{ docker.pkg.old_name if docker.use_old_repo else docker.pkg.name }} - - docker - - docker.io - - docker-client - - docker-client-latest - - docker-common - - docker-latest - - docker-latest-logrotate - - docker-logrotate - - docker-selinux - - docker-engine-selinux - - docker-engine - {%- for pkgname in docker.pkgs %} - - {{ pkgname }} - {%- endfor %} - -{# remove pip packages installed by formula #} - -docker-pips-removed: - pip.removed: - - onlyif: python -m pip --version >/dev/null 2>&1 - - names: - {% if docker.compose_version -%} - - docker-compose == {{ docker.compose_version }} - {% else -%} - - docker-compose - {% endif -%} - {% if docker.install_docker_py -%} - {% if "python_package" in docker -%} - - {{ docker.python_package }} - {% elif "pip_version" in docker -%} - - docker-py {{ docker.pip_version }} - {% else -%} - - docker-py - {%- endif -%} - {% endif %} - {%- if docker.proxy %} - - proxy: {{ docker.proxy }} - {%- endif %} +include: + - clean From 1ac9968aee1b8d248f7d1c6d51089c4757605b04 Mon Sep 17 00:00:00 2001 From: N Date: Mon, 8 Jul 2019 23:22:46 -0600 Subject: [PATCH 19/51] chore(template): align osmap with template-formula --- docker/install.sls | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/install.sls b/docker/install.sls index 038aa973..87c8f30b 100644 --- a/docker/install.sls +++ b/docker/install.sls @@ -85,6 +85,7 @@ docker-service: - name: docker - enable: True - watch: + - file: docker-config - pkg: docker-package {% if docker.daemon_config %} - file: docker-daemon-config From f60c1c73dc6df5f3692bf9716f684dc47bbd55cb Mon Sep 17 00:00:00 2001 From: N Date: Mon, 8 Jul 2019 23:14:16 -0600 Subject: [PATCH 20/51] feat(macos): docker desktop for mac support --- README.rst | 9 ++++---- docker/install.sls | 1 - docker/remove.sls | 55 ++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 58 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index 84321fd2..b58ea693 100644 --- a/README.rst +++ b/README.rst @@ -73,11 +73,7 @@ In the example pillar above: ``docker.clean`` ---------------- -<<<<<<< HEAD Stop Docker daemon and remove older docker packages (usually called 'docker' and 'docker-engine'). Linux only. -======= -Stop Docker daemon. Remove older docker packages (usually called 'docker' and 'docker-engine'). ->>>>>>> b0ce436... doc(clean): make remove alias for clean ``docker.repo`` --------------- @@ -89,6 +85,11 @@ Configures the upstream docker's repo (true, by default). Installs Docker Desktop for Mac. +``docker.macosapp`` +------------------- + +Installs Docker Desktop for Mac. + ``docker.compose`` ------------------ diff --git a/docker/install.sls b/docker/install.sls index 87c8f30b..038aa973 100644 --- a/docker/install.sls +++ b/docker/install.sls @@ -85,7 +85,6 @@ docker-service: - name: docker - enable: True - watch: - - file: docker-config - pkg: docker-package {% if docker.daemon_config %} - file: docker-daemon-config diff --git a/docker/remove.sls b/docker/remove.sls index 754c5e38..8bd08f03 100644 --- a/docker/remove.sls +++ b/docker/remove.sls @@ -1,3 +1,54 @@ +{% from "docker/map.jinja" import docker with context %} -include: - - clean +docker-packages-cleaned-service-dead: + service.dead: + - name: docker + {% if "process_signature" in docker %} + - sig: {{ docker.process_signature }} + - onlyif: ps -ef | grep "{{ docker.process_signature }}" ##stop stderr from sig + {% endif %} + - require_in: + - pkg: docker-packages-cleaned + +docker-packages-cleaned: + pkg.removed: + - pkgs: + - {{ docker.pkg.old_name if docker.use_old_repo else docker.pkg.name }} + - docker + - docker.io + - docker-client + - docker-client-latest + - docker-common + - docker-latest + - docker-latest-logrotate + - docker-logrotate + - docker-selinux + - docker-engine-selinux + - docker-engine + {%- for pkgname in docker.pkgs %} + - {{ pkgname }} + {%- endfor %} + +{# remove pip packages installed by formula #} + +docker-pips-removed: + pip.removed: + - onlyif: python -m pip --version >/dev/null 2>&1 + - names: + {% if docker.compose_version -%} + - docker-compose == {{ docker.compose_version }} + {% else -%} + - docker-compose + {% endif -%} + {% if docker.install_docker_py -%} + {% if "python_package" in docker -%} + - {{ docker.python_package }} + {% elif "pip_version" in docker -%} + - docker-py {{ docker.pip_version }} + {% else -%} + - docker-py + {%- endif -%} + {% endif %} + {%- if docker.proxy %} + - proxy: {{ docker.proxy }} + {%- endif %} From 5baf6d2da44c34f28e6dbff8b112bd4e3215ac34 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Wed, 17 Jul 2019 08:40:56 +0200 Subject: [PATCH 21/51] pillar.example registry-mirrors --- pillar.example | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pillar.example b/pillar.example index cc778f21..7736fe80 100644 --- a/pillar.example +++ b/pillar.example @@ -66,7 +66,8 @@ docker: #daemon_config: # metrics-addr: '0.0.0.0:9323' # experimental: true - # registry-mirror: 'https://proxy-docker.local:5000' + # registry-mirrors: + # - 'https://proxy-docker.local:5000' # live-restore: true # insecure-registries: # - harbor.local From 145967c2d75e5a4d830b029419876172b371f7c6 Mon Sep 17 00:00:00 2001 From: N Date: Mon, 22 Jul 2019 23:29:56 +0100 Subject: [PATCH 22/51] fix(install): resolve #224 --- docker/install.sls | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/install.sls b/docker/install.sls index 038aa973..51d98bf7 100644 --- a/docker/install.sls +++ b/docker/install.sls @@ -55,6 +55,8 @@ docker-config: - template: jinja - mode: 644 - user: root + - context: + config: {{ docker.config | json }} - require: - pkg: docker-package - watch_in: From 00353cf247ea5fa771b28f7383112976cd05f511 Mon Sep 17 00:00:00 2001 From: N Date: Mon, 22 Jul 2019 23:34:21 +0100 Subject: [PATCH 23/51] refactor(init): remove duplicated jinja --- docker/init.sls | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docker/init.sls b/docker/init.sls index 50e782d8..e32220e2 100644 --- a/docker/init.sls +++ b/docker/init.sls @@ -1,9 +1,5 @@ # -*- coding: utf-8 -*- # vim: ft=sls -{#- Get the `tplroot` from `tpldir` #} -{%- set tplroot = tpldir.split('/')[0] %} -{%- from tplroot ~ "/map.jinja" import docker with context %} - {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {%- from tplroot ~ "/map.jinja" import docker with context %} @@ -11,4 +7,4 @@ {%- set sls_macapp_install = tplroot ~ '.macosapp' %} include: - - {{ sls_package_install if not docker.pkg.use_upstream_app else sls_macapp_install }} \ No newline at end of file + - {{ sls_package_install if not docker.pkg.use_upstream_app else sls_macapp_install }} From 2bbed5cb1eb96b8fe4f9c14ec8d0ad2941343bcf Mon Sep 17 00:00:00 2001 From: N Date: Mon, 22 Jul 2019 23:36:19 +0100 Subject: [PATCH 24/51] Update docker/install.sls Co-Authored-By: Imran Iqbal --- docker/install.sls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/install.sls b/docker/install.sls index 51d98bf7..e01a8bd1 100644 --- a/docker/install.sls +++ b/docker/install.sls @@ -56,7 +56,7 @@ docker-config: - mode: 644 - user: root - context: - config: {{ docker.config | json }} + config: {{ docker.config | json }} - require: - pkg: docker-package - watch_in: From 71ee3c4c62a6ab4e3d9fb43fd291cfc227329444 Mon Sep 17 00:00:00 2001 From: N Date: Sat, 17 Aug 2019 09:53:20 +0200 Subject: [PATCH 25/51] feat(linux): archlinux support (#229) --- docker/compose.sls | 2 +- docker/defaults.yaml | 1 - docker/install.sls | 23 +++++++++++++++++++---- docker/osfamilymap.yaml | 26 ++++++++++++++++++++++++-- 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/docker/compose.sls b/docker/compose.sls index c9bda46e..4f173c19 100644 --- a/docker/compose.sls +++ b/docker/compose.sls @@ -11,7 +11,7 @@ docker-compose: - name: /usr/bin/pip install docker-compose {%- else %} pip.installed: - {%- if docker.compose_version %} + {%- if 'compose_version' in docker and docker.compose_version %} - name: docker-compose == {{ docker.compose_version }} {%- else %} - name: docker-compose diff --git a/docker/defaults.yaml b/docker/defaults.yaml index ab3e1db9..09736788 100644 --- a/docker/defaults.yaml +++ b/docker/defaults.yaml @@ -18,7 +18,6 @@ docker: pkgs: - iptables - ca-certificates - - python3-docker pkg: name: docker-ce diff --git a/docker/install.sls b/docker/install.sls index e01a8bd1..6590a41b 100644 --- a/docker/install.sls +++ b/docker/install.sls @@ -37,13 +37,12 @@ docker-package: {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 cmd.run: - name: /usr/bin/pip install {{ '--upgrade' if docker.pip.upgrade else '' }} pip - {%- else %} + {%- elif docker.pip.install_pypi_pip %} ##onlyif you really need pypi pip instead of using official distro pip pip.installed: - name: pip - reload_modules: true - upgrade: {{ docker.pip.upgrade }} {%- endif %} - - onlyif: {{ docker.pip.install_pypi_pip }} #### onlyif you really need pypi pip instead of using official distro pip. - require: - pkg: docker-package-dependencies @@ -95,6 +94,22 @@ docker-service: - sig: {{ docker.process_signature }} {% endif %} +docker-install-docker-service-not-running-notify: + test.show_notification: + - text: | + In certain circumstances the docker service will not start. + Your kernel is missing some modules, or not in ideal state. + See https://github.com/moby/moby/blob/master/contrib/check-config.sh + Rebooting your host may fix docker service failure! + - onfail: + - service: docker-service + - unless: {{ grains.os_family in ('MacOS', 'Windows') }} #maybe not needed? + service.enabled: + - name: docker + - onfail: + - service: docker-service + - unless: {{ grains.os_family in ('MacOS', 'Windows') }} #maybe not needed? + {% if docker.install_docker_py %} docker-py: {%- if grains.os_family in ('Suse',) %} ##workaround https://github.com/saltstack-formulas/docker-formula/issues/198 @@ -102,9 +117,9 @@ docker-py: - name: /usr/bin/pip install {{ docker.python_package }} {%- else %} pip.installed: - {%- if "python_package" in docker %} + {%- if "python_package" in docker and docker.python_package %} - name: {{ docker.python_package }} - {%- elif "pip_version" in docker %} + {%- elif "pip_version" in docker and docker.pip_version %} - name: docker-py {{ docker.pip_version }} {%- else %} - name: docker-py diff --git a/docker/osfamilymap.yaml b/docker/osfamilymap.yaml index ca6f350d..53a4c95c 100644 --- a/docker/osfamilymap.yaml +++ b/docker/osfamilymap.yaml @@ -14,11 +14,28 @@ {% set macos_user = salt['cmd.run']("stat -f '%Su' /dev/console") %} {%- endif %} +Arch: + python_package: + pkgs: + - python-docker + - python-pip + - python2-pip ##see https://github.com/saltstack/salt/issues/48632 + pkg: + name: docker + # workaround https://github.com/saltstack-formulas/docker-formula/issues/219 + allow_updates: False + hold: False + use_upstream_app: False + pip: + install_pypi_pip: False + upgrade: False + Debian: pkgs: - apt-transport-https - python3-apt - python3-pip + - python3-docker repo: url_base: https://download.docker.com/linux/{{ grains['os'] |lower }} key_url: https://download.docker.com/linux/{{ grains['os'] |lower }}/gpg @@ -28,8 +45,9 @@ Debian: RedHat: pkgs: - python3-pip + - python3-docker repo: - url_base: https://download.docker.com/linux/{{ grains['os'] |lower }}/{{ grains['osmajorrelease'] }}/$basearch/stable/ + url_base: https://download.docker.com/linux/{{ grains['os'] |lower }}/{{ '' if not 'osmajorrelease' in grains else grains['osmajorrelease'] }}/$basearch/stable/ key_url: https://download.docker.com/linux/{{ grains['os'] |lower }}/gpg version: {{ grains['oscodename']|lower if 'oscodename' in grains else '' }} file: /etc/yum.repos.d/docker-ce.repo @@ -39,15 +57,19 @@ Suse: name: docker pkgs: - python3-pip + - python3-docker MacOS: rootuser: {{ macos_user | d('') }} + pkgs: + - python3-docker pkg: name: docker #homebrew + # workaround https://github.com/saltstack-formulas/docker-formula/issues/219 allow_updates: False hold: False use_upstream_app: True #docker desktop for mac app: name: Docker source: https://download.docker.com/mac/stable/Docker.dmg - source_hash: a55462f153284ff212f8857945a69d4e128afb6753f5572984877f7b6fc3fc25 \ No newline at end of file + source_hash: a55462f153284ff212f8857945a69d4e128afb6753f5572984877f7b6fc3fc25 From ea6be1125ee166b42a7edaa73cf82c902de42af9 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 16 Oct 2019 20:17:11 +0100 Subject: [PATCH 26/51] feat(semantic-release): implement for this formula * Semi-automated using https://github.com/myii/ssf-formula/pull/78 * Fix (or ignore) `yamllint` errors: ```bash docker-formula$ yamllint -s . ./pillar.example 5:1 warning missing document start "---" (document-start) 10:8 warning missing starting space in comment (comments) 12:11 error empty value in block mapping (empty-values) 13:89 error line too long (92 > 88 characters) (line-length) 14:26 warning truthy value should be one of [false, true] (truthy) 28:1 error trailing spaces (trailing-spaces) 32:11 error empty value in block mapping (empty-values) 36:89 error line too long (92 > 88 characters) (line-length) 37:26 warning truthy value should be one of [false, true] (truthy) 58:4 warning missing starting space in comment (comments) 59:4 warning missing starting space in comment (comments) 61:4 warning missing starting space in comment (comments) 62:4 warning missing starting space in comment (comments) 63:21 warning truthy value should be one of [false, true] (truthy) 64:1 error trailing spaces (trailing-spaces) 65:89 error line too long (93 > 88 characters) (line-length) 66:4 warning missing starting space in comment (comments) 76:3 warning comment not indented like content (comments-indentation) 77:6 warning missing starting space in comment (comments) 78:6 warning missing starting space in comment (comments) 79:23 warning truthy value should be one of [false, true] (truthy) 87:20 warning truthy value should be one of [false, true] (truthy) 88:20 warning truthy value should be one of [false, true] (truthy) 92:12 warning truthy value should be one of [false, true] (truthy) 111:8 warning missing starting space in comment (comments) 119:4 error syntax error: expected , but found '' 120:8 warning missing starting space in comment (comments) 121:7 error wrong indentation: expected 5 but found 6 (indentation) 132:8 warning missing starting space in comment (comments) 145:2 warning missing starting space in comment (comments) 147:5 warning comment not indented like content (comments-indentation) 148:6 warning missing starting space in comment (comments) 149:6 warning missing starting space in comment (comments) 150:6 warning missing starting space in comment (comments) 154:6 warning missing starting space in comment (comments) 155:6 warning missing starting space in comment (comments) 157:2 warning missing starting space in comment (comments) 159:6 warning comment not indented like content (comments-indentation) 169:6 warning comment not indented like content (comments-indentation) 174:1 error too many blank lines (1 > 0) (empty-lines) ./docker/defaults.yaml 3:1 warning missing document start "---" (document-start) 5:22 warning truthy value should be one of [false, true] (truthy) 7:17 warning truthy value should be one of [false, true] (truthy) 14:22 warning truthy value should be one of [false, true] (truthy) 15:17 warning truthy value should be one of [false, true] (truthy) 16:10 warning truthy value should be one of [false, true] (truthy) 27:20 warning truthy value should be one of [false, true] (truthy) 28:11 warning truthy value should be one of [false, true] (truthy) 29:23 warning truthy value should be one of [false, true] (truthy) 29:35 warning missing starting space in comment (comments) 32:23 warning truthy value should be one of [false, true] (truthy) 33:14 warning truthy value should be one of [false, true] (truthy) 39:20 warning truthy value should be one of [false, true] (truthy) 40:20 warning truthy value should be one of [false, true] (truthy) 46:1 error too many blank lines (1 > 0) (empty-lines) ./docker/osfamilymap.yaml 13:2 error syntax error: found character '%' that cannot start any token 50:89 error line too long (164 > 88 characters) (line-length) ./docker/codenamemap.yaml 3:1 warning missing document start "---" (document-start) 36:1 error too many blank lines (1 > 0) (empty-lines) ./docker/osmap.yaml 1:1 error too many blank lines (1 > 0) (empty-lines) 2:1 warning missing document start "---" (document-start) (saltstack) imran@E6530:~/Salt/formulas/docker-formula$ yamllint -s . ./docker/osfamilymap.yaml 13:2 error syntax error: found character '%' that cannot start any token 51:89 error line too long (164 > 88 characters) (line-length) ``` --- .gitignore | 113 ++++++++++++++- .kitchen.yml | 78 ---------- .rubocop.yml | 10 ++ .salt-lint | 15 ++ .travis.yml | 110 +++++++++++++-- .yamllint | 37 +++++ FORMULA | 9 ++ Gemfile | 10 +- Gemfile.lock | 41 ------ bin/kitchen | 32 +++++ commitlint.config.js | 3 + docker/codenamemap.yaml | 6 +- docker/defaults.yaml | 30 ++-- docker/osfamilymap.yaml | 21 +-- docker/osmap.yaml | 6 +- kitchen.yml | 212 ++++++++++++++++++++++++++++ pillar.example | 97 +++++++------ pre-commit_semantic-release.sh | 30 ++++ release-rules.js | 18 +++ release.config.js | 106 ++++++++++++++ test/integration/default/README.md | 50 +++++++ test/integration/default/inspec.yml | 18 +++ 22 files changed, 832 insertions(+), 220 deletions(-) delete mode 100644 .kitchen.yml create mode 100644 .rubocop.yml create mode 100644 .salt-lint create mode 100644 .yamllint create mode 100644 FORMULA delete mode 100644 Gemfile.lock create mode 100755 bin/kitchen create mode 100644 commitlint.config.js create mode 100644 kitchen.yml create mode 100755 pre-commit_semantic-release.sh create mode 100644 release-rules.js create mode 100644 release.config.js create mode 100644 test/integration/default/README.md create mode 100644 test/integration/default/inspec.yml diff --git a/.gitignore b/.gitignore index debd739e..0bbb03cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,40 @@ -.kitchen/ -.ruby-version -junit*.xml - # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a packager +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + # Unit test / coverage reports htmlcov/ .tox/ @@ -15,5 +43,80 @@ htmlcov/ .cache nosetests.xml coverage.xml -*,cover +*.cover .hypothesis/ +.kitchen +.kitchen.local.yml +kitchen.local.yml +junit-*.xml + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# Bundler +Gemfile.lock + +# copied `.md` files used for conversion to `.rst` using `m2r` +docs/*.md + +# Vim +*.sw? + +## Collected when centralising formulas (check and sort) +# `collectd-formula` +.pytest_cache/ +/.idea/ +Dockerfile.*_* +ignore/ +tmp/ diff --git a/.kitchen.yml b/.kitchen.yml deleted file mode 100644 index 99e01e87..00000000 --- a/.kitchen.yml +++ /dev/null @@ -1,78 +0,0 @@ ---- -driver: - name: docker - use_sudo: false - privileged: true - -provisioner: - name: salt_solo - log_level: warning - require_chef: false - formula: docker - state_top: - base: - '*': - - docker.remove - - docker - pillars: - top.sls: - base: - '*': - - docker - -platforms: - - name: ubuntu-18.04 - driver_config: - provision_command: - - apt-get update && apt-get install -y locales ifupdown - - locale-gen en_US.UTF-8 - - update-locale LANG=en_US.UTF-8 - - mkdir -p /run/sshd - run_command: /lib/systemd/systemd - - name: debian-stretch - driver_config: - provision_command: - - apt-get update && apt-get install -y locales ifupdown - - locale-gen en_US.UTF-8 - run_command: /lib/systemd/systemd - - name: debian-jessie - driver_config: - provision_command: - - apt-get update && apt-get install -y locales ifupdown - - locale-gen en_US.UTF-8 - run_command: /lib/systemd/systemd -# - name: centos-7 -# driver_config: -# run_command: /lib/systemd/systemd - -suites: - - name: default - provisioner: - pillars: - docker.sls: - docker: - use_upstream_repo: true - - name: version-1.13.1 - provisioner: - pillars: - docker.sls: - docker: - version: '1.13.1*' - use_old_repo: true - excludes: - - ubuntu-18.04 - - name: version-18 - provisioner: - pillars: - docker.sls: - docker: - version: '18.*' - use_old_repo: true - excludes: - - debian-stretch - - debian-jessie - -verifier: - name: shell - remote_exec: false - command: testinfra -vvv --connection=docker --hosts=root@$KITCHEN_CONTAINER_ID --junit-xml junit-$KITCHEN_INSTANCE.xml test/integration/$KITCHEN_SUITE diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 00000000..bdae9aa9 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +# General overrides used across formulas in the org +Metrics/LineLength: + # Increase from default of `80` + # Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`) + Max: 88 + +# Any offenses that should be fixed, e.g. collected via. `rubocop --auto-gen-config` diff --git a/.salt-lint b/.salt-lint new file mode 100644 index 00000000..ba79fa78 --- /dev/null +++ b/.salt-lint @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +exclude_paths: + # Violation: [204] Lines should be no longer that 160 chars + - docker/repo.sls +skip_list: + # Using `salt-lint` for linting other files as well, such as Jinja macros/templates + - 205 # Use ".sls" as a Salt State file extension + # Skipping `207` and `208` because `210` is sufficient, at least for the time-being + # I.e. Allows 3-digit unquoted codes to still be used, such as `644` and `755` + - 207 # File modes should always be encapsulated in quotation marks + - 208 # File modes should always contain a leading zero +tags: [] +verbosity: 1 diff --git a/.travis.yml b/.travis.yml index afd913a7..148c14a6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,22 +1,104 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +## Machine config +dist: bionic sudo: required +services: + - docker +## Language and cache config +language: ruby +cache: bundler -language: python +## Script to run for the test stage +script: + - bin/kitchen verify "${INSTANCE}" -services: - - docker +## Stages and jobs matrix +stages: + - test + - name: release + if: branch = master AND type != pull_request +jobs: + include: + ## Define the test stage that runs the linters (and testing matrix, if applicable) -before_install: - - bundle install + # Run all of the linters in a single job + - language: node_js + node_js: lts/* + env: Lint + name: 'Lint: salt-lint, yamllint, rubocop & commitlint' + before_install: skip + script: + # Install and run `salt-lint` + - pip install --user salt-lint + - git ls-files | grep '\.sls$\|\.jinja$\|\.j2$\|\.tmpl$' + | xargs -I {} salt-lint {} + # Install and run `yamllint` + # Need at least `v1.17.0` for the `yaml-files` setting + - pip install --user yamllint>=1.17.0 + - yamllint -s . + # Install and run `rubocop` + - gem install rubocop + - rubocop -d + # Install and run `commitlint` + - npm install @commitlint/config-conventional -D + - npm install @commitlint/travis-cli -D + - commitlint-travis + ## Define the rest of the matrix based on Kitchen testing + # Make sure the instances listed below match up with + # the `platforms` defined in `kitchen.yml` + - env: INSTANCE=default-debian-10-develop-py3 + # - env: INSTANCE=default-ubuntu-1804-develop-py3 + # - env: INSTANCE=default-centos-7-develop-py3 + # - env: INSTANCE=default-fedora-30-develop-py3 + # - env: INSTANCE=default-opensuse-leap-15-develop-py3 + # - env: INSTANCE=default-amazonlinux-2-develop-py2 + # - env: INSTANCE=default-arch-base-latest-develop-py2 + - env: INSTANCE=default-debian-9-2019-2-py3 + - env: INSTANCE=default-ubuntu-1804-2019-2-py3 + # - env: INSTANCE=default-centos-7-2019-2-py3 + # - env: INSTANCE=default-fedora-30-2019-2-py3 + # - env: INSTANCE=default-opensuse-leap-15-2019-2-py3 + # - env: INSTANCE=default-amazonlinux-2-2019-2-py2 + - env: INSTANCE=default-arch-base-latest-2019-2-py2 + - env: INSTANCE=default-debian-9-2018-3-py2 + # - env: INSTANCE=default-ubuntu-1604-2018-3-py2 + # - env: INSTANCE=default-centos-7-2018-3-py2 + # - env: INSTANCE=default-fedora-29-2018-3-py2 + # - env: INSTANCE=default-opensuse-leap-15-2018-3-py2 + # - env: INSTANCE=default-amazonlinux-2-2018-3-py2 + # - env: INSTANCE=default-arch-base-latest-2018-3-py2 + # - env: INSTANCE=default-debian-8-2017-7-py2 + - env: INSTANCE=default-ubuntu-1604-2017-7-py2 + # - env: INSTANCE=default-centos-6-2017-7-py2 + # - env: INSTANCE=default-fedora-29-2017-7-py2 + # - env: INSTANCE=default-opensuse-leap-15-2017-7-py2 + # - env: INSTANCE=default-amazonlinux-2-2017-7-py2 + # - env: INSTANCE=default-arch-base-latest-2017-7-py2 -env: - matrix: - - INSTANCE: default-ubuntu-1804 - - INSTANCE: default-debian-jessie - - INSTANCE: default-debian-stretch - - INSTANCE: version-1131-debian-jessie - - INSTANCE: version-1131-debian-stretch + ## Define the release stage that runs `semantic-release` + - stage: release + language: node_js + node_js: lts/* + env: Release + name: 'Run semantic-release inc. file updates to AUTHORS, CHANGELOG & FORMULA' + before_install: skip + script: + # Update `AUTHORS.md` + - export MAINTAINER_TOKEN=${GH_TOKEN} + - go get github.com/myii/maintainer + - maintainer contributor -script: - - bundle exec kitchen verify ${INSTANCE} + # Install all dependencies required for `semantic-release` + - npm install @semantic-release/changelog@3 -D + - npm install @semantic-release/exec@3 -D + - npm install @semantic-release/git@7 -D + deploy: + provider: script + skip_cleanup: true + script: + # Run `semantic-release` + - npx semantic-release@15 diff --git a/.yamllint b/.yamllint new file mode 100644 index 00000000..358570e0 --- /dev/null +++ b/.yamllint @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +# Extend the `default` configuration provided by `yamllint` +extends: default + +# Files to ignore completely +# 1. All YAML files under directory `node_modules/`, introduced during the Travis run +# 2. Any SLS files under directory `test/`, which are actually state files +# 3. Any YAML files under directory `.kitchen/`, introduced during local testing +ignore: | + node_modules/ + test/**/states/**/*.sls + .kitchen/ + docker/osfamilymap.yaml + +yaml-files: + # Default settings + - '*.yaml' + - '*.yml' + - .salt-lint + - .yamllint + # SaltStack Formulas additional settings + - '*.example' + - test/**/*.sls + +rules: + empty-values: + forbid-in-block-mappings: true + forbid-in-flow-mappings: true + line-length: + # Increase from default of `80` + # Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`) + max: 88 + octal-values: + forbid-implicit-octal: true + forbid-explicit-octal: true diff --git a/FORMULA b/FORMULA new file mode 100644 index 00000000..8965b23c --- /dev/null +++ b/FORMULA @@ -0,0 +1,9 @@ +name: docker +os: Debian, Ubuntu, Raspbian, RedHat, Fedora, CentOS, Suse, openSUSE, Gentoo, Funtoo, Arch, Manjaro, Alpine, FreeBSD, OpenBSD, Solaris, SmartOS, Windows, MacOS +os_family: Debian, RedHat, Suse, Gentoo, Arch, Alpine, FreeBSD, OpenBSD, Solaris, Windows, MacOS +version: 0.41.0 +release: 1 +minimum_version: 2017.7 +summary: docker formula +description: Formula for working with Docker +top_level_dir: docker diff --git a/Gemfile b/Gemfile index 1947ff45..5a232b61 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,7 @@ -source "https://rubygems.org" +# frozen_string_literal: true -gem "test-kitchen" -gem "kitchen-docker" -gem "kitchen-salt" +source 'https://rubygems.org' + +gem 'kitchen-docker', '>= 2.9' +gem 'kitchen-inspec', '>= 1.1' +gem 'kitchen-salt', '>= 0.6.0' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 384d707b..00000000 --- a/Gemfile.lock +++ /dev/null @@ -1,41 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - artifactory (2.5.0) - kitchen-docker (2.6.0) - test-kitchen (>= 1.0.0) - kitchen-salt (0.0.24) - test-kitchen (~> 1.4) - mixlib-install (2.1.4) - artifactory - mixlib-shellout - mixlib-versioning - thor - mixlib-shellout (2.2.7) - mixlib-versioning (1.1.0) - net-scp (1.2.1) - net-ssh (>= 2.6.5) - net-ssh (3.2.0) - net-ssh-gateway (1.2.0) - net-ssh (>= 2.6.5) - safe_yaml (1.0.4) - test-kitchen (1.13.2) - mixlib-install (>= 1.2, < 3.0) - mixlib-shellout (>= 1.2, < 3.0) - net-scp (~> 1.1) - net-ssh (>= 2.9, < 4.0) - net-ssh-gateway (~> 1.2.0) - safe_yaml (~> 1.0) - thor (~> 0.18) - thor (0.19.1) - -PLATFORMS - ruby - -DEPENDENCIES - kitchen-docker - kitchen-salt - test-kitchen - -BUNDLED WITH - 1.13.6 diff --git a/bin/kitchen b/bin/kitchen new file mode 100755 index 00000000..dcfdb4ca --- /dev/null +++ b/bin/kitchen @@ -0,0 +1,32 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'kitchen' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'pathname' +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path('bundle', __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort( + 'Your `bin/bundle` was not generated by Bundler, '\ + 'so this binstub cannot run. Replace `bin/bundle` by running '\ + '`bundle binstubs bundler --force`, then run this command again.' + ) + end +end + +require 'rubygems' +require 'bundler/setup' + +load Gem.bin_path('test-kitchen', 'kitchen') diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 00000000..2f9d1aa0 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['@commitlint/config-conventional'], +}; diff --git a/docker/codenamemap.yaml b/docker/codenamemap.yaml index 714cf862..0620a7ef 100644 --- a/docker/codenamemap.yaml +++ b/docker/codenamemap.yaml @@ -1,5 +1,6 @@ -# vim: sts=2 ts=2 sw=2 et ai - +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- wheezy: kernel: pkg: @@ -33,4 +34,3 @@ precise: pkgs: - linux-image-generic-lts-raring - linux-headers-generic-lts-raring - diff --git a/docker/defaults.yaml b/docker/defaults.yaml index 09736788..84a9ec3b 100644 --- a/docker/defaults.yaml +++ b/docker/defaults.yaml @@ -1,19 +1,20 @@ -# vim: sts=2 ts=2 sw=2 et ai - +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- docker: process_signature: '/usr/bin/docker' - install_docker_py: True + install_docker_py: true python_package: docker - refresh_repo: True + refresh_repo: true configfile: /etc/default/docker config: [] daemon_config: {} version: '' rootuser: root - use_upstream_repo: True - use_old_repo: False - proxy: False + use_upstream_repo: true + use_old_repo: false + proxy: false pkgs: - iptables @@ -24,23 +25,22 @@ docker: old_name: docker-engine # For backward compatibility, this will be overriden by docker:version, if defined version: latest - allow_updates: False - hold: False - use_upstream_app: False #macos + allow_updates: false + hold: false + use_upstream_app: false # macos pip: - install_pypi_pip: False - upgrade: False + install_pypi_pip: false + upgrade: false compose_version: '' containers: skip_translate: None - force_present: False - force_running: False + force_present: false + force_running: false kernel: pkg: fromrepo: '' pkgs: [] - diff --git a/docker/osfamilymap.yaml b/docker/osfamilymap.yaml index 53a4c95c..e33b8a48 100644 --- a/docker/osfamilymap.yaml +++ b/docker/osfamilymap.yaml @@ -15,20 +15,20 @@ {%- endif %} Arch: - python_package: + python_package: ~ pkgs: - python-docker - python-pip - - python2-pip ##see https://github.com/saltstack/salt/issues/48632 + - python2-pip # see https://github.com/saltstack/salt/issues/48632 pkg: name: docker # workaround https://github.com/saltstack-formulas/docker-formula/issues/219 - allow_updates: False - hold: False - use_upstream_app: False + allow_updates: false + hold: false + use_upstream_app: false pip: - install_pypi_pip: False - upgrade: False + install_pypi_pip: false + upgrade: false Debian: pkgs: @@ -47,6 +47,7 @@ RedHat: - python3-pip - python3-docker repo: + # yamllint disable-line rule:line-length url_base: https://download.docker.com/linux/{{ grains['os'] |lower }}/{{ '' if not 'osmajorrelease' in grains else grains['osmajorrelease'] }}/$basearch/stable/ key_url: https://download.docker.com/linux/{{ grains['os'] |lower }}/gpg version: {{ grains['oscodename']|lower if 'oscodename' in grains else '' }} @@ -66,9 +67,9 @@ MacOS: pkg: name: docker #homebrew # workaround https://github.com/saltstack-formulas/docker-formula/issues/219 - allow_updates: False - hold: False - use_upstream_app: True #docker desktop for mac + allow_updates: false + hold: false + use_upstream_app: true #docker desktop for mac app: name: Docker source: https://download.docker.com/mac/stable/Docker.dmg diff --git a/docker/osmap.yaml b/docker/osmap.yaml index 4a9e1c1d..b522db41 100644 --- a/docker/osmap.yaml +++ b/docker/osmap.yaml @@ -1,4 +1,6 @@ - +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- CentOS: pkgs: - python2-pip @@ -6,5 +8,3 @@ CentOS: FreeBSD: pkgs: - devel/py-pip - -# vim: ft=sls diff --git a/kitchen.yml b/kitchen.yml new file mode 100644 index 00000000..9444a053 --- /dev/null +++ b/kitchen.yml @@ -0,0 +1,212 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +# For help on this file's format, see https://kitchen.ci/ +driver: + name: docker + use_sudo: false + privileged: true + run_command: /lib/systemd/systemd + +# Make sure the platforms listed below match up with +# the `env.matrix` instances defined in `.travis.yml` +platforms: + ## SALT `develop` + - name: debian-10-develop-py3 + driver: + image: netmanagers/salt-develop-py3:debian-10 + provision_command: + - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com + - sh bootstrap-salt.sh -XdPbfrq -x python3 git develop + - name: ubuntu-1804-develop-py3 + driver: + image: netmanagers/salt-develop-py3:ubuntu-18.04 + provision_command: + - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com + - sh bootstrap-salt.sh -XdPbfrq -x python3 git develop + - name: centos-7-develop-py3 + driver: + image: netmanagers/salt-develop-py3:centos-7 + provision_command: + - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com + - sh bootstrap-salt.sh -XdPbfrq -x python3 git develop + - name: fedora-30-develop-py3 + driver: + image: netmanagers/salt-develop-py3:fedora-30 + provision_command: + - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com + - sh bootstrap-salt.sh -XdPbfrq -x python3 git develop + - name: opensuse-leap-15-develop-py3 + driver: + image: opensuse/leap:15 + provision_command: + # yamllint disable-line rule:line-length + - zypper install -y glibc-locale net-tools net-tools-deprecated python-xml python3-pip + - systemctl enable sshd.service + run_command: /usr/lib/systemd/systemd + provisioner: + salt_bootstrap_options: -XdPfrq -x python3 git develop + salt_install: bootstrap + # Workaround to avoid intermittent failures on `opensuse-leap-15`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 + - name: amazonlinux-2-develop-py2 + driver: + image: netmanagers/salt-develop-py2:amazonlinux-2 + provision_command: + - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com + - sh bootstrap-salt.sh -XdPbfrq -x python2 git develop + - name: arch-base-latest-develop-py2 + driver: + image: netmanagers/salt-develop-py2:arch-base-latest + provision_command: + - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com + - sh bootstrap-salt.sh -XdPbfrq -x python2 git develop + run_command: /usr/lib/systemd/systemd + + ## SALT `2019.2` + - name: debian-9-2019-2-py3 + driver: + image: netmanagers/salt-2019.2-py3:debian-9 + - name: ubuntu-1804-2019-2-py3 + driver: + image: netmanagers/salt-2019.2-py3:ubuntu-18.04 + - name: centos-7-2019-2-py3 + driver: + image: netmanagers/salt-2019.2-py3:centos-7 + - name: fedora-30-2019-2-py3 + driver: + image: netmanagers/salt-2019.2-py3:fedora-30 + - name: opensuse-leap-15-2019-2-py3 + driver: + image: opensuse/leap:15 + provision_command: + # yamllint disable-line rule:line-length + - zypper install -y glibc-locale net-tools net-tools-deprecated python-xml python3-pip + - systemctl enable sshd.service + run_command: /usr/lib/systemd/systemd + provisioner: + salt_bootstrap_options: -XdPfrq -x python3 git 2019.2 + salt_install: bootstrap + # Workaround to avoid intermittent failures on `opensuse-leap-15`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 + - name: amazonlinux-2-2019-2-py2 + driver: + image: netmanagers/salt-2019.2-py2:amazonlinux-2 + - name: arch-base-latest-2019-2-py2 + driver: + image: netmanagers/salt-2019.2-py2:arch-base-latest + run_command: /usr/lib/systemd/systemd + + ## SALT `2018.3` + - name: debian-9-2018-3-py2 + driver: + image: netmanagers/salt-2018.3-py2:debian-9 + - name: ubuntu-1604-2018-3-py2 + driver: + image: netmanagers/salt-2018.3-py2:ubuntu-16.04 + - name: centos-7-2018-3-py2 + driver: + image: netmanagers/salt-2018.3-py2:centos-7 + - name: fedora-29-2018-3-py2 + driver: + image: netmanagers/salt-2018.3-py2:fedora-29 + - name: opensuse-leap-15-2018-3-py2 + driver: + image: opensuse/leap:15 + provision_command: + # yamllint disable-line rule:line-length + - zypper install -y glibc-locale net-tools net-tools-deprecated python-xml python2-pip + - systemctl enable sshd.service + run_command: /usr/lib/systemd/systemd + provisioner: + salt_bootstrap_options: -XdPfrq -x python2 git 2018.3 + salt_install: bootstrap + # Workaround to avoid intermittent failures on `opensuse-leap-15`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 + - name: amazonlinux-2-2018-3-py2 + driver: + image: netmanagers/salt-2018.3-py2:amazonlinux-2 + - name: arch-base-latest-2018-3-py2 + driver: + image: netmanagers/salt-2018.3-py2:arch-base-latest + run_command: /usr/lib/systemd/systemd + + ## SALT `2017.7` + - name: debian-8-2017-7-py2 + driver: + image: netmanagers/salt-2017.7-py2:debian-8 + - name: ubuntu-1604-2017-7-py2 + driver: + image: netmanagers/salt-2017.7-py2:ubuntu-16.04 + - name: centos-6-2017-7-py2 + driver: + image: netmanagers/salt-2017.7-py2:centos-6 + run_command: /sbin/init + - name: fedora-29-2017-7-py2 + driver: + image: netmanagers/salt-2017.7-py2:fedora-29 + - name: opensuse-leap-15-2017-7-py2 + driver: + image: opensuse/leap:15 + provision_command: + # yamllint disable-line rule:line-length + - zypper install -y glibc-locale net-tools net-tools-deprecated python-xml python2-pip + - systemctl enable sshd.service + run_command: /usr/lib/systemd/systemd + provisioner: + salt_bootstrap_options: -XdPfrq -x python2 git 2017.7 + salt_install: bootstrap + # Workaround to avoid intermittent failures on `opensuse-leap-15`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 + - name: amazonlinux-2-2017-7-py2 + driver: + image: netmanagers/salt-2017.7-py2:amazonlinux-2 + - name: arch-base-latest-2017-7-py2 + driver: + image: netmanagers/salt-2017.7-py2:arch-base-latest + run_command: /usr/lib/systemd/systemd + +provisioner: + name: salt_solo + log_level: debug + salt_install: none + require_chef: false + formula: docker + salt_copy_filter: + - .kitchen + - .git + +verifier: + # https://www.inspec.io/ + name: inspec + sudo: true + # cli, documentation, html, progress, json, json-min, json-rspec, junit + reporter: + - cli + +suites: + - name: default + provisioner: + state_top: + base: + '*': + - docker + - docker.containers + pillars: + top.sls: + base: + '*': + - docker + pillars_from_files: + docker.sls: pillar.example + verifier: + inspec_tests: + - path: test/integration/default diff --git a/pillar.example b/pillar.example index 4bd40104..f253e82a 100644 --- a/pillar.example +++ b/pillar.example @@ -1,5 +1,6 @@ -# vi: set ft=yaml: - +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- # example docker registry container # if you want to your own docker registry, use this docker-containers: @@ -7,11 +8,12 @@ docker-containers: # example docker registry container (if you want your own docker registry, use this) registry: - #image: 'docker.io/registry:latest' ##Fedora + # image: 'docker.io/registry:latest' ##Fedora image: "registry:latest" - cmd: - # Pull image on service restart (useful if you override the same tag. example: latest) - pull_before_start: True + cmd: ~ + # Pull image on service restart + # (useful if you override the same tag. example: latest) + pull_before_start: true # Do not force container removal on stop (unless true) remove_on_stop: false runoptions: @@ -25,16 +27,17 @@ docker-containers: - "--rm" stopoptions: - '-t 10' - + prometheus-server: # example Prometheus container using command arguments image: "prom/prometheus:v1.7.1" - cmd: + cmd: ~ args: - '-config.file=/prom-data/prometheus.yml' - '-storage.local.path=/prom-data/data/' - # Pull image on service restart (useful if you override the same tag. example: latest) - pull_before_start: True + # Pull image on service restart + # (useful if you override the same tag. example: latest) + pull_before_start: true # Do not force container removal on stop (unless true) remove_on_stop: false runoptions: @@ -55,15 +58,16 @@ docker-pkg: # Docker compose supported attributes docker: - #install_pypi_pip: True - #install_docker_py: True + # install_pypi_pip: true + # install_docker_py: true # version of docker-compose to install (defaults to latest) - #compose_version: 1.9.0 - #configfile: /etc/default/docker - install_pypi_pip: True - + # compose_version: 1.9.0 + # configfile: /etc/default/docker + install_pypi_pip: true + + # yamllint disable-line rule:line-length ### https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file - #daemon_config: + # daemon_config: # metrics-addr: '0.0.0.0:9323' # experimental: true # registry-mirrors: @@ -73,23 +77,23 @@ docker: # - harbor.local pkg: - # Package handling - #version: 1.13.1 - #allow_updates: True - use_upstream_app: False + # Package handling + # version: 1.13.1 + # allow_updates: true + use_upstream_app: false - # PIP proxy configuration (defaults to False) + # PIP proxy configuration (defaults to false) # proxy: proxy.com:3128 # Global functions for docker_container states containers: skip_translate: ports - force_present: False - force_running: True + force_present: false + force_running: true compose: registry-datastore: - dvc: True + dvc: true # image: ®istry_image 'docker.io/registry:latest' ## Fedora image: ®istry_image 'registry:latest' container_name: &dvc 'registry-datastore' @@ -108,16 +112,16 @@ docker: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: '/registry' ports: - 127.0.0.1:5000:5000 - #restart: 'always' # compose v1.9 - deploy: # compose v3 + # restart: 'always' # compose v1.9 + deploy: # compose v3 restart_policy: condition: on-failure delay: 5s max_attempts: 3 window: 120s - nginx-latest: - #image: 'docker.io/nginx:latest' ##Fedora + nginx-latest: + # image: 'docker.io/nginx:latest' ##Fedora image: 'nginx:latest' container_name: 'nginx-latest' links: @@ -129,8 +133,8 @@ docker: - /srv/docker-registry/nginx/:/etc/nginx/conf.d - /srv/docker-registry/auth/:/etc/nginx/conf.d/auth - /srv/docker-registry/certs/:/etc/nginx/conf.d/certs - #restart: 'always' # compose v1.9 - deploy: # compose v3 + # restart: 'always' # compose v1.9 + deploy: # compose v3 restart_policy: condition: on-failure delay: 5s @@ -142,21 +146,21 @@ docker: # additional pillars supporting backwards compatibility only -#docker-pkg: -# lookup: - # docker-py backwards compatibility - #install_docker_py: True - #python_package: docker==2.1.0 - #pip: - # version: '== 8.1.1' - - # Old docker repositories (docker.io, lxc-docker<=1.7) backwards compatibility - #version: '1.6.2' - #pip_version: '<= 1.2.3' - -#registry: +# docker-pkg: +# lookup: +# docker-py backwards compatibility +# install_docker_py: true +# python_package: docker==2.1.0 +# pip: +# version: '== 8.1.1' +# +# Old docker repositories (docker.io, lxc-docker<=1.7) backwards compatibility +# version: '1.6.2' +# pip_version: '<= 1.2.3' +# +# registry: # lookup: - # docker registry 2.x backwards compatibility +# docker registry 2.x backwards compatibility # version: 2 # restart: always # runoptions: @@ -166,9 +170,8 @@ docker: # - "-e REGISTRY_STORAGE_S3_BUCKET=my-bucket" # - "-e REGISTRY_STORAGE_S3_ROOTDIRECTORY=my-folder/my-subfolder/my-sub-subfolder" # - "--log-driver=syslog" - # docker registry < 1, even older backwards compatibility +# docker registry < 1, even older backwards compatibility # amazon: # aws_bucket: 'my-registry' # aws_key: 'ABCDEFGHIJK123456789' # aws_secret: 'AbcD+efG-HIjK1+++23456+789' - diff --git a/pre-commit_semantic-release.sh b/pre-commit_semantic-release.sh new file mode 100755 index 00000000..9d34d74c --- /dev/null +++ b/pre-commit_semantic-release.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +############################################################################### +# (A) Update `FORMULA` with `${nextRelease.version}` +############################################################################### +sed -i -e "s_^\(version:\).*_\1 ${1}_" FORMULA + + +############################################################################### +# (B) Use `m2r` to convert automatically produced `.md` docs to `.rst` +############################################################################### + +# Install `m2r` +sudo -H pip install m2r + +# Copy and then convert the `.md` docs +cp *.md docs/ +cd docs/ +m2r --overwrite *.md + +# Change excess `H1` headings to `H2` in converted `CHANGELOG.rst` +sed -i -e '/^=.*$/s/=/-/g' CHANGELOG.rst +sed -i -e '1,4s/-/=/g' CHANGELOG.rst + +# Use for debugging output, when required +# cat AUTHORS.rst +# cat CHANGELOG.rst + +# Return back to the main directory +cd .. diff --git a/release-rules.js b/release-rules.js new file mode 100644 index 00000000..c63c850d --- /dev/null +++ b/release-rules.js @@ -0,0 +1,18 @@ +// No release is triggered for the types commented out below. +// Commits using these types will be incorporated into the next release. +// +// NOTE: Any changes here must be reflected in `CONTRIBUTING.md`. +module.exports = [ + {breaking: true, release: 'major'}, + // {type: 'build', release: 'patch'}, + // {type: 'chore', release: 'patch'}, + // {type: 'ci', release: 'patch'}, + {type: 'docs', release: 'patch'}, + {type: 'feat', release: 'minor'}, + {type: 'fix', release: 'patch'}, + {type: 'perf', release: 'patch'}, + {type: 'refactor', release: 'patch'}, + {type: 'revert', release: 'patch'}, + {type: 'style', release: 'patch'}, + {type: 'test', release: 'patch'}, +]; diff --git a/release.config.js b/release.config.js new file mode 100644 index 00000000..afa0cb11 --- /dev/null +++ b/release.config.js @@ -0,0 +1,106 @@ +module.exports = { + branch: 'master', + plugins: [ + ['@semantic-release/commit-analyzer', { + preset: 'angular', + releaseRules: './release-rules.js', + }], + '@semantic-release/release-notes-generator', + ['@semantic-release/changelog', { + changelogFile: 'CHANGELOG.md', + changelogTitle: '# Changelog', + }], + ['@semantic-release/exec', { + prepareCmd: 'sh ./pre-commit_semantic-release.sh ${nextRelease.version}', + }], + ['@semantic-release/git', { + assets: ['*.md', 'docs/*.rst', 'FORMULA'], + }], + '@semantic-release/github', + ], + generateNotes: { + preset: 'angular', + writerOpts: { + // Required due to upstream bug preventing all types being displayed. + // Bug: https://github.com/conventional-changelog/conventional-changelog/issues/317 + // Fix: https://github.com/conventional-changelog/conventional-changelog/pull/410 + transform: (commit, context) => { + const issues = [] + + commit.notes.forEach(note => { + note.title = `BREAKING CHANGES` + }) + + // NOTE: Any changes here must be reflected in `CONTRIBUTING.md`. + if (commit.type === `feat`) { + commit.type = `Features` + } else if (commit.type === `fix`) { + commit.type = `Bug Fixes` + } else if (commit.type === `perf`) { + commit.type = `Performance Improvements` + } else if (commit.type === `revert`) { + commit.type = `Reverts` + } else if (commit.type === `docs`) { + commit.type = `Documentation` + } else if (commit.type === `style`) { + commit.type = `Styles` + } else if (commit.type === `refactor`) { + commit.type = `Code Refactoring` + } else if (commit.type === `test`) { + commit.type = `Tests` + } else if (commit.type === `build`) { + commit.type = `Build System` + // } else if (commit.type === `chore`) { + // commit.type = `Maintenance` + } else if (commit.type === `ci`) { + commit.type = `Continuous Integration` + } else { + return + } + + if (commit.scope === `*`) { + commit.scope = `` + } + + if (typeof commit.hash === `string`) { + commit.hash = commit.hash.substring(0, 7) + } + + if (typeof commit.subject === `string`) { + let url = context.repository + ? `${context.host}/${context.owner}/${context.repository}` + : context.repoUrl + if (url) { + url = `${url}/issues/` + // Issue URLs. + commit.subject = commit.subject.replace(/#([0-9]+)/g, (_, issue) => { + issues.push(issue) + return `[#${issue}](${url}${issue})` + }) + } + if (context.host) { + // User URLs. + commit.subject = commit.subject.replace(/\B@([a-z0-9](?:-?[a-z0-9/]){0,38})/g, (_, username) => { + if (username.includes('/')) { + return `@${username}` + } + + return `[@${username}](${context.host}/${username})` + }) + } + } + + // remove references that already appear in the subject + commit.references = commit.references.filter(reference => { + if (issues.indexOf(reference.issue) === -1) { + return true + } + + return false + }) + + return commit + }, + }, + }, +}; diff --git a/test/integration/default/README.md b/test/integration/default/README.md new file mode 100644 index 00000000..37cf963c --- /dev/null +++ b/test/integration/default/README.md @@ -0,0 +1,50 @@ +# InSpec Profile: `default` + +This shows the implementation of the `default` InSpec [profile](https://github.com/inspec/inspec/blob/master/docs/profiles.md). + +## Verify a profile + +InSpec ships with built-in features to verify a profile structure. + +```bash +$ inspec check default +Summary +------- +Location: default +Profile: profile +Controls: 4 +Timestamp: 2019-06-24T23:09:01+00:00 +Valid: true + +Errors +------ + +Warnings +-------- +``` + +## Execute a profile + +To run all **supported** controls on a local machine use `inspec exec /path/to/profile`. + +```bash +$ inspec exec default +.. + +Finished in 0.0025 seconds (files took 0.12449 seconds to load) +8 examples, 0 failures +``` + +## Execute a specific control from a profile + +To run one control from the profile use `inspec exec /path/to/profile --controls name`. + +```bash +$ inspec exec default --controls package +. + +Finished in 0.0025 seconds (files took 0.12449 seconds to load) +1 examples, 0 failures +``` + +See an [example control here](https://github.com/inspec/inspec/blob/master/examples/profile/controls/example.rb). diff --git a/test/integration/default/inspec.yml b/test/integration/default/inspec.yml new file mode 100644 index 00000000..477b1fcd --- /dev/null +++ b/test/integration/default/inspec.yml @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +name: default +title: docker formula +maintainer: SaltStack Formulas +license: Apache-2.0 +summary: Verify that the docker formula is setup and configured correctly +supports: + - platform-name: debian + - platform-name: ubuntu + - platform-name: centos + - platform-name: fedora + - platform-name: opensuse + - platform-name: suse + - platform-name: freebsd + - platform-name: amazon + - platform-name: arch From 9e8e1e87dcc8bbc000f94a028c775eaca9bb72c3 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 16 Oct 2019 20:56:01 +0100 Subject: [PATCH 27/51] fix(compose-ng.sls): fix `salt-lint` errors ```bash Examining docker/compose-ng.sls of type state [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:13 {{id}}: [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:17 {{id}} image: [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:22 - name: {{image[0]}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:23 - tag: {{image[1]}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:25 - name: {{container.image}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:28 {{id}} container: [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:40 - name: {{id}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:41 - image: {{container.image}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:43 - command: {{container.command}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:48 - {{variable}}: {{value}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:57 - "{{mapping[0]}}" [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:59 - "{{mapping[-1]}}/tcp": [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:60 HostPort: "{{mapping[-2]}}" [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:61 HostIp: "{{mapping[-3]|d('')}}" [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:64 - {{port_mapping}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:71 - {{volume}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:78 - {{volume}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:86 {{name}}: {{alias}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:92 Name: {{policy[0]}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:94 MaximumRetryCount: {{policy[1]}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:99 - docker_image: {{id}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:101 - docker: {{id}} image [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:106 - docker_image: {{containerid}} [206] Jinja variables should have spaces before and after: {{ var_name }} docker/compose-ng.sls:108 - docker: {{containerid}} ``` --- docker/compose-ng.sls | 48 +++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/docker/compose-ng.sls b/docker/compose-ng.sls index 9826d751..d1d64a5c 100644 --- a/docker/compose-ng.sls +++ b/docker/compose-ng.sls @@ -10,22 +10,22 @@ include: {%- set id = container.container_name|d(name) %} {%- set required_containers = [] %} {%- if grains['saltversioninfo'] >= [2017, 7, 0] %} -{{id}}: +{{ id }}: docker_image.present: - force: {{ docker.containers.force_present }} {%- else %} -{{id}} image: +{{ id }} image: docker.pulled: {%- endif %} {%- if ':' in container.image %} {%- set image = container.image.split(':',1) %} - - name: {{image[0]}} - - tag: {{image[1]}} + - name: {{ image[0] }} + - tag: {{ image[1] }} {%- else %} - - name: {{container.image}} + - name: {{ container.image }} {%- endif %} -{{id}} container: +{{ id }} container: {%- if grains['saltversioninfo'] >= [2017, 7, 0] %} docker_container.running: - skip_translate: {{ docker.containers.skip_translate }} @@ -37,15 +37,15 @@ include: docker.running: {%- endif %} {%- endif %} - - name: {{id}} - - image: {{container.image}} + - name: {{ id }} + - image: {{ container.image }} {%- if 'command' in container %} - - command: {{container.command}} + - command: {{ container.command }} {%- endif %} {%- if 'environment' in container and container.environment is iterable %} - environment: {%- for variable, value in container.environment.items() %} - - {{variable}}: {{value}} + - {{ variable }}: {{ value }} {%- endfor %} {%- endif %} {%- if 'ports' in container and container.ports is iterable %} @@ -54,28 +54,28 @@ include: {%- if port_mapping is string %} {%- set mapping = port_mapping.split(':',2) %} {%- if mapping|length < 2 %} - - "{{mapping[0]}}" + - "{{ mapping[0] }}" {%- else %} - - "{{mapping[-1]}}/tcp": - HostPort: "{{mapping[-2]}}" - HostIp: "{{mapping[-3]|d('')}}" + - "{{ mapping[-1] }}/tcp": + HostPort: "{{ mapping[-2] }}" + HostIp: "{{ mapping[-3]|d('') }}" {%- endif %} {%- elif port_mapping is mapping %} - - {{port_mapping}} + - {{ port_mapping }} {%- endif %} {%- endfor %} {%- endif %} {%- if 'volumes' in container %} - volumes: {%- for volume in container.volumes %} - - {{volume}} + - {{ volume }} {%- endfor %} {%- endif %} {%- if 'volumes_from' in container %} - volumes_from: {%- for volume in container.volumes_from %} {%- do required_containers.append(volume) %} - - {{volume}} + - {{ volume }} {%- endfor %} {%- endif %} {%- if 'links' in container %} @@ -83,29 +83,29 @@ include: {%- for link in container.links %} {%- set name, alias = link.split(':',1) %} {%- do required_containers.append(name) %} - {{name}}: {{alias}} + {{ name }}: {{ alias }} {%- endfor %} {%- endif %} {%- if 'restart' in container %} - restart_policy: {%- set policy = container.restart.split(':',1) %} - Name: {{policy[0]}} + Name: {{ policy[0] }} {%- if policy|length > 1 %} - MaximumRetryCount: {{policy[1]}} + MaximumRetryCount: {{ policy[1] }} {%- endif %} {%- endif %} - require: {%- if grains['saltversioninfo'] >= [2017, 7, 0] %} - - docker_image: {{id}} + - docker_image: {{ id }} {%- else %} - - docker: {{id}} image + - docker: {{ id }} image {%- endif %} {%- if required_containers is defined %} {%- for containerid in required_containers %} {%- if grains['saltversioninfo'] >= [2017, 7, 0] %} - - docker_image: {{containerid}} + - docker_image: {{ containerid }} {%- else %} - - docker: {{containerid}} + - docker: {{ containerid }} {%- endif %} {%- endfor %} {%- endif %} From 62122d26dd825bb474fb820320e307a5721c2edb Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 16 Oct 2019 22:28:04 +0100 Subject: [PATCH 28/51] test(testinfra): remove from the formula --- requirements.txt | 4 ---- test/integration/default/testinfra/test_docker.py | 12 ------------ .../version-1.13.1/testinfra/test_docker.py | 11 ----------- .../version-1.6.2/testinfra/test_docker.py | 11 ----------- test/integration/version-18/testinfra/test_docker.py | 11 ----------- 5 files changed, 49 deletions(-) delete mode 100644 requirements.txt delete mode 100644 test/integration/default/testinfra/test_docker.py delete mode 100644 test/integration/version-1.13.1/testinfra/test_docker.py delete mode 100644 test/integration/version-1.6.2/testinfra/test_docker.py delete mode 100644 test/integration/version-18/testinfra/test_docker.py diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index f6682435..00000000 --- a/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -py==1.4.31 -pytest==3.0.3 -six==1.10.0 -testinfra==1.4.2 diff --git a/test/integration/default/testinfra/test_docker.py b/test/integration/default/testinfra/test_docker.py deleted file mode 100644 index 30c5e7f4..00000000 --- a/test/integration/default/testinfra/test_docker.py +++ /dev/null @@ -1,12 +0,0 @@ -import testinfra - - -def test_package_is_installed(Package): - docker = Package('docker-ce') - assert docker.is_installed - assert docker.version.startswith('18.') - -def test_service_is_running_and_enabled(Service): - docker = Service('docker') - assert docker.is_running - assert docker.is_enabled diff --git a/test/integration/version-1.13.1/testinfra/test_docker.py b/test/integration/version-1.13.1/testinfra/test_docker.py deleted file mode 100644 index a3359998..00000000 --- a/test/integration/version-1.13.1/testinfra/test_docker.py +++ /dev/null @@ -1,11 +0,0 @@ -import testinfra - -def test_package_is_installed(Package): - docker = Package('docker-engine') - assert docker.is_installed - assert docker.version.startswith('1.13.1') - -def test_service_is_running_and_enabled(Service): - docker = Service('docker') - assert docker.is_running - assert docker.is_enabled diff --git a/test/integration/version-1.6.2/testinfra/test_docker.py b/test/integration/version-1.6.2/testinfra/test_docker.py deleted file mode 100644 index 44be269b..00000000 --- a/test/integration/version-1.6.2/testinfra/test_docker.py +++ /dev/null @@ -1,11 +0,0 @@ -import testinfra - -def test_package_is_installed(Package): - docker = Package('docker.io') - assert docker.is_installed - assert docker.version.startswith('1.6.2') - -def test_service_is_running_and_enabled(Service): - docker = Service('docker') - assert docker.is_running - assert docker.is_enabled diff --git a/test/integration/version-18/testinfra/test_docker.py b/test/integration/version-18/testinfra/test_docker.py deleted file mode 100644 index 14ede607..00000000 --- a/test/integration/version-18/testinfra/test_docker.py +++ /dev/null @@ -1,11 +0,0 @@ -import testinfra - -def test_package_is_installed(Package): - docker = Package('docker-engine') - assert docker.is_installed - assert docker.version.startswith('18.') - -def test_service_is_running_and_enabled(Service): - docker = Service('docker') - assert docker.is_running - assert docker.is_enabled From 451d76d1dd21b87a8fdd1b54a1655ad588e509e2 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 16 Oct 2019 23:35:33 +0100 Subject: [PATCH 29/51] test(inspec): add tests for package, config & service --- test/integration/default/controls/config.rb | 14 +++++++++++++ test/integration/default/controls/package.rb | 21 ++++++++++++++++++++ test/integration/default/controls/service.rb | 11 ++++++++++ 3 files changed, 46 insertions(+) create mode 100644 test/integration/default/controls/config.rb create mode 100644 test/integration/default/controls/package.rb create mode 100644 test/integration/default/controls/service.rb diff --git a/test/integration/default/controls/config.rb b/test/integration/default/controls/config.rb new file mode 100644 index 00000000..dfd4d22d --- /dev/null +++ b/test/integration/default/controls/config.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +control 'Docker configuration' do + title 'should match desired lines' + + describe file('/etc/default/docker') do + it { should be_file } + its('owner') { should eq 'root' } + its('group') { should eq 'root' } + its('mode') { should cmp '0644' } + its('content') { should include 'DOCKER_OPTS="-s btrfs --dns 8.8.8.8"' } + its('content') { should include 'export http_proxy="http://172.17.42.1:3128"' } + end +end diff --git a/test/integration/default/controls/package.rb b/test/integration/default/controls/package.rb new file mode 100644 index 00000000..974981e4 --- /dev/null +++ b/test/integration/default/controls/package.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +control 'Docker package' do + title 'should be installed' + + package_name = + case platform[:family] + when 'debian' + 'docker-ce' + # Catch remaining `linux` platforms to identify by `name` at the end + when 'linux' + case platform[:name] + when 'arch' + 'docker' + end + end + + describe package(package_name) do + it { should be_installed } + end +end diff --git a/test/integration/default/controls/service.rb b/test/integration/default/controls/service.rb new file mode 100644 index 00000000..d5a83784 --- /dev/null +++ b/test/integration/default/controls/service.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +control 'Docker service' do + title 'should be running and enabled' + + describe service('docker') do + it { should be_installed } + it { should be_enabled } + it { should be_running } + end +end From dce112a769461411c5061a0cead7491e52a4d8d6 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Thu, 17 Oct 2019 00:13:10 +0100 Subject: [PATCH 30/51] fix(pillar.example): ensure `docker.config` is available --- pillar.example | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pillar.example b/pillar.example index f253e82a..6dd30c2b 100644 --- a/pillar.example +++ b/pillar.example @@ -51,11 +51,6 @@ docker-pkg: lookup: process_signature: /usr/bin/docker - # config for sysvinit/upstart (for systemd, use drop-ins in your own states) - config: - - DOCKER_OPTS="-s btrfs --dns 8.8.8.8" - - export http_proxy="http://172.17.42.1:3128" - # Docker compose supported attributes docker: # install_pypi_pip: true @@ -82,6 +77,11 @@ docker: # allow_updates: true use_upstream_app: false + # config for sysvinit/upstart (for systemd, use drop-ins in your own states) + config: + - DOCKER_OPTS="-s btrfs --dns 8.8.8.8" + - export http_proxy="http://172.17.42.1:3128" + # PIP proxy configuration (defaults to false) # proxy: proxy.com:3128 From 222fc6d216c47644b92e21c2d01cd482932efd50 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 16 Oct 2019 23:35:03 +0100 Subject: [PATCH 31/51] docs(readme): move to `docs/` directory and modify accordingly --- README.rst => docs/README.rst | 107 +++++++++++++++++++++++++--------- 1 file changed, 81 insertions(+), 26 deletions(-) rename README.rst => docs/README.rst (72%) diff --git a/README.rst b/docs/README.rst similarity index 72% rename from README.rst rename to docs/README.rst index b58ea693..0046062b 100644 --- a/README.rst +++ b/docs/README.rst @@ -1,22 +1,52 @@ -====== +.. _readme: + Docker ====== +|img_travis| |img_sr| + +.. |img_travis| image:: https://travis-ci.com/saltstack-formulas/docker-formula.svg?branch=master + :alt: Travis CI Build Status + :scale: 100% + :target: https://travis-ci.com/saltstack-formulas/docker-formula +.. |img_sr| image:: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg + :alt: Semantic Release + :scale: 100% + :target: https://github.com/semantic-release/semantic-release + Formulas for working with Docker -.. note:: +.. contents:: **Table of Contents** + +General notes +------------- + +See the full `SaltStack Formulas installation and usage instructions +`_. - See the full `Salt Formulas installation and usage instructions - `_. +If you are interested in writing or contributing to formulas, please pay attention to the `Writing Formula Section +`_. + +If you want to use this formula, please pay attention to the ``FORMULA`` file and/or ``git tag``, +which contains the currently released version. This formula is versioned according to `Semantic Versioning `_. + +See `Formula Versioning Section `_ for more details. + +Contributing to this repo +------------------------- + +**Commit message formatting is significant!!** + +Please see `How to contribute `_ for more details. Available states -================ +---------------- .. contents:: :local: ``docker`` ----------- +^^^^^^^^^^ Install and run Docker daemon @@ -30,7 +60,7 @@ Install and run Docker daemon ``docker.containers`` ---------------------- +^^^^^^^^^^^^^^^^^^^^^ Pulls and runs a number of docker containers with arbitrary *run* options all configurable via pillars. Salt includes *dockerio* and *dockerng* states, but both depend on *docker-py* library, which not always implements the latest *docker run* options. This gives the user more control over the docker run options, but it doesn't try to implement all the other docker commands, such as build, ps, inspect, etc. It just pulls an image and runs it. @@ -71,34 +101,34 @@ In the example pillar above: - ``service stop`` will wipeout the container completely (ie ``docker stop + docker rm ``) ``docker.clean`` ----------------- +^^^^^^^^^^^^^^^^ Stop Docker daemon and remove older docker packages (usually called 'docker' and 'docker-engine'). Linux only. ``docker.repo`` ---------------- +^^^^^^^^^^^^^^^ Configures the upstream docker's repo (true, by default). ``docker.macosapp`` -------------------- +^^^^^^^^^^^^^^^^^^^ Installs Docker Desktop for Mac. ``docker.macosapp`` -------------------- +^^^^^^^^^^^^^^^^^^^ Installs Docker Desktop for Mac. ``docker.compose`` ------------------- +^^^^^^^^^^^^^^^^^^ Installs `Docker Compose `_ (previously ``fig``) to define groups of containers and their relationships with one another. Use `docker.compose-ng` to run `docker-compose`. ``docker.compose-ng`` ---------------------- +^^^^^^^^^^^^^^^^^^^^^ The intent is to provide an interface similar to the `specification `_ provided by docker-compose. The hope is that you may provide pillar data @@ -162,7 +192,7 @@ Then you would target a host with the following states: ``docker.registry (DEPRECATED)`` --------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NEW: @@ -201,32 +231,57 @@ In this case, extra *docker run* options can be provided in your *"registry:look By default, the storage backend used by the registry is "filesystem". Use environment variables to override that, for example to use S3 as backend storage. ``docker.remove`` ----------------- +^^^^^^^^^^^^^^^^^ Stop Docker daemon. Remove older docker packages (usually called 'docker' and 'docker-engine'). Development -=========== +----------- Note that some of the internal states such as `docker.running` are references to the internal `dockerio states `_ Testing -======= +------- -Testing is done with `Test Kitchen `_ -for machine setup and `testinfra `_ -for integration tests. +Linux testing is done with ``kitchen-salt``. Requirements ------------- +^^^^^^^^^^^^ -* Python * Ruby * Docker -:: +.. code-block:: bash + + $ gem install bundler + $ bundle install + $ bin/kitchen test [platform] + +Where ``[platform]`` is the platform name defined in ``kitchen.yml``, +e.g. ``debian-9-2019-2-py3``. + +``bin/kitchen converge`` +^^^^^^^^^^^^^^^^^^^^^^^^ + +Creates the docker instance and runs the ``template`` main state, ready for testing. + +``bin/kitchen verify`` +^^^^^^^^^^^^^^^^^^^^^^ + +Runs the ``inspec`` tests on the actual instance. + +``bin/kitchen destroy`` +^^^^^^^^^^^^^^^^^^^^^^^ + +Removes the docker instance. + +``bin/kitchen test`` +^^^^^^^^^^^^^^^^^^^^ + +Runs all of the stages above in one go: i.e. ``destroy`` + ``converge`` + ``verify`` + ``destroy``. + +``bin/kitchen login`` +^^^^^^^^^^^^^^^^^^^^^ - gem install bundler - bundle install - kitchen test +Gives you SSH access to the instance for manual testing. From 3eaed1bc6c1cd67ef6da18fb8cb40d810c69d4b0 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 23 Oct 2019 08:05:36 +0100 Subject: [PATCH 32/51] ci(travis): update `salt-lint` config for `v0.0.10` * Automated using https://github.com/myii/ssf-formula/pull/82 --- .salt-lint | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.salt-lint b/.salt-lint index ba79fa78..ccd08083 100644 --- a/.salt-lint +++ b/.salt-lint @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- # vim: ft=yaml --- -exclude_paths: - # Violation: [204] Lines should be no longer that 160 chars - - docker/repo.sls +exclude_paths: [] +rules: + 204: # Lines should be no longer that 160 chars + ignore: | + docker/repo.sls skip_list: # Using `salt-lint` for linting other files as well, such as Jinja macros/templates - 205 # Use ".sls" as a Salt State file extension From 3fa1e4f2f0343597ed73506e43381a56f82a1d6a Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 23 Oct 2019 17:13:59 +0000 Subject: [PATCH 33/51] chore(release): 0.42.0 [skip ci] # [0.42.0](https://github.com/saltstack-formulas/docker-formula/compare/v0.41.0...v0.42.0) (2019-10-23) ### Bug Fixes * **compose-ng.sls:** fix `salt-lint` errors ([](https://github.com/saltstack-formulas/docker-formula/commit/9e8e1e8)) * **pillar.example:** ensure `docker.config` is available ([](https://github.com/saltstack-formulas/docker-formula/commit/dce112a)) ### Continuous Integration * **travis:** update `salt-lint` config for `v0.0.10` ([](https://github.com/saltstack-formulas/docker-formula/commit/3eaed1b)) ### Documentation * **readme:** move to `docs/` directory and modify accordingly ([](https://github.com/saltstack-formulas/docker-formula/commit/222fc6d)) ### Features * **semantic-release:** implement for this formula ([](https://github.com/saltstack-formulas/docker-formula/commit/ea6be11)) ### Tests * **inspec:** add tests for package, config & service ([](https://github.com/saltstack-formulas/docker-formula/commit/451d76d)) * **testinfra:** remove from the formula ([](https://github.com/saltstack-formulas/docker-formula/commit/62122d2)) --- AUTHORS.md | 59 ++++++++++++++++ CHANGELOG.md | 30 ++++++++ FORMULA | 2 +- docs/AUTHORS.rst | 167 +++++++++++++++++++++++++++++++++++++++++++++ docs/CHANGELOG.rst | 38 +++++++++++ 5 files changed, 295 insertions(+), 1 deletion(-) create mode 100644 AUTHORS.md create mode 100644 CHANGELOG.md create mode 100644 docs/AUTHORS.rst create mode 100644 docs/CHANGELOG.rst diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 00000000..4f442c80 --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,59 @@ +# Authors + +This list is sorted by the number of commits per contributor in _descending_ order. + +Avatar|Contributor|Contributions +:-:|---|:-: +@noelmcloughlin|[@noelmcloughlin](https://github.com/noelmcloughlin)|86 +@cdarwin|[@cdarwin](https://github.com/cdarwin)|25 +@gravyboat|[@gravyboat](https://github.com/gravyboat)|22 +@aboe76|[@aboe76](https://github.com/aboe76)|21 +@javierbertoli|[@javierbertoli](https://github.com/javierbertoli)|18 +@puneetk|[@puneetk](https://github.com/puneetk)|15 +@vladvasiliu|[@vladvasiliu](https://github.com/vladvasiliu)|12 +@myii|[@myii](https://github.com/myii)|12 +@nmadhok|[@nmadhok](https://github.com/nmadhok)|9 +@ticosax|[@ticosax](https://github.com/ticosax)|7 +@alexproca|[@alexproca](https://github.com/alexproca)|6 +@blbradley|[@blbradley](https://github.com/blbradley)|6 +@whiteinge|[@whiteinge](https://github.com/whiteinge)|6 +@toopy|[@toopy](https://github.com/toopy)|5 +@VBH-Jenkins|[@VBH-Jenkins](https://github.com/VBH-Jenkins)|5 +@babilen5|[@babilen5](https://github.com/babilen5)|3 +@techhat|[@techhat](https://github.com/techhat)|2 +@msciciel|[@msciciel](https://github.com/msciciel)|2 +@mingfang|[@mingfang](https://github.com/mingfang)|2 +@Poil|[@Poil](https://github.com/Poil)|2 +@stamak|[@stamak](https://github.com/stamak)|2 +@tedski|[@tedski](https://github.com/tedski)|2 +@tyhunt99|[@tyhunt99](https://github.com/tyhunt99)|2 +@DavidJFelix|[@DavidJFelix](https://github.com/DavidJFelix)|2 +@scornelissen85|[@scornelissen85](https://github.com/scornelissen85)|2 +@alxwr|[@alxwr](https://github.com/alxwr)|1 +@alinefr|[@alinefr](https://github.com/alinefr)|1 +@ernstae|[@ernstae](https://github.com/ernstae)|1 +@iggy|[@iggy](https://github.com/iggy)|1 +@blueyed|[@blueyed](https://github.com/blueyed)|1 +@comozo|[@comozo](https://github.com/comozo)|1 +@JohnMaguire|[@JohnMaguire](https://github.com/JohnMaguire)|1 +@jstjohn|[@jstjohn](https://github.com/jstjohn)|1 +@jfrederickson|[@jfrederickson](https://github.com/jfrederickson)|1 +@y2kenny|[@y2kenny](https://github.com/y2kenny)|1 +@LarsFronius|[@LarsFronius](https://github.com/LarsFronius)|1 +@xenophonf|[@xenophonf](https://github.com/xenophonf)|1 +@MrDiba|[@MrDiba](https://github.com/MrDiba)|1 +@pwaller|[@pwaller](https://github.com/pwaller)|1 +@syndicut|[@syndicut](https://github.com/syndicut)|1 +@rgreinho|[@rgreinho](https://github.com/rgreinho)|1 +@toanju|[@toanju](https://github.com/toanju)|1 +@tobias-m|[@tobias-m](https://github.com/tobias-m)|1 +@ghostsquad|[@ghostsquad](https://github.com/ghostsquad)|1 +@greut|[@greut](https://github.com/greut)|1 +@myoung34|[@myoung34](https://github.com/myoung34)|1 +@norrland|[@norrland](https://github.com/norrland)|1 +@oonska|[@oonska](https://github.com/oonska)|1 +@tiadobatima|[@tiadobatima](https://github.com/tiadobatima)|1 + +--- + +Auto-generated by a [forked version](https://github.com/myii/maintainer) of [gaocegege/maintainer](https://github.com/gaocegege/maintainer) on 2019-10-23. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..c25a215d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + +# [0.42.0](https://github.com/saltstack-formulas/docker-formula/compare/v0.41.0...v0.42.0) (2019-10-23) + + +### Bug Fixes + +* **compose-ng.sls:** fix `salt-lint` errors ([](https://github.com/saltstack-formulas/docker-formula/commit/9e8e1e8)) +* **pillar.example:** ensure `docker.config` is available ([](https://github.com/saltstack-formulas/docker-formula/commit/dce112a)) + + +### Continuous Integration + +* **travis:** update `salt-lint` config for `v0.0.10` ([](https://github.com/saltstack-formulas/docker-formula/commit/3eaed1b)) + + +### Documentation + +* **readme:** move to `docs/` directory and modify accordingly ([](https://github.com/saltstack-formulas/docker-formula/commit/222fc6d)) + + +### Features + +* **semantic-release:** implement for this formula ([](https://github.com/saltstack-formulas/docker-formula/commit/ea6be11)) + + +### Tests + +* **inspec:** add tests for package, config & service ([](https://github.com/saltstack-formulas/docker-formula/commit/451d76d)) +* **testinfra:** remove from the formula ([](https://github.com/saltstack-formulas/docker-formula/commit/62122d2)) diff --git a/FORMULA b/FORMULA index 8965b23c..02322702 100644 --- a/FORMULA +++ b/FORMULA @@ -1,7 +1,7 @@ name: docker os: Debian, Ubuntu, Raspbian, RedHat, Fedora, CentOS, Suse, openSUSE, Gentoo, Funtoo, Arch, Manjaro, Alpine, FreeBSD, OpenBSD, Solaris, SmartOS, Windows, MacOS os_family: Debian, RedHat, Suse, Gentoo, Arch, Alpine, FreeBSD, OpenBSD, Solaris, Windows, MacOS -version: 0.41.0 +version: 0.42.0 release: 1 minimum_version: 2017.7 summary: docker formula diff --git a/docs/AUTHORS.rst b/docs/AUTHORS.rst new file mode 100644 index 00000000..751c1216 --- /dev/null +++ b/docs/AUTHORS.rst @@ -0,0 +1,167 @@ +.. role:: raw-html-m2r(raw) + :format: html + + +Authors +======= + +This list is sorted by the number of commits per contributor in *descending* order. + +.. list-table:: + :header-rows: 1 + + * - Avatar + - Contributor + - Contributions + * - :raw-html-m2r:`@noelmcloughlin` + - `@noelmcloughlin `_ + - 86 + * - :raw-html-m2r:`@cdarwin` + - `@cdarwin `_ + - 25 + * - :raw-html-m2r:`@gravyboat` + - `@gravyboat `_ + - 22 + * - :raw-html-m2r:`@aboe76` + - `@aboe76 `_ + - 21 + * - :raw-html-m2r:`@javierbertoli` + - `@javierbertoli `_ + - 18 + * - :raw-html-m2r:`@puneetk` + - `@puneetk `_ + - 15 + * - :raw-html-m2r:`@vladvasiliu` + - `@vladvasiliu `_ + - 12 + * - :raw-html-m2r:`@myii` + - `@myii `_ + - 12 + * - :raw-html-m2r:`@nmadhok` + - `@nmadhok `_ + - 9 + * - :raw-html-m2r:`@ticosax` + - `@ticosax `_ + - 7 + * - :raw-html-m2r:`@alexproca` + - `@alexproca `_ + - 6 + * - :raw-html-m2r:`@blbradley` + - `@blbradley `_ + - 6 + * - :raw-html-m2r:`@whiteinge` + - `@whiteinge `_ + - 6 + * - :raw-html-m2r:`@toopy` + - `@toopy `_ + - 5 + * - :raw-html-m2r:`@VBH-Jenkins` + - `@VBH-Jenkins `_ + - 5 + * - :raw-html-m2r:`@babilen5` + - `@babilen5 `_ + - 3 + * - :raw-html-m2r:`@techhat` + - `@techhat `_ + - 2 + * - :raw-html-m2r:`@msciciel` + - `@msciciel `_ + - 2 + * - :raw-html-m2r:`@mingfang` + - `@mingfang `_ + - 2 + * - :raw-html-m2r:`@Poil` + - `@Poil `_ + - 2 + * - :raw-html-m2r:`@stamak` + - `@stamak `_ + - 2 + * - :raw-html-m2r:`@tedski` + - `@tedski `_ + - 2 + * - :raw-html-m2r:`@tyhunt99` + - `@tyhunt99 `_ + - 2 + * - :raw-html-m2r:`@DavidJFelix` + - `@DavidJFelix `_ + - 2 + * - :raw-html-m2r:`@scornelissen85` + - `@scornelissen85 `_ + - 2 + * - :raw-html-m2r:`@alxwr` + - `@alxwr `_ + - 1 + * - :raw-html-m2r:`@alinefr` + - `@alinefr `_ + - 1 + * - :raw-html-m2r:`@ernstae` + - `@ernstae `_ + - 1 + * - :raw-html-m2r:`@iggy` + - `@iggy `_ + - 1 + * - :raw-html-m2r:`@blueyed` + - `@blueyed `_ + - 1 + * - :raw-html-m2r:`@comozo` + - `@comozo `_ + - 1 + * - :raw-html-m2r:`@JohnMaguire` + - `@JohnMaguire `_ + - 1 + * - :raw-html-m2r:`@jstjohn` + - `@jstjohn `_ + - 1 + * - :raw-html-m2r:`@jfrederickson` + - `@jfrederickson `_ + - 1 + * - :raw-html-m2r:`@y2kenny` + - `@y2kenny `_ + - 1 + * - :raw-html-m2r:`@LarsFronius` + - `@LarsFronius `_ + - 1 + * - :raw-html-m2r:`@xenophonf` + - `@xenophonf `_ + - 1 + * - :raw-html-m2r:`@MrDiba` + - `@MrDiba `_ + - 1 + * - :raw-html-m2r:`@pwaller` + - `@pwaller `_ + - 1 + * - :raw-html-m2r:`@syndicut` + - `@syndicut `_ + - 1 + * - :raw-html-m2r:`@rgreinho` + - `@rgreinho `_ + - 1 + * - :raw-html-m2r:`@toanju` + - `@toanju `_ + - 1 + * - :raw-html-m2r:`@tobias-m` + - `@tobias-m `_ + - 1 + * - :raw-html-m2r:`@ghostsquad` + - `@ghostsquad `_ + - 1 + * - :raw-html-m2r:`@greut` + - `@greut `_ + - 1 + * - :raw-html-m2r:`@myoung34` + - `@myoung34 `_ + - 1 + * - :raw-html-m2r:`@norrland` + - `@norrland `_ + - 1 + * - :raw-html-m2r:`@oonska` + - `@oonska `_ + - 1 + * - :raw-html-m2r:`@tiadobatima` + - `@tiadobatima `_ + - 1 + + +---- + +Auto-generated by a `forked version `_ of `gaocegege/maintainer `_ on 2019-10-23. diff --git a/docs/CHANGELOG.rst b/docs/CHANGELOG.rst new file mode 100644 index 00000000..f51d5ae3 --- /dev/null +++ b/docs/CHANGELOG.rst @@ -0,0 +1,38 @@ + +Changelog +========= + +`0.42.0 `_ (2019-10-23) +----------------------------------------------------------------------------------------------------------- + +Bug Fixes +^^^^^^^^^ + + +* **compose-ng.sls:** fix ``salt-lint`` errors (\ ` `_\ ) +* **pillar.example:** ensure ``docker.config`` is available (\ ` `_\ ) + +Continuous Integration +^^^^^^^^^^^^^^^^^^^^^^ + + +* **travis:** update ``salt-lint`` config for ``v0.0.10`` (\ ` `_\ ) + +Documentation +^^^^^^^^^^^^^ + + +* **readme:** move to ``docs/`` directory and modify accordingly (\ ` `_\ ) + +Features +^^^^^^^^ + + +* **semantic-release:** implement for this formula (\ ` `_\ ) + +Tests +^^^^^ + + +* **inspec:** add tests for package, config & service (\ ` `_\ ) +* **testinfra:** remove from the formula (\ ` `_\ ) From d87e7871989b56293b577976c122c6c7095d61e3 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Thu, 24 Oct 2019 18:15:40 +0100 Subject: [PATCH 34/51] ci(kitchen): use `debian-10-master-py3` instead of `develop` [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/84 --- .travis.yml | 2 +- kitchen.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 148c14a6..5925e003 100644 --- a/.travis.yml +++ b/.travis.yml @@ -50,7 +50,7 @@ jobs: ## Define the rest of the matrix based on Kitchen testing # Make sure the instances listed below match up with # the `platforms` defined in `kitchen.yml` - - env: INSTANCE=default-debian-10-develop-py3 + - env: INSTANCE=default-debian-10-master-py3 # - env: INSTANCE=default-ubuntu-1804-develop-py3 # - env: INSTANCE=default-centos-7-develop-py3 # - env: INSTANCE=default-fedora-30-develop-py3 diff --git a/kitchen.yml b/kitchen.yml index 9444a053..4d619b1f 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -11,13 +11,13 @@ driver: # Make sure the platforms listed below match up with # the `env.matrix` instances defined in `.travis.yml` platforms: - ## SALT `develop` - - name: debian-10-develop-py3 + ## SALT `develop` => `master` + - name: debian-10-master-py3 driver: - image: netmanagers/salt-develop-py3:debian-10 + image: netmanagers/salt-master-py3:debian-10 provision_command: - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git develop + - sh bootstrap-salt.sh -XdPbfrq -x python3 git master - name: ubuntu-1804-develop-py3 driver: image: netmanagers/salt-develop-py3:ubuntu-18.04 From 2189efbc8af5fa6a529acbe3410b62558132a044 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 30 Oct 2019 04:51:51 +0000 Subject: [PATCH 35/51] ci(kitchen+travis): upgrade matrix after `2019.2.2` release [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/86 --- .travis.yml | 30 ++++++++------- kitchen.yml | 109 ++++++++++++++++++++++------------------------------ 2 files changed, 61 insertions(+), 78 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5925e003..c7b911e4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,7 @@ jobs: script: # Install and run `salt-lint` - pip install --user salt-lint - - git ls-files | grep '\.sls$\|\.jinja$\|\.j2$\|\.tmpl$' + - git ls-files | grep '\.sls$\|\.jinja$\|\.j2$\|\.tmpl$\|\.tst$' | xargs -I {} salt-lint {} # Install and run `yamllint` # Need at least `v1.17.0` for the `yaml-files` setting @@ -51,31 +51,33 @@ jobs: # Make sure the instances listed below match up with # the `platforms` defined in `kitchen.yml` - env: INSTANCE=default-debian-10-master-py3 - # - env: INSTANCE=default-ubuntu-1804-develop-py3 - # - env: INSTANCE=default-centos-7-develop-py3 - # - env: INSTANCE=default-fedora-30-develop-py3 - # - env: INSTANCE=default-opensuse-leap-15-develop-py3 - # - env: INSTANCE=default-amazonlinux-2-develop-py2 - # - env: INSTANCE=default-arch-base-latest-develop-py2 + # - env: INSTANCE=default-ubuntu-1804-master-py3 + # - env: INSTANCE=default-centos-8-master-py3 + # - env: INSTANCE=default-fedora-31-master-py3 + # - env: INSTANCE=default-opensuse-leap-151-master-py3 + # - env: INSTANCE=default-amazonlinux-2-master-py2 + # - env: INSTANCE=default-arch-base-latest-master-py2 + # - env: INSTANCE=default-debian-10-2019-2-py3 - env: INSTANCE=default-debian-9-2019-2-py3 - env: INSTANCE=default-ubuntu-1804-2019-2-py3 - # - env: INSTANCE=default-centos-7-2019-2-py3 - # - env: INSTANCE=default-fedora-30-2019-2-py3 - # - env: INSTANCE=default-opensuse-leap-15-2019-2-py3 + # - env: INSTANCE=default-centos-8-2019-2-py3 + # - env: INSTANCE=default-fedora-31-2019-2-py3 + # - env: INSTANCE=default-opensuse-leap-151-2019-2-py3 + # - env: INSTANCE=default-centos-7-2019-2-py2 # - env: INSTANCE=default-amazonlinux-2-2019-2-py2 - env: INSTANCE=default-arch-base-latest-2019-2-py2 + # - env: INSTANCE=default-fedora-30-2018-3-py3 - env: INSTANCE=default-debian-9-2018-3-py2 # - env: INSTANCE=default-ubuntu-1604-2018-3-py2 # - env: INSTANCE=default-centos-7-2018-3-py2 - # - env: INSTANCE=default-fedora-29-2018-3-py2 - # - env: INSTANCE=default-opensuse-leap-15-2018-3-py2 + # - env: INSTANCE=default-opensuse-leap-151-2018-3-py2 # - env: INSTANCE=default-amazonlinux-2-2018-3-py2 # - env: INSTANCE=default-arch-base-latest-2018-3-py2 # - env: INSTANCE=default-debian-8-2017-7-py2 - env: INSTANCE=default-ubuntu-1604-2017-7-py2 # - env: INSTANCE=default-centos-6-2017-7-py2 - # - env: INSTANCE=default-fedora-29-2017-7-py2 - # - env: INSTANCE=default-opensuse-leap-15-2017-7-py2 + # - env: INSTANCE=default-fedora-30-2017-7-py2 + # - env: INSTANCE=default-opensuse-leap-151-2017-7-py2 # - env: INSTANCE=default-amazonlinux-2-2017-7-py2 # - env: INSTANCE=default-arch-base-latest-2017-7-py2 diff --git a/kitchen.yml b/kitchen.yml index 4d619b1f..4025ed50 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -11,88 +11,83 @@ driver: # Make sure the platforms listed below match up with # the `env.matrix` instances defined in `.travis.yml` platforms: - ## SALT `develop` => `master` + ## SALT `master` - name: debian-10-master-py3 driver: image: netmanagers/salt-master-py3:debian-10 provision_command: - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - sh bootstrap-salt.sh -XdPbfrq -x python3 git master - - name: ubuntu-1804-develop-py3 + - name: ubuntu-1804-master-py3 driver: - image: netmanagers/salt-develop-py3:ubuntu-18.04 + image: netmanagers/salt-master-py3:ubuntu-18.04 provision_command: - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git develop - - name: centos-7-develop-py3 + - sh bootstrap-salt.sh -XdPbfrq -x python3 git master + - name: centos-8-master-py3 driver: - image: netmanagers/salt-develop-py3:centos-7 + image: netmanagers/salt-master-py3:centos-8 provision_command: - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git develop - - name: fedora-30-develop-py3 + - sh bootstrap-salt.sh -XdPbfrq -x python3 git master + - name: fedora-31-master-py3 driver: - image: netmanagers/salt-develop-py3:fedora-30 + image: netmanagers/salt-master-py3:fedora-31 provision_command: - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git develop - - name: opensuse-leap-15-develop-py3 + - sh bootstrap-salt.sh -XdPbfrq -x python3 git master + - name: opensuse-leap-151-master-py3 driver: - image: opensuse/leap:15 + image: netmanagers/salt-master-py3:opensuse-leap-15.1 provision_command: - # yamllint disable-line rule:line-length - - zypper install -y glibc-locale net-tools net-tools-deprecated python-xml python3-pip - - systemctl enable sshd.service + - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com + - sh bootstrap-salt.sh -XdPbfrq -x python3 git master run_command: /usr/lib/systemd/systemd - provisioner: - salt_bootstrap_options: -XdPfrq -x python3 git develop - salt_install: bootstrap - # Workaround to avoid intermittent failures on `opensuse-leap-15`: + # Workaround to avoid intermittent failures on `opensuse-leap-15.1`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 - - name: amazonlinux-2-develop-py2 + - name: amazonlinux-2-master-py2 driver: - image: netmanagers/salt-develop-py2:amazonlinux-2 + image: netmanagers/salt-master-py2:amazonlinux-2 provision_command: - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python2 git develop - - name: arch-base-latest-develop-py2 + - sh bootstrap-salt.sh -XdPbfrq -x python2 git master + - name: arch-base-latest-master-py2 driver: - image: netmanagers/salt-develop-py2:arch-base-latest + image: netmanagers/salt-master-py2:arch-base-latest provision_command: - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python2 git develop + - sh bootstrap-salt.sh -XdPbfrq -x python2 git master run_command: /usr/lib/systemd/systemd ## SALT `2019.2` + - name: debian-10-2019-2-py3 + driver: + image: netmanagers/salt-2019.2-py3:debian-10 - name: debian-9-2019-2-py3 driver: image: netmanagers/salt-2019.2-py3:debian-9 - name: ubuntu-1804-2019-2-py3 driver: image: netmanagers/salt-2019.2-py3:ubuntu-18.04 - - name: centos-7-2019-2-py3 + - name: centos-8-2019-2-py3 driver: - image: netmanagers/salt-2019.2-py3:centos-7 - - name: fedora-30-2019-2-py3 + image: netmanagers/salt-2019.2-py3:centos-8 + - name: fedora-31-2019-2-py3 driver: - image: netmanagers/salt-2019.2-py3:fedora-30 - - name: opensuse-leap-15-2019-2-py3 + image: netmanagers/salt-2019.2-py3:fedora-31 + - name: opensuse-leap-151-2019-2-py3 driver: - image: opensuse/leap:15 - provision_command: - # yamllint disable-line rule:line-length - - zypper install -y glibc-locale net-tools net-tools-deprecated python-xml python3-pip - - systemctl enable sshd.service + image: netmanagers/salt-2019.2-py3:opensuse-leap-15.1 run_command: /usr/lib/systemd/systemd - provisioner: - salt_bootstrap_options: -XdPfrq -x python3 git 2019.2 - salt_install: bootstrap - # Workaround to avoid intermittent failures on `opensuse-leap-15`: + # Workaround to avoid intermittent failures on `opensuse-leap-15.1`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 + - name: centos-7-2019-2-py2 + driver: + image: netmanagers/salt-2019.2-py2:centos-7 - name: amazonlinux-2-2019-2-py2 driver: image: netmanagers/salt-2019.2-py2:amazonlinux-2 @@ -102,6 +97,9 @@ platforms: run_command: /usr/lib/systemd/systemd ## SALT `2018.3` + - name: fedora-30-2018-3-py3 + driver: + image: netmanagers/salt-2018.3-py3:fedora-30 - name: debian-9-2018-3-py2 driver: image: netmanagers/salt-2018.3-py2:debian-9 @@ -111,21 +109,11 @@ platforms: - name: centos-7-2018-3-py2 driver: image: netmanagers/salt-2018.3-py2:centos-7 - - name: fedora-29-2018-3-py2 - driver: - image: netmanagers/salt-2018.3-py2:fedora-29 - - name: opensuse-leap-15-2018-3-py2 + - name: opensuse-leap-151-2018-3-py2 driver: - image: opensuse/leap:15 - provision_command: - # yamllint disable-line rule:line-length - - zypper install -y glibc-locale net-tools net-tools-deprecated python-xml python2-pip - - systemctl enable sshd.service + image: netmanagers/salt-2018.3-py2:opensuse-leap-15.1 run_command: /usr/lib/systemd/systemd - provisioner: - salt_bootstrap_options: -XdPfrq -x python2 git 2018.3 - salt_install: bootstrap - # Workaround to avoid intermittent failures on `opensuse-leap-15`: + # Workaround to avoid intermittent failures on `opensuse-leap-15.1`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 @@ -148,21 +136,14 @@ platforms: driver: image: netmanagers/salt-2017.7-py2:centos-6 run_command: /sbin/init - - name: fedora-29-2017-7-py2 + - name: fedora-30-2017-7-py2 driver: - image: netmanagers/salt-2017.7-py2:fedora-29 - - name: opensuse-leap-15-2017-7-py2 + image: netmanagers/salt-2017.7-py2:fedora-30 + - name: opensuse-leap-151-2017-7-py2 driver: - image: opensuse/leap:15 - provision_command: - # yamllint disable-line rule:line-length - - zypper install -y glibc-locale net-tools net-tools-deprecated python-xml python2-pip - - systemctl enable sshd.service + image: netmanagers/salt-2017.7-py2:opensuse-leap-15.1 run_command: /usr/lib/systemd/systemd - provisioner: - salt_bootstrap_options: -XdPfrq -x python2 git 2017.7 - salt_install: bootstrap - # Workaround to avoid intermittent failures on `opensuse-leap-15`: + # Workaround to avoid intermittent failures on `opensuse-leap-15.1`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 From 01ece3dba8e581b15da1087c58b484b56177f0de Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Thu, 31 Oct 2019 10:35:36 +0000 Subject: [PATCH 36/51] fix(release.config.js): use full commit hash in commit link [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/89 --- .travis.yml | 10 +++++----- release.config.js | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index c7b911e4..1ef2c887 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,8 +43,8 @@ jobs: - gem install rubocop - rubocop -d # Install and run `commitlint` - - npm install @commitlint/config-conventional -D - - npm install @commitlint/travis-cli -D + - npm i -D @commitlint/config-conventional + @commitlint/travis-cli - commitlint-travis ## Define the rest of the matrix based on Kitchen testing @@ -95,9 +95,9 @@ jobs: - maintainer contributor # Install all dependencies required for `semantic-release` - - npm install @semantic-release/changelog@3 -D - - npm install @semantic-release/exec@3 -D - - npm install @semantic-release/git@7 -D + - npm i -D @semantic-release/changelog@3 + @semantic-release/exec@3 + @semantic-release/git@7 deploy: provider: script skip_cleanup: true diff --git a/release.config.js b/release.config.js index afa0cb11..6af7aa8f 100644 --- a/release.config.js +++ b/release.config.js @@ -63,7 +63,7 @@ module.exports = { } if (typeof commit.hash === `string`) { - commit.hash = commit.hash.substring(0, 7) + commit.shortHash = commit.hash.substring(0, 7) } if (typeof commit.subject === `string`) { From 18fa79879dbb37c90c45c836018126dfbd61f5e2 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Sat, 2 Nov 2019 08:43:23 +0000 Subject: [PATCH 37/51] perf(travis): improve `salt-lint` invocation [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/90 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1ef2c887..08899785 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,7 +34,7 @@ jobs: # Install and run `salt-lint` - pip install --user salt-lint - git ls-files | grep '\.sls$\|\.jinja$\|\.j2$\|\.tmpl$\|\.tst$' - | xargs -I {} salt-lint {} + | xargs salt-lint # Install and run `yamllint` # Need at least `v1.17.0` for the `yaml-files` setting - pip install --user yamllint>=1.17.0 From 71c5bcb0aead53192ec4bb9f560ed312c80af1f6 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Sun, 3 Nov 2019 11:41:23 +0000 Subject: [PATCH 38/51] ci(kitchen): use `develop` image until `master` is ready (`amazonlinux`) [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/93 --- kitchen.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kitchen.yml b/kitchen.yml index 4025ed50..1ee81f3e 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -47,12 +47,14 @@ platforms: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 + # Use the `develop` image temporarily until the `master` image is available + # Not changing the name to minimise disruption across all of the formulas - name: amazonlinux-2-master-py2 driver: - image: netmanagers/salt-master-py2:amazonlinux-2 + image: netmanagers/salt-develop-py2:amazonlinux-2 provision_command: - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python2 git master + - sh bootstrap-salt.sh -XdPbfrq -x python2 git develop - name: arch-base-latest-master-py2 driver: image: netmanagers/salt-master-py2:arch-base-latest From fe184e95123ad90c2a38515a50118f5ab82cac1b Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 13 Nov 2019 19:36:19 +0000 Subject: [PATCH 39/51] ci(travis): use build config validation (beta) [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/97 --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 08899785..a69eeb3a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ --- ## Machine config dist: bionic +version: '~> 1.0' sudo: required services: - docker From f0a07fc7c03107b21dd9f7161972b084893f19ee Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Sat, 16 Nov 2019 20:10:39 +0000 Subject: [PATCH 40/51] ci(travis): apply changes from build config validation [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/98 --- .travis.yml | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/.travis.yml b/.travis.yml index a69eeb3a..116f2606 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,15 +2,18 @@ # vim: ft=yaml --- ## Machine config -dist: bionic +os: 'linux' +arch: 'amd64' +dist: 'bionic' version: '~> 1.0' -sudo: required -services: - - docker ## Language and cache config -language: ruby -cache: bundler +language: 'ruby' +cache: 'bundler' + +## Services config +services: + - docker ## Script to run for the test stage script: @@ -19,18 +22,18 @@ script: ## Stages and jobs matrix stages: - test - - name: release - if: branch = master AND type != pull_request + - name: 'release' + if: 'branch = master AND type != pull_request' jobs: include: ## Define the test stage that runs the linters (and testing matrix, if applicable) # Run all of the linters in a single job - - language: node_js - node_js: lts/* - env: Lint + - language: 'node_js' + node_js: 'lts/*' + env: 'Lint' name: 'Lint: salt-lint, yamllint, rubocop & commitlint' - before_install: skip + before_install: 'skip' script: # Install and run `salt-lint` - pip install --user salt-lint @@ -83,12 +86,12 @@ jobs: # - env: INSTANCE=default-arch-base-latest-2017-7-py2 ## Define the release stage that runs `semantic-release` - - stage: release - language: node_js - node_js: lts/* - env: Release + - stage: 'release' + language: 'node_js' + node_js: 'lts/*' + env: 'Release' name: 'Run semantic-release inc. file updates to AUTHORS, CHANGELOG & FORMULA' - before_install: skip + before_install: 'skip' script: # Update `AUTHORS.md` - export MAINTAINER_TOKEN=${GH_TOKEN} @@ -100,8 +103,9 @@ jobs: @semantic-release/exec@3 @semantic-release/git@7 deploy: - provider: script + provider: 'script' + # Using deprecated `skip_cleanup` until `cleanup: false` works reliably + # cleanup: false skip_cleanup: true - script: - # Run `semantic-release` - - npx semantic-release@15 + # Run `semantic-release` + script: 'npx semantic-release@15' From 340556e081780d890db064dc84d7fdd177e55d93 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 20 Nov 2019 16:37:27 +0000 Subject: [PATCH 41/51] ci(travis): opt-in to `dpl v2` to complete build config validation [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/100 --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 116f2606..f0252d8e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -104,8 +104,9 @@ jobs: @semantic-release/git@7 deploy: provider: 'script' - # Using deprecated `skip_cleanup` until `cleanup: false` works reliably - # cleanup: false - skip_cleanup: true + # Opt-in to `dpl v2` to complete the Travis build config validation (beta) + # * https://docs.travis-ci.com/user/build-config-validation + # Deprecated `skip_cleanup` can now be avoided, `cleanup: false` is by default + edge: true # Run `semantic-release` script: 'npx semantic-release@15' From ba127a08113bf43f3bbb7691d1bc670e659e4c45 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 27 Nov 2019 21:05:35 +0000 Subject: [PATCH 42/51] ci(travis): run `shellcheck` during lint job [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/106 --- .travis.yml | 10 +++++++--- pre-commit_semantic-release.sh | 6 +++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index f0252d8e..688469b7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,13 +32,13 @@ jobs: - language: 'node_js' node_js: 'lts/*' env: 'Lint' - name: 'Lint: salt-lint, yamllint, rubocop & commitlint' + name: 'Lint: salt-lint, yamllint, rubocop, shellcheck & commitlint' before_install: 'skip' script: # Install and run `salt-lint` - pip install --user salt-lint - - git ls-files | grep '\.sls$\|\.jinja$\|\.j2$\|\.tmpl$\|\.tst$' - | xargs salt-lint + - git ls-files -- *.sls *.jinja *.j2 *.tmpl *.tst + | xargs salt-lint # Install and run `yamllint` # Need at least `v1.17.0` for the `yaml-files` setting - pip install --user yamllint>=1.17.0 @@ -46,6 +46,10 @@ jobs: # Install and run `rubocop` - gem install rubocop - rubocop -d + # Run `shellcheck` (already pre-installed in Travis) + - shellcheck --version + - git ls-files -- *.sh *.bash *.ksh + | xargs shellcheck # Install and run `commitlint` - npm i -D @commitlint/config-conventional @commitlint/travis-cli diff --git a/pre-commit_semantic-release.sh b/pre-commit_semantic-release.sh index 9d34d74c..ba805352 100755 --- a/pre-commit_semantic-release.sh +++ b/pre-commit_semantic-release.sh @@ -14,9 +14,9 @@ sed -i -e "s_^\(version:\).*_\1 ${1}_" FORMULA sudo -H pip install m2r # Copy and then convert the `.md` docs -cp *.md docs/ -cd docs/ -m2r --overwrite *.md +cp ./*.md docs/ +cd docs/ || exit +m2r --overwrite ./*.md # Change excess `H1` headings to `H2` in converted `CHANGELOG.rst` sed -i -e '/^=.*$/s/=/-/g' CHANGELOG.rst From 12bf914e2468ce8b09f172c12c5df8aa4b7175e5 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 27 Nov 2019 22:03:27 +0000 Subject: [PATCH 43/51] ci(travis): quote pathspecs used with `git ls-files` [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/107 --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 688469b7..ed04db4a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ jobs: script: # Install and run `salt-lint` - pip install --user salt-lint - - git ls-files -- *.sls *.jinja *.j2 *.tmpl *.tst + - git ls-files -- '*.sls' '*.jinja' '*.j2' '*.tmpl' '*.tst' | xargs salt-lint # Install and run `yamllint` # Need at least `v1.17.0` for the `yaml-files` setting @@ -48,7 +48,7 @@ jobs: - rubocop -d # Run `shellcheck` (already pre-installed in Travis) - shellcheck --version - - git ls-files -- *.sh *.bash *.ksh + - git ls-files -- '*.sh' '*.bash' '*.ksh' | xargs shellcheck # Install and run `commitlint` - npm i -D @commitlint/config-conventional From 734d4e3a884253ecc0f37493b0af6cf2398dbac0 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Mon, 16 Dec 2019 13:38:56 +0000 Subject: [PATCH 44/51] ci(gemfile): restrict `train` gem version until upstream fix [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/110 --- Gemfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Gemfile b/Gemfile index 5a232b61..8da7a69a 100644 --- a/Gemfile +++ b/Gemfile @@ -5,3 +5,7 @@ source 'https://rubygems.org' gem 'kitchen-docker', '>= 2.9' gem 'kitchen-inspec', '>= 1.1' gem 'kitchen-salt', '>= 0.6.0' +# Latest versions of `train` cause failure when running `kitchen verify` +# Downgrading to `3.2.0` until this is fixed upstream +# https://github.com/inspec/train/pull/544#issuecomment-566055052 +gem 'train', '3.2.0' From 2590d61eeadb82ae420db450f3885b95a77be52c Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Sun, 22 Dec 2019 00:55:53 +0000 Subject: [PATCH 45/51] ci(travis): use `major.minor` for `semantic-release` version [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/112 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ed04db4a..dfb2d7e7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -113,4 +113,4 @@ jobs: # Deprecated `skip_cleanup` can now be avoided, `cleanup: false` is by default edge: true # Run `semantic-release` - script: 'npx semantic-release@15' + script: 'npx semantic-release@15.14' From cc10d97ee0a8f85f8d94f6ec4b1918c906338afd Mon Sep 17 00:00:00 2001 From: Chad Bean Date: Thu, 16 Jan 2020 09:20:29 -0500 Subject: [PATCH 46/51] feat: support optional container removal before start in upstart/systemd --- docker/files/service_file.jinja | 3 ++- docker/files/systemd.conf | 4 ++++ docker/files/upstart.conf | 7 +++++++ pillar.example | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/docker/files/service_file.jinja b/docker/files/service_file.jinja index cc5b8136..c30c0318 100644 --- a/docker/files/service_file.jinja +++ b/docker/files/service_file.jinja @@ -8,6 +8,7 @@ {%- set stopoptions = stopoptions|join(' ') %} {%- set args = args|join(' ') %} +{%- set docker_prestart_remove_command = "rm -f %s"|format(name) %} {%- set docker_start_command = "run %s --name=%s %s %s %s"|format(runoptions, name, container.image, cmd, args) %} {%- set docker_stop_command = "stop %s %s"|format(stopoptions, name) %} {%- set docker_poststop_command = "rm -f %s"|format(name) %} @@ -16,4 +17,4 @@ {%- include 'docker/files/systemd.conf' %} {%- elif grains['init'] == 'upstart' %} {%- include 'docker/files/upstart.conf' %} -{%- endif %} \ No newline at end of file +{%- endif %} diff --git a/docker/files/systemd.conf b/docker/files/systemd.conf index 7ee89449..587ebae1 100644 --- a/docker/files/systemd.conf +++ b/docker/files/systemd.conf @@ -5,6 +5,7 @@ After=docker.service {%- set remove_on_stop = container.get("remove_on_stop", False) %} {%- set pull_before_start = container.get("pull_before_start") or False %} +{%- set remove_before_start = container.get("remove_before_start") or False %} [Service] Restart=always @@ -12,6 +13,9 @@ Restart=always ExecStartPre=/usr/bin/docker pull {{ container.image }} {%- endif %} +{%- if remove_before_start %} +ExecStartPre=-/usr/bin/docker {{ docker_prestart_remove_command }} +{%- endif %} ExecStart=/usr/bin/docker {{ docker_start_command }} ExecStop=/usr/bin/docker {{ docker_stop_command }} {%- if remove_on_stop %} diff --git a/docker/files/upstart.conf b/docker/files/upstart.conf index a5da4474..a879ab44 100644 --- a/docker/files/upstart.conf +++ b/docker/files/upstart.conf @@ -11,6 +11,7 @@ respawn {%- set cmd = container.get("cmd", "") %} {%- set pull_before_start = container.get("pull_before_start") or False %} +{%- set remove_before_start = container.get("remove_before_start") or False %} {%- if pull_before_start %} pre-start script @@ -18,6 +19,12 @@ pre-start script end script {%- endif %} +{%- if remove_before_start %} +pre-start script + /usr/bin/docker rm -f {{ name }} +end script +{%- endif %} + script exec docker {{ docker_start_command }} end script diff --git a/pillar.example b/pillar.example index 6dd30c2b..a26b48d1 100644 --- a/pillar.example +++ b/pillar.example @@ -14,6 +14,8 @@ docker-containers: # Pull image on service restart # (useful if you override the same tag. example: latest) pull_before_start: true + # Remove container on service start + remove_before_start: false # Do not force container removal on stop (unless true) remove_on_stop: false runoptions: @@ -38,6 +40,8 @@ docker-containers: # Pull image on service restart # (useful if you override the same tag. example: latest) pull_before_start: true + # Remove container on service start + remove_before_start: false # Do not force container removal on stop (unless true) remove_on_stop: false runoptions: From 15c803d902b2301244ae89290b4f07e21480b10e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 22 Jan 2020 14:51:02 +0000 Subject: [PATCH 47/51] chore(release): 0.43.0 [skip ci] # [0.43.0](https://github.com/saltstack-formulas/docker-formula/compare/v0.42.0...v0.43.0) (2020-01-22) ### Bug Fixes * **release.config.js:** use full commit hash in commit link [skip ci] ([01ece3d](https://github.com/saltstack-formulas/docker-formula/commit/01ece3dba8e581b15da1087c58b484b56177f0de)) ### Continuous Integration * **gemfile:** restrict `train` gem version until upstream fix [skip ci] ([734d4e3](https://github.com/saltstack-formulas/docker-formula/commit/734d4e3a884253ecc0f37493b0af6cf2398dbac0)) * **kitchen:** use `debian-10-master-py3` instead of `develop` [skip ci] ([d87e787](https://github.com/saltstack-formulas/docker-formula/commit/d87e7871989b56293b577976c122c6c7095d61e3)) * **kitchen:** use `develop` image until `master` is ready (`amazonlinux`) [skip ci] ([71c5bcb](https://github.com/saltstack-formulas/docker-formula/commit/71c5bcb0aead53192ec4bb9f560ed312c80af1f6)) * **kitchen+travis:** upgrade matrix after `2019.2.2` release [skip ci] ([2189efb](https://github.com/saltstack-formulas/docker-formula/commit/2189efbc8af5fa6a529acbe3410b62558132a044)) * **travis:** apply changes from build config validation [skip ci] ([f0a07fc](https://github.com/saltstack-formulas/docker-formula/commit/f0a07fc7c03107b21dd9f7161972b084893f19ee)) * **travis:** opt-in to `dpl v2` to complete build config validation [skip ci] ([340556e](https://github.com/saltstack-formulas/docker-formula/commit/340556e081780d890db064dc84d7fdd177e55d93)) * **travis:** quote pathspecs used with `git ls-files` [skip ci] ([12bf914](https://github.com/saltstack-formulas/docker-formula/commit/12bf914e2468ce8b09f172c12c5df8aa4b7175e5)) * **travis:** run `shellcheck` during lint job [skip ci] ([ba127a0](https://github.com/saltstack-formulas/docker-formula/commit/ba127a08113bf43f3bbb7691d1bc670e659e4c45)) * **travis:** use `major.minor` for `semantic-release` version [skip ci] ([2590d61](https://github.com/saltstack-formulas/docker-formula/commit/2590d61eeadb82ae420db450f3885b95a77be52c)) * **travis:** use build config validation (beta) [skip ci] ([fe184e9](https://github.com/saltstack-formulas/docker-formula/commit/fe184e95123ad90c2a38515a50118f5ab82cac1b)) ### Features * support optional container removal before start in upstart/systemd ([cc10d97](https://github.com/saltstack-formulas/docker-formula/commit/cc10d97ee0a8f85f8d94f6ec4b1918c906338afd)) ### Performance Improvements * **travis:** improve `salt-lint` invocation [skip ci] ([18fa798](https://github.com/saltstack-formulas/docker-formula/commit/18fa79879dbb37c90c45c836018126dfbd61f5e2)) --- AUTHORS.md | 5 +++-- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ FORMULA | 2 +- docs/AUTHORS.rst | 11 +++++++---- docs/CHANGELOG.rst | 36 ++++++++++++++++++++++++++++++++++++ 5 files changed, 78 insertions(+), 7 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 4f442c80..283baf57 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -6,12 +6,12 @@ Avatar|Contributor|Contributions :-:|---|:-: @noelmcloughlin|[@noelmcloughlin](https://github.com/noelmcloughlin)|86 @cdarwin|[@cdarwin](https://github.com/cdarwin)|25 +@myii|[@myii](https://github.com/myii)|25 @gravyboat|[@gravyboat](https://github.com/gravyboat)|22 @aboe76|[@aboe76](https://github.com/aboe76)|21 @javierbertoli|[@javierbertoli](https://github.com/javierbertoli)|18 @puneetk|[@puneetk](https://github.com/puneetk)|15 @vladvasiliu|[@vladvasiliu](https://github.com/vladvasiliu)|12 -@myii|[@myii](https://github.com/myii)|12 @nmadhok|[@nmadhok](https://github.com/nmadhok)|9 @ticosax|[@ticosax](https://github.com/ticosax)|7 @alexproca|[@alexproca](https://github.com/alexproca)|6 @@ -33,6 +33,7 @@ Avatar|Contributor|Contributions @alinefr|[@alinefr](https://github.com/alinefr)|1 @ernstae|[@ernstae](https://github.com/ernstae)|1 @iggy|[@iggy](https://github.com/iggy)|1 +@solarchad|[@solarchad](https://github.com/solarchad)|1 @blueyed|[@blueyed](https://github.com/blueyed)|1 @comozo|[@comozo](https://github.com/comozo)|1 @JohnMaguire|[@JohnMaguire](https://github.com/JohnMaguire)|1 @@ -56,4 +57,4 @@ Avatar|Contributor|Contributions --- -Auto-generated by a [forked version](https://github.com/myii/maintainer) of [gaocegege/maintainer](https://github.com/gaocegege/maintainer) on 2019-10-23. +Auto-generated by a [forked version](https://github.com/myii/maintainer) of [gaocegege/maintainer](https://github.com/gaocegege/maintainer) on 2020-01-22. diff --git a/CHANGELOG.md b/CHANGELOG.md index c25a215d..a7a9c488 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +# [0.43.0](https://github.com/saltstack-formulas/docker-formula/compare/v0.42.0...v0.43.0) (2020-01-22) + + +### Bug Fixes + +* **release.config.js:** use full commit hash in commit link [skip ci] ([01ece3d](https://github.com/saltstack-formulas/docker-formula/commit/01ece3dba8e581b15da1087c58b484b56177f0de)) + + +### Continuous Integration + +* **gemfile:** restrict `train` gem version until upstream fix [skip ci] ([734d4e3](https://github.com/saltstack-formulas/docker-formula/commit/734d4e3a884253ecc0f37493b0af6cf2398dbac0)) +* **kitchen:** use `debian-10-master-py3` instead of `develop` [skip ci] ([d87e787](https://github.com/saltstack-formulas/docker-formula/commit/d87e7871989b56293b577976c122c6c7095d61e3)) +* **kitchen:** use `develop` image until `master` is ready (`amazonlinux`) [skip ci] ([71c5bcb](https://github.com/saltstack-formulas/docker-formula/commit/71c5bcb0aead53192ec4bb9f560ed312c80af1f6)) +* **kitchen+travis:** upgrade matrix after `2019.2.2` release [skip ci] ([2189efb](https://github.com/saltstack-formulas/docker-formula/commit/2189efbc8af5fa6a529acbe3410b62558132a044)) +* **travis:** apply changes from build config validation [skip ci] ([f0a07fc](https://github.com/saltstack-formulas/docker-formula/commit/f0a07fc7c03107b21dd9f7161972b084893f19ee)) +* **travis:** opt-in to `dpl v2` to complete build config validation [skip ci] ([340556e](https://github.com/saltstack-formulas/docker-formula/commit/340556e081780d890db064dc84d7fdd177e55d93)) +* **travis:** quote pathspecs used with `git ls-files` [skip ci] ([12bf914](https://github.com/saltstack-formulas/docker-formula/commit/12bf914e2468ce8b09f172c12c5df8aa4b7175e5)) +* **travis:** run `shellcheck` during lint job [skip ci] ([ba127a0](https://github.com/saltstack-formulas/docker-formula/commit/ba127a08113bf43f3bbb7691d1bc670e659e4c45)) +* **travis:** use `major.minor` for `semantic-release` version [skip ci] ([2590d61](https://github.com/saltstack-formulas/docker-formula/commit/2590d61eeadb82ae420db450f3885b95a77be52c)) +* **travis:** use build config validation (beta) [skip ci] ([fe184e9](https://github.com/saltstack-formulas/docker-formula/commit/fe184e95123ad90c2a38515a50118f5ab82cac1b)) + + +### Features + +* support optional container removal before start in upstart/systemd ([cc10d97](https://github.com/saltstack-formulas/docker-formula/commit/cc10d97ee0a8f85f8d94f6ec4b1918c906338afd)) + + +### Performance Improvements + +* **travis:** improve `salt-lint` invocation [skip ci] ([18fa798](https://github.com/saltstack-formulas/docker-formula/commit/18fa79879dbb37c90c45c836018126dfbd61f5e2)) + # [0.42.0](https://github.com/saltstack-formulas/docker-formula/compare/v0.41.0...v0.42.0) (2019-10-23) diff --git a/FORMULA b/FORMULA index 02322702..16dcb81f 100644 --- a/FORMULA +++ b/FORMULA @@ -1,7 +1,7 @@ name: docker os: Debian, Ubuntu, Raspbian, RedHat, Fedora, CentOS, Suse, openSUSE, Gentoo, Funtoo, Arch, Manjaro, Alpine, FreeBSD, OpenBSD, Solaris, SmartOS, Windows, MacOS os_family: Debian, RedHat, Suse, Gentoo, Arch, Alpine, FreeBSD, OpenBSD, Solaris, Windows, MacOS -version: 0.42.0 +version: 0.43.0 release: 1 minimum_version: 2017.7 summary: docker formula diff --git a/docs/AUTHORS.rst b/docs/AUTHORS.rst index 751c1216..3a529bf6 100644 --- a/docs/AUTHORS.rst +++ b/docs/AUTHORS.rst @@ -19,6 +19,9 @@ This list is sorted by the number of commits per contributor in *descending* ord * - :raw-html-m2r:`@cdarwin` - `@cdarwin `_ - 25 + * - :raw-html-m2r:`@myii` + - `@myii `_ + - 25 * - :raw-html-m2r:`@gravyboat` - `@gravyboat `_ - 22 @@ -34,9 +37,6 @@ This list is sorted by the number of commits per contributor in *descending* ord * - :raw-html-m2r:`@vladvasiliu` - `@vladvasiliu `_ - 12 - * - :raw-html-m2r:`@myii` - - `@myii `_ - - 12 * - :raw-html-m2r:`@nmadhok` - `@nmadhok `_ - 9 @@ -100,6 +100,9 @@ This list is sorted by the number of commits per contributor in *descending* ord * - :raw-html-m2r:`@iggy` - `@iggy `_ - 1 + * - :raw-html-m2r:`@solarchad` + - `@solarchad `_ + - 1 * - :raw-html-m2r:`@blueyed` - `@blueyed `_ - 1 @@ -164,4 +167,4 @@ This list is sorted by the number of commits per contributor in *descending* ord ---- -Auto-generated by a `forked version `_ of `gaocegege/maintainer `_ on 2019-10-23. +Auto-generated by a `forked version `_ of `gaocegege/maintainer `_ on 2020-01-22. diff --git a/docs/CHANGELOG.rst b/docs/CHANGELOG.rst index f51d5ae3..8def36ca 100644 --- a/docs/CHANGELOG.rst +++ b/docs/CHANGELOG.rst @@ -2,6 +2,42 @@ Changelog ========= +`0.43.0 `_ (2020-01-22) +----------------------------------------------------------------------------------------------------------- + +Bug Fixes +^^^^^^^^^ + + +* **release.config.js:** use full commit hash in commit link [skip ci] (\ `01ece3d `_\ ) + +Continuous Integration +^^^^^^^^^^^^^^^^^^^^^^ + + +* **gemfile:** restrict ``train`` gem version until upstream fix [skip ci] (\ `734d4e3 `_\ ) +* **kitchen:** use ``debian-10-master-py3`` instead of ``develop`` [skip ci] (\ `d87e787 `_\ ) +* **kitchen:** use ``develop`` image until ``master`` is ready (\ ``amazonlinux``\ ) [skip ci] (\ `71c5bcb `_\ ) +* **kitchen+travis:** upgrade matrix after ``2019.2.2`` release [skip ci] (\ `2189efb `_\ ) +* **travis:** apply changes from build config validation [skip ci] (\ `f0a07fc `_\ ) +* **travis:** opt-in to ``dpl v2`` to complete build config validation [skip ci] (\ `340556e `_\ ) +* **travis:** quote pathspecs used with ``git ls-files`` [skip ci] (\ `12bf914 `_\ ) +* **travis:** run ``shellcheck`` during lint job [skip ci] (\ `ba127a0 `_\ ) +* **travis:** use ``major.minor`` for ``semantic-release`` version [skip ci] (\ `2590d61 `_\ ) +* **travis:** use build config validation (beta) [skip ci] (\ `fe184e9 `_\ ) + +Features +^^^^^^^^ + + +* support optional container removal before start in upstart/systemd (\ `cc10d97 `_\ ) + +Performance Improvements +^^^^^^^^^^^^^^^^^^^^^^^^ + + +* **travis:** improve ``salt-lint`` invocation [skip ci] (\ `18fa798 `_\ ) + `0.42.0 `_ (2019-10-23) ----------------------------------------------------------------------------------------------------------- From 80a2a985e96b2d7c9867660f15a5e7a9808ee156 Mon Sep 17 00:00:00 2001 From: Chad Bean Date: Wed, 22 Jan 2020 10:34:43 -0500 Subject: [PATCH 48/51] fix: avoid setting multiple pre-start stanzas in upstart --- docker/files/upstart.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/files/upstart.conf b/docker/files/upstart.conf index a879ab44..defd6868 100644 --- a/docker/files/upstart.conf +++ b/docker/files/upstart.conf @@ -13,15 +13,15 @@ respawn {%- set pull_before_start = container.get("pull_before_start") or False %} {%- set remove_before_start = container.get("remove_before_start") or False %} -{%- if pull_before_start %} +{%- if pull_before_start or remove_before_start -%} pre-start script +{%- if pull_before_start %} /usr/bin/docker pull {{ container.image }} -end script {%- endif %} {%- if remove_before_start %} -pre-start script /usr/bin/docker rm -f {{ name }} +{%- endif %} end script {%- endif %} From 27b509e696e06b9ea244170608f348f841ebb36c Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Wed, 5 Feb 2020 14:03:26 +0000 Subject: [PATCH 49/51] ci(kitchen): avoid using bootstrap for `master` instances [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/124 --- .travis.yml | 8 ++++---- kitchen.yml | 43 +++++++++++-------------------------------- 2 files changed, 15 insertions(+), 36 deletions(-) diff --git a/.travis.yml b/.travis.yml index dfb2d7e7..19e40baf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,7 +63,7 @@ jobs: # - env: INSTANCE=default-centos-8-master-py3 # - env: INSTANCE=default-fedora-31-master-py3 # - env: INSTANCE=default-opensuse-leap-151-master-py3 - # - env: INSTANCE=default-amazonlinux-2-master-py2 + # - env: INSTANCE=default-amazonlinux-2-master-py3 # - env: INSTANCE=default-arch-base-latest-master-py2 # - env: INSTANCE=default-debian-10-2019-2-py3 - env: INSTANCE=default-debian-9-2019-2-py3 @@ -72,21 +72,21 @@ jobs: # - env: INSTANCE=default-fedora-31-2019-2-py3 # - env: INSTANCE=default-opensuse-leap-151-2019-2-py3 # - env: INSTANCE=default-centos-7-2019-2-py2 - # - env: INSTANCE=default-amazonlinux-2-2019-2-py2 + # - env: INSTANCE=default-amazonlinux-2-2019-2-py3 - env: INSTANCE=default-arch-base-latest-2019-2-py2 # - env: INSTANCE=default-fedora-30-2018-3-py3 - env: INSTANCE=default-debian-9-2018-3-py2 # - env: INSTANCE=default-ubuntu-1604-2018-3-py2 # - env: INSTANCE=default-centos-7-2018-3-py2 # - env: INSTANCE=default-opensuse-leap-151-2018-3-py2 - # - env: INSTANCE=default-amazonlinux-2-2018-3-py2 + # - env: INSTANCE=default-amazonlinux-1-2018-3-py2 # - env: INSTANCE=default-arch-base-latest-2018-3-py2 # - env: INSTANCE=default-debian-8-2017-7-py2 - env: INSTANCE=default-ubuntu-1604-2017-7-py2 # - env: INSTANCE=default-centos-6-2017-7-py2 # - env: INSTANCE=default-fedora-30-2017-7-py2 # - env: INSTANCE=default-opensuse-leap-151-2017-7-py2 - # - env: INSTANCE=default-amazonlinux-2-2017-7-py2 + # - env: INSTANCE=default-amazonlinux-1-2017-7-py2 # - env: INSTANCE=default-arch-base-latest-2017-7-py2 ## Define the release stage that runs `semantic-release` diff --git a/kitchen.yml b/kitchen.yml index 1ee81f3e..dd30b132 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -15,52 +15,29 @@ platforms: - name: debian-10-master-py3 driver: image: netmanagers/salt-master-py3:debian-10 - provision_command: - - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git master - name: ubuntu-1804-master-py3 driver: image: netmanagers/salt-master-py3:ubuntu-18.04 - provision_command: - - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git master - name: centos-8-master-py3 driver: image: netmanagers/salt-master-py3:centos-8 - provision_command: - - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git master - name: fedora-31-master-py3 driver: image: netmanagers/salt-master-py3:fedora-31 - provision_command: - - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git master - name: opensuse-leap-151-master-py3 driver: image: netmanagers/salt-master-py3:opensuse-leap-15.1 - provision_command: - - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python3 git master run_command: /usr/lib/systemd/systemd # Workaround to avoid intermittent failures on `opensuse-leap-15.1`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 - # Use the `develop` image temporarily until the `master` image is available - # Not changing the name to minimise disruption across all of the formulas - - name: amazonlinux-2-master-py2 - driver: - image: netmanagers/salt-develop-py2:amazonlinux-2 - provision_command: - - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python2 git develop + - name: amazonlinux-2-master-py3 + driver: + image: netmanagers/salt-master-py3:amazonlinux-2 - name: arch-base-latest-master-py2 driver: image: netmanagers/salt-master-py2:arch-base-latest - provision_command: - - curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com - - sh bootstrap-salt.sh -XdPbfrq -x python2 git master run_command: /usr/lib/systemd/systemd ## SALT `2019.2` @@ -90,9 +67,9 @@ platforms: - name: centos-7-2019-2-py2 driver: image: netmanagers/salt-2019.2-py2:centos-7 - - name: amazonlinux-2-2019-2-py2 + - name: amazonlinux-2-2019-2-py3 driver: - image: netmanagers/salt-2019.2-py2:amazonlinux-2 + image: netmanagers/salt-2019.2-py3:amazonlinux-2 - name: arch-base-latest-2019-2-py2 driver: image: netmanagers/salt-2019.2-py2:arch-base-latest @@ -119,9 +96,10 @@ platforms: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 - - name: amazonlinux-2-2018-3-py2 + - name: amazonlinux-1-2018-3-py2 driver: - image: netmanagers/salt-2018.3-py2:amazonlinux-2 + image: netmanagers/salt-2018.3-py2:amazonlinux-1 + run_command: /sbin/init - name: arch-base-latest-2018-3-py2 driver: image: netmanagers/salt-2018.3-py2:arch-base-latest @@ -149,9 +127,10 @@ platforms: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 - - name: amazonlinux-2-2017-7-py2 + - name: amazonlinux-1-2017-7-py2 driver: - image: netmanagers/salt-2017.7-py2:amazonlinux-2 + image: netmanagers/salt-2017.7-py2:amazonlinux-1 + run_command: /sbin/init - name: arch-base-latest-2017-7-py2 driver: image: netmanagers/salt-2017.7-py2:arch-base-latest From 7de17e25f1f7213ca5e181bb90d213cde898f3f9 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Fri, 14 Feb 2020 12:49:13 +0000 Subject: [PATCH 50/51] chore(rubocop): move `LineLength` cop from `Metrics` to `Layout` [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/129 --- .rubocop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.rubocop.yml b/.rubocop.yml index bdae9aa9..96fd6e53 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,7 +2,7 @@ # vim: ft=yaml --- # General overrides used across formulas in the org -Metrics/LineLength: +Layout/LineLength: # Increase from default of `80` # Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`) Max: 88 From c3c4eb8e7b0d56be19b155b5f40b12eba74918ce Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Fri, 14 Feb 2020 22:27:09 +0000 Subject: [PATCH 51/51] chore(gitignore): update from the `template-formula` [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/132 --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0bbb03cc..9436b367 100644 --- a/.gitignore +++ b/.gitignore @@ -105,6 +105,7 @@ ENV/ .mypy_cache/ # Bundler +.bundle/ Gemfile.lock # copied `.md` files used for conversion to `.rst` using `m2r`