Merge branch '18378-add-debian-11-platform'
authorJavier Bértoli <jbertoli@curii.com>
Tue, 21 Dec 2021 12:04:01 +0000 (09:04 -0300)
committerJavier Bértoli <jbertoli@curii.com>
Tue, 21 Dec 2021 12:04:01 +0000 (09:04 -0300)
refs #18378
Arvados-DCO-1.1-Signed-off-by: Javier Bértoli <jbertoli@curii.com>

14 files changed:
.gitlab-ci.yml
.licenseignore
.pre-commit-config.yaml [new file with mode: 0644]
.salt-lint
Gemfile
Gemfile.lock
bin/install-hooks [new file with mode: 0755]
bin/kitchen [new file with mode: 0755]
kitchen.yml
pillar.example
test/integration/repo/controls/repo_spec.rb
test/integration/shell/controls/packages_spec.rb
test/integration/shell/controls/repo_spec.rb
test/salt/pillar/examples/postgresql.sls

index 2d4b1fdf105f54f0cc05e8ea16457057744d5439..bd3fe29996dbab5685fd1267e2d0ccf461421b3f 100644 (file)
@@ -1,13 +1,17 @@
 # -*- coding: utf-8 -*-
 # vim: ft=yaml
+
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
 ---
 ###############################################################################
 # Define all YAML node anchors
 ###############################################################################
 .node_anchors:
   # `only` (also used for `except` where applicable)
-  only_branch_master_parent_repo: &only_branch_master_parent_repo
-    - 'master@saltstack-formulas/arvados-formula'
+  only_branch_main_parent_repo: &only_branch_main_parent_repo
+    - 'main@git.arvados.org/arvados-formula'
   # `stage`
   stage_lint: &stage_lint 'lint'
   stage_release: &stage_release 'release'
@@ -48,30 +52,32 @@ variables:
 ###############################################################################
 # `lint` stage: `commitlint`, `pre-commit` & `rubocop` (latest, failure allowed)
 ###############################################################################
-commitlint:
-  stage: *stage_lint
-  image: *image_commitlint
-  script:
-    # Add `upstream` remote to get access to `upstream/master`
-    - 'git remote add upstream
-       https://gitlab.com/saltstack-formulas/arvados-formula.git'
-    - 'git fetch --all'
-    # Set default commit hashes for `--from` and `--to`
-    - 'export COMMITLINT_FROM="$(git merge-base upstream/master HEAD)"'
-    - 'export COMMITLINT_TO="${CI_COMMIT_SHA}"'
-    # `coqbot` adds a merge commit to test PRs on top of the latest commit in
-    # the repo; amend this merge commit message to avoid failure
-    - |
-      if [ "${GITLAB_USER_LOGIN}" = "coqbot" ] \
-      && [ "${CI_COMMIT_BRANCH}" != "master" ]; then
-        git commit --amend -m \
-          'chore: reword coqbot merge commit message for commitlint'
-        export COMMITLINT_TO=HEAD
-      fi
-    # Run `commitlint`
-    - 'commitlint --from "${COMMITLINT_FROM}"
-                  --to   "${COMMITLINT_TO}"
-                  --verbose'
+# Disable commitlint because Arvados does not follow this standard, it has
+# its own, see https://dev.arvados.org/projects/arvados/wiki/Coding_Standards
+# commitlint:
+#   stage: *stage_lint
+#   image: *image_commitlint
+#   script:
+#     # Add `upstream` remote to get access to `upstream/main`
+#     - 'git remote add upstream
+#        https://git.arvados.org/arvados-formula.git'
+#     - 'git fetch --all'
+#     # Set default commit hashes for `--from` and `--to`
+#     - 'export COMMITLINT_FROM="$(git merge-base upstream/main HEAD)"'
+#     - 'export COMMITLINT_TO="${CI_COMMIT_SHA}"'
+#     # `coqbot` adds a merge commit to test PRs on top of the latest commit in
+#     # the repo; amend this merge commit message to avoid failure
+#     - |
+#       if [ "${GITLAB_USER_LOGIN}" = "coqbot" ] \
+#       && [ "${CI_COMMIT_BRANCH}" != "main" ]; then
+#         git commit --amend -m \
+#           'chore: reword coqbot merge commit message for commitlint'
+#         export COMMITLINT_TO=HEAD
+#       fi
+#     # Run `commitlint`
+#     - 'commitlint --from "${COMMITLINT_FROM}"
+#                   --to   "${COMMITLINT_TO}"
+#                   --verbose'
 
 pre-commit:
   stage: *stage_lint
@@ -123,102 +129,114 @@ rubocop:
 ## 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`
-# api-debian-10-tiamat-py3: {extends: '.test_instance'}
-# api-debian-9-tiamat-py3: {extends: '.test_instance'}
-# api-ubuntu-2004-tiamat-py3: {extends: '.test_instance'}
-# api-ubuntu-1804-tiamat-py3: {extends: '.test_instance'}
-# api-ubuntu-1604-tiamat-py3: {extends: '.test_instance'}
-# api-centos-8-tiamat-py3: {extends: '.test_instance'}
-# api-centos-7-tiamat-py3: {extends: '.test_instance'}
-# api-amazonlinux-2-tiamat-py3: {extends: '.test_instance'}
-# api-oraclelinux-8-tiamat-py3: {extends: '.test_instance'}
-# api-oraclelinux-7-tiamat-py3: {extends: '.test_instance'}
-api-debian-10-master-py3: {extends: '.test_instance'}
-workbench-debian-10-master-py3: {extends: '.test_instance'}
-# shell-debian-10-master-py3: {extends: '.test_instance'}
-keepstore-debian-10-master-py3: {extends: '.test_instance'}
-# api-debian-9-master-py3: {extends: '.test_instance'}
-# workbench-debian-9-master-py3: {extends: '.test_instance'}
-# shell-debian-9-master-py3: {extends: '.test_instance'}
-# keepstore-debian-9-master-py3: {extends: '.test_instance'}
-# api-ubuntu-2004-master-py3: {extends: '.test_instance'}
-# workbench-ubuntu-2004-master-py3: {extends: '.test_instance'}
-# shell-ubuntu-2004-master-py3: {extends: '.test_instance'}
-# keepstore-ubuntu-2004-master-py3: {extends: '.test_instance'}
-api-ubuntu-1804-master-py3: {extends: '.test_instance'}
-workbench-ubuntu-1804-master-py3: {extends: '.test_instance'}
-# shell-ubuntu-1804-master-py3: {extends: '.test_instance'}
-# keepstore-ubuntu-1804-master-py3: {extends: '.test_instance'}
-# api-ubuntu-1604-master-py3: {extends: '.test_instance'}
-# workbench-ubuntu-1604-master-py3: {extends: '.test_instance'}
-# shell-ubuntu-1604-master-py3: {extends: '.test_instance'}
-# keepstore-ubuntu-1604-master-py3: {extends: '.test_instance'}
-# api-centos-8-master-py3: {extends: '.test_instance'}
-# workbench-centos-8-master-py3: {extends: '.test_instance'}
-# shell-centos-8-master-py3: {extends: '.test_instance'}
-# keepstore-centos-8-master-py3: {extends: '.test_instance'}
-# api-centos-7-master-py3: {extends: '.test_instance'}
-# workbench-centos-7-master-py3: {extends: '.test_instance'}
-shell-centos-7-master-py3: {extends: '.test_instance'}
-keepstore-centos-7-master-py3: {extends: '.test_instance'}
-# api-amazonlinux-2-master-py3: {extends: '.test_instance'}
-# workbench-amazonlinux-2-master-py3: {extends: '.test_instance'}
-# shell-amazonlinux-2-master-py3: {extends: '.test_instance'}
-# keepstore-amazonlinux-2-master-py3: {extends: '.test_instance'}
-# api-oraclelinux-8-master-py3: {extends: '.test_instance'}
-# workbench-oraclelinux-8-master-py3: {extends: '.test_instance'}
-# shell-oraclelinux-8-master-py3: {extends: '.test_instance'}
-# keepstore-oraclelinux-8-master-py3: {extends: '.test_instance'}
-# api-oraclelinux-7-master-py3: {extends: '.test_instance'}
-# workbench-oraclelinux-7-master-py3: {extends: '.test_instance'}
-# shell-oraclelinux-7-master-py3: {extends: '.test_instance'}
-# keepstore-oraclelinux-7-master-py3: {extends: '.test_instance'}
-# api-debian-10-3003-0-py3: {extends: '.test_instance'}
-# api-debian-9-3003-0-py3: {extends: '.test_instance'}
-# api-ubuntu-2004-3003-0-py3: {extends: '.test_instance'}
-# api-ubuntu-1804-3003-0-py3: {extends: '.test_instance'}
-# api-centos-8-3003-0-py3: {extends: '.test_instance'}
-# api-centos-7-3003-0-py3: {extends: '.test_instance'}
-# api-amazonlinux-2-3003-0-py3: {extends: '.test_instance'}
-# api-oraclelinux-8-3003-0-py3: {extends: '.test_instance'}
-# api-oraclelinux-7-3003-0-py3: {extends: '.test_instance'}
-# api-debian-10-3002-6-py3: {extends: '.test_instance'}
-# api-debian-9-3002-6-py3: {extends: '.test_instance'}
-# api-ubuntu-2004-3002-6-py3: {extends: '.test_instance'}
-# api-ubuntu-1804-3002-6-py3: {extends: '.test_instance'}
-# api-ubuntu-1604-3002-6-py3: {extends: '.test_instance'}
-# api-centos-8-3002-6-py3: {extends: '.test_instance'}
-# api-centos-7-3002-6-py3: {extends: '.test_instance'}
-# api-amazonlinux-2-3002-6-py3: {extends: '.test_instance'}
-# api-oraclelinux-8-3002-6-py3: {extends: '.test_instance'}
-# api-oraclelinux-7-3002-6-py3: {extends: '.test_instance'}
-# api-debian-10-3001-7-py3: {extends: '.test_instance'}
-# api-debian-9-3001-7-py3: {extends: '.test_instance'}
-# api-ubuntu-2004-3001-7-py3: {extends: '.test_instance'}
-# api-ubuntu-1804-3001-7-py3: {extends: '.test_instance'}
-# api-ubuntu-1604-3001-7-py3: {extends: '.test_instance'}
-# api-centos-8-3001-7-py3: {extends: '.test_instance'}
-# api-centos-7-3001-7-py3: {extends: '.test_instance'}
-# api-amazonlinux-2-3001-7-py3: {extends: '.test_instance'}
-# api-oraclelinux-8-3001-7-py3: {extends: '.test_instance'}
-# api-oraclelinux-7-3001-7-py3: {extends: '.test_instance'}
-# api-debian-10-3000-9-py3: {extends: '.test_instance'}
-# api-debian-9-3000-9-py3: {extends: '.test_instance'}
-# api-ubuntu-1804-3000-9-py3: {extends: '.test_instance'}
-# api-ubuntu-1604-3000-9-py3: {extends: '.test_instance'}
-# api-centos-8-3000-9-py3: {extends: '.test_instance'}
-# api-centos-7-3000-9-py3: {extends: '.test_instance'}
-# api-amazonlinux-2-3000-9-py3: {extends: '.test_instance'}
-# api-oraclelinux-8-3000-9-py3: {extends: '.test_instance'}
-# api-oraclelinux-7-3000-9-py3: {extends: '.test_instance'}
-# api-ubuntu-1804-3000-9-py2: {extends: '.test_instance'}
-# api-ubuntu-1604-3000-9-py2: {extends: '.test_instance'}
+# Get this list with
+# kitchen list |awk '{print $1": {extends: '.test_instance'}"}' |sort -r
+
+workbench-ubuntu-2004-tiamat-py3: {extends: .test_instance}
+# workbench-ubuntu-2004-master-py3: {extends: .test_instance}
+# workbench-ubuntu-2004-3003.3-py3: {extends: .test_instance}
+# workbench-ubuntu-2004-3002.7-py3: {extends: .test_instance}
+# workbench-ubuntu-2004-3001.8-py3: {extends: .test_instance}
+# workbench-ubuntu-1804-tiamat-py3: {extends: .test_instance}
+workbench-ubuntu-1804-master-py3: {extends: .test_instance}
+# workbench-ubuntu-1804-3003.3-py3: {extends: .test_instance}
+# workbench-ubuntu-1804-3002.7-py3: {extends: .test_instance}
+# workbench-ubuntu-1804-3001.8-py3: {extends: .test_instance}
+# workbench-debian-11-tiamat-py3: {extends: .test_instance}
+# workbench-debian-11-master-py3: {extends: .test_instance}
+workbench-debian-11-3003.3-py3: {extends: .test_instance}
+# workbench-debian-11-3002.7-py3: {extends: .test_instance}
+# workbench-debian-10-tiamat-py3: {extends: .test_instance}
+# workbench-debian-10-master-py3: {extends: .test_instance}
+# workbench-debian-10-3003.3-py3: {extends: .test_instance}
+workbench-debian-10-3002.7-py3: {extends: .test_instance}
+# workbench-debian-10-3001.8-py3: {extends: .test_instance}
+# workbench-centos-7-tiamat-py3: {extends: .test_instance}
+# workbench-centos-7-master-py3: {extends: .test_instance}
+# workbench-centos-7-3003.3-py3: {extends: .test_instance}
+# workbench-centos-7-3002.7-py3: {extends: .test_instance}
+workbench-centos-7-3001.8-py3: {extends: .test_instance}
+
+# shell-ubuntu-2004-tiamat-py3: {extends: .test_instance}
+shell-ubuntu-2004-master-py3: {extends: .test_instance}
+# shell-ubuntu-2004-3003.3-py3: {extends: .test_instance}
+# shell-ubuntu-2004-3002.7-py3: {extends: .test_instance}
+# shell-ubuntu-2004-3001.8-py3: {extends: .test_instance}
+# shell-ubuntu-1804-tiamat-py3: {extends: .test_instance}
+# shell-ubuntu-1804-master-py3: {extends: .test_instance}
+shell-ubuntu-1804-3003.3-py3: {extends: .test_instance}
+# shell-ubuntu-1804-3002.7-py3: {extends: .test_instance}
+# shell-ubuntu-1804-3001.8-py3: {extends: .test_instance}
+# shell-debian-11-tiamat-py3: {extends: .test_instance}
+# shell-debian-11-master-py3: {extends: .test_instance}
+# shell-debian-11-3003.3-py3: {extends: .test_instance}
+shell-debian-11-3002.7-py3: {extends: .test_instance}
+# shell-debian-10-tiamat-py3: {extends: .test_instance}
+# shell-debian-10-master-py3: {extends: .test_instance}
+# shell-debian-10-3003.3-py3: {extends: .test_instance}
+# shell-debian-10-3002.7-py3: {extends: .test_instance}
+shell-debian-10-3001.8-py3: {extends: .test_instance}
+shell-centos-7-tiamat-py3: {extends: .test_instance}
+# shell-centos-7-master-py3: {extends: .test_instance}
+# shell-centos-7-3003.3-py3: {extends: .test_instance}
+# shell-centos-7-3002.7-py3: {extends: .test_instance}
+# shell-centos-7-3001.8-py3: {extends: .test_instance}
+
+# keepstore-ubuntu-2004-tiamat-py3: {extends: .test_instance}
+# keepstore-ubuntu-2004-master-py3: {extends: .test_instance}
+keepstore-ubuntu-2004-3003.3-py3: {extends: .test_instance}
+# keepstore-ubuntu-2004-3002.7-py3: {extends: .test_instance}
+# keepstore-ubuntu-2004-3001.8-py3: {extends: .test_instance}
+# keepstore-ubuntu-1804-tiamat-py3: {extends: .test_instance}
+# keepstore-ubuntu-1804-master-py3: {extends: .test_instance}
+# keepstore-ubuntu-1804-3003.3-py3: {extends: .test_instance}
+keepstore-ubuntu-1804-3002.7-py3: {extends: .test_instance}
+# keepstore-ubuntu-1804-3001.8-py3: {extends: .test_instance}
+keepstore-debian-11-tiamat-py3: {extends: .test_instance}
+# keepstore-debian-11-master-py3: {extends: .test_instance}
+# keepstore-debian-11-3003.3-py3: {extends: .test_instance}
+# keepstore-debian-11-3002.7-py3: {extends: .test_instance}
+# keepstore-debian-10-tiamat-py3: {extends: .test_instance}
+# keepstore-debian-10-master-py3: {extends: .test_instance}
+# keepstore-debian-10-3003.3-py3: {extends: .test_instance}
+# keepstore-debian-10-3002.7-py3: {extends: .test_instance}
+keepstore-debian-10-3001.8-py3: {extends: .test_instance}
+# keepstore-centos-7-tiamat-py3: {extends: .test_instance}
+# keepstore-centos-7-master-py3: {extends: .test_instance}
+# keepstore-centos-7-3003.3-py3: {extends: .test_instance}
+# keepstore-centos-7-3002.7-py3: {extends: .test_instance}
+# keepstore-centos-7-3001.8-py3: {extends: .test_instance}
+
+# api-ubuntu-2004-tiamat-py3: {extends: .test_instance}
+# api-ubuntu-2004-master-py3: {extends: .test_instance}
+# api-ubuntu-2004-3003.3-py3: {extends: .test_instance}
+api-ubuntu-2004-3002.7-py3: {extends: .test_instance}
+# api-ubuntu-2004-3001.8-py3: {extends: .test_instance}
+# api-ubuntu-1804-tiamat-py3: {extends: .test_instance}
+# api-ubuntu-1804-master-py3: {extends: .test_instance}
+# api-ubuntu-1804-3003.3-py3: {extends: .test_instance}
+# api-ubuntu-1804-3002.7-py3: {extends: .test_instance}
+api-ubuntu-1804-3001.8-py3: {extends: .test_instance}
+# api-debian-11-tiamat-py3: {extends: .test_instance}
+# api-debian-11-master-py3: {extends: .test_instance}
+api-debian-11-3003.3-py3: {extends: .test_instance}
+# api-debian-11-3002.7-py3: {extends: .test_instance}
+# api-debian-10-tiamat-py3: {extends: .test_instance}
+# api-debian-10-master-py3: {extends: .test_instance}
+# api-debian-10-3003.3-py3: {extends: .test_instance}
+# api-debian-10-3002.7-py3: {extends: .test_instance}
+# api-debian-10-3001.8-py3: {extends: .test_instance}
+api-centos-7-tiamat-py3: {extends: .test_instance}
+# api-centos-7-master-py3: {extends: .test_instance}
+# api-centos-7-3003.3-py3: {extends: .test_instance}
+# api-centos-7-3002.7-py3: {extends: .test_instance}
+# api-centos-7-3001.8-py3: {extends: .test_instance}
 
 ###############################################################################
 # `release` stage: `semantic-release`
 ###############################################################################
 semantic-release:
-  only: *only_branch_master_parent_repo
+  only: *only_branch_main_parent_repo
   stage: *stage_release
   image: *image_semanticrelease
   variables:
index e3bce7db5a8a6d6ad1e1bd506f24e597f9004590..3f41355784f3ecf1b5ac2aaeb165be5394d05fa8 100644 (file)
@@ -5,3 +5,4 @@
 
 arvados/ruby/package/files/default/gpg-michal-papis-409B6B1796C275462A1703113804BB82D39DC0E3.key
 arvados/ruby/package/files/default/gpg-piotr-kuczynski-7D2BAF1CF37B13E2069D6956105BD0E739499BDB.key
+Gemfile*
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644 (file)
index 0000000..efe2160
--- /dev/null
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+# vim: ft=yaml
+
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+---
+# See https://pre-commit.com for more information
+# See https://pre-commit.com/hooks.html for more hooks
+default_stages: [commit]
+repos:
+  - repo: https://github.com/rubocop-hq/rubocop
+    rev: v1.9.1
+    hooks:
+      - id: rubocop
+        name: Check Ruby files with rubocop
+        args: [--debug]
+        always_run: true
+        pass_filenames: false
+  - repo: https://github.com/shellcheck-py/shellcheck-py
+    rev: v0.7.1.1
+    hooks:
+      - id: shellcheck
+        name: Check shell scripts with shellcheck
+        files: ^.*\.(sh|bash|ksh)$
+        types: []
+  - repo: https://github.com/adrienverge/yamllint
+    rev: v1.23.0
+    hooks:
+      - id: yamllint
+        name: Check YAML syntax with yamllint
+        args: [--strict, '.']
+        always_run: true
+        pass_filenames: false
+  - repo: https://github.com/warpnet/salt-lint
+    rev: v0.3.0
+    hooks:
+      - id: salt-lint
+        name: Check Salt files using salt-lint
+        files: ^.*\.(sls|jinja|j2|tmpl|tst)$
+  - repo: https://github.com/myint/rstcheck
+    rev: 3f929574
+    hooks:
+      - id: rstcheck
+        name: Check reST files using rstcheck
+        exclude: 'docs/CHANGELOG.rst'
+  - repo: https://github.com/saltstack-formulas/mirrors-rst-lint
+    rev: v1.3.2
+    hooks:
+      - id: rst-lint
+        name: Check reST files using rst-lint
+        exclude: |
+            (?x)^(
+                docs/CHANGELOG.rst|
+                docs/TOFS_pattern.rst|
+                docs/CONTRIBUTING_DOCS.rst|
+                docs/index.rst|
+            )$
+        additional_dependencies: [pygments==2.9.0]
index 469c14e4deb814e9ef3f76f2466d7f0d347a972d..059eb0a9171daac0ec5293501c0a41716181c48b 100644 (file)
@@ -1,11 +1,16 @@
 # -*- coding: utf-8 -*-
 # vim: ft=yaml
+
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
 ---
 exclude_paths: []
 rules:
   204:  # Lines should be no longer that 160 chars
     ignore: |
       arvados/shell/config/files/default/shell-libpam-arvados.tmpl.jinja
+      arvados/shell/config/files/default/shell-pam-shellinabox.tmpl.jinja
       test/salt/pillar/examples/nginx_webshell_configuration.sls
       test/salt/pillar/examples/nginx_passenger.sls
 skip_list:
diff --git a/Gemfile b/Gemfile
index c08ad6c7356dda30046f44421714a23568c2a509..bd28ddfa0e8292d10895fb6b60e7e200f4465e90 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
 # frozen_string_literal: true
 
 source 'https://rubygems.org'
@@ -10,5 +14,5 @@ gem 'inspec',      '~> 4.22.22'
 # rubocop:disable Layout/LineLength
 gem 'kitchen-docker', git: 'https://gitlab.com/saltstack-formulas/infrastructure/kitchen-docker', branch: 'ssf'
 # rubocop:enable Layout/LineLength
-gem 'kitchen-inspec', '>= 2.2.1'
+gem 'kitchen-inspec', '>= 2.5.0'
 gem 'kitchen-salt', '>= 0.6.3'
index d7cbc3b1779d702f958502de8f02301fc9bb36ee..5c05698beceff44cbb1299604e64b15142ab2e4c 100644 (file)
@@ -1,6 +1,6 @@
 GIT
   remote: https://gitlab.com/saltstack-formulas/infrastructure/kitchen-docker
-  revision: 042e6921940a28d2502258b6a5ff3be17dd2fd37
+  revision: 1f543f654da5c1774cb8737f6f07a01745520bb5
   branch: ssf
   specs:
     kitchen-docker (2.10.0)
@@ -9,197 +9,242 @@ GIT
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (5.2.4.4)
+    activesupport (6.1.4)
       concurrent-ruby (~> 1.0, >= 1.0.2)
-      i18n (>= 0.7, < 2)
-      minitest (~> 5.1)
-      tzinfo (~> 1.1)
-    addressable (2.7.0)
+      i18n (>= 1.6, < 2)
+      minitest (>= 5.1)
+      tzinfo (~> 2.0)
+      zeitwerk (~> 2.3)
+    addressable (2.8.0)
       public_suffix (>= 2.0.2, < 5.0)
-    aws-eventstream (1.1.0)
-    aws-partitions (1.386.0)
-    aws-sdk-apigateway (1.55.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-eventstream (1.1.1)
+    aws-partitions (1.479.0)
+    aws-sdk-apigateway (1.62.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-apigatewayv2 (1.29.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-apigatewayv2 (1.32.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-athena (1.33.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-applicationautoscaling (1.51.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-autoscaling (1.22.0)
-      aws-sdk-core (~> 3, >= 3.52.1)
+    aws-sdk-athena (1.37.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-budgets (1.36.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-autoscaling (1.61.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-cloudformation (1.44.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-batch (1.47.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-cloudfront (1.46.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-budgets (1.38.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-cloudhsm (1.27.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-cloudformation (1.53.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-cloudhsmv2 (1.30.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-cloudfront (1.53.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-cloudtrail (1.29.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-cloudhsm (1.30.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-cloudwatch (1.45.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-cloudhsmv2 (1.33.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-cloudwatchlogs (1.38.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-cloudtrail (1.35.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-codecommit (1.40.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-cloudwatch (1.51.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-codedeploy (1.37.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-cloudwatchevents (1.46.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-codepipeline (1.37.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-cloudwatchlogs (1.41.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-configservice (1.53.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-codecommit (1.42.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-core (3.109.1)
+    aws-sdk-codedeploy (1.40.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-codepipeline (1.44.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-cognitoidentity (1.31.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-cognitoidentityprovider (1.51.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-configservice (1.62.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-core (3.117.0)
       aws-eventstream (~> 1, >= 1.0.2)
       aws-partitions (~> 1, >= 1.239.0)
       aws-sigv4 (~> 1.1)
       jmespath (~> 1.0)
-    aws-sdk-costandusagereportservice (1.28.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-costandusagereportservice (1.31.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-databasemigrationservice (1.53.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-dynamodb (1.60.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-ec2 (1.251.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-ecr (1.42.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-ecrpublic (1.3.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-dynamodb (1.55.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-ecs (1.81.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-ec2 (1.202.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-efs (1.40.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-ecr (1.39.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-eks (1.58.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-ecs (1.70.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-elasticache (1.57.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-efs (1.36.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-elasticbeanstalk (1.42.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-eks (1.45.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-elasticloadbalancing (1.31.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-elasticache (1.44.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-elasticloadbalancingv2 (1.64.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-elasticbeanstalk (1.39.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-elasticsearchservice (1.52.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-elasticloadbalancing (1.29.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-eventbridge (1.24.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-elasticloadbalancingv2 (1.53.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-firehose (1.37.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-elasticsearchservice (1.43.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-glue (1.87.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-firehose (1.35.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-guardduty (1.45.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-guardduty (1.42.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-iam (1.57.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-iam (1.46.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-kafka (1.36.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-kafka (1.29.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-kinesis (1.32.1)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-kinesis (1.30.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-kms (1.44.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-kms (1.39.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-lambda (1.64.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-lambda (1.51.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-organizations (1.59.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-organizations (1.17.0)
-      aws-sdk-core (~> 3, >= 3.39.0)
-      aws-sigv4 (~> 1.0)
-    aws-sdk-rds (1.104.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-ram (1.25.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-redshift (1.50.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-rds (1.122.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-route53 (1.44.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-redshift (1.65.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-route53domains (1.28.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-route53 (1.49.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-route53resolver (1.21.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-route53domains (1.30.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.83.1)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-route53resolver (1.26.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-s3 (1.96.2)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.1)
-    aws-sdk-securityhub (1.35.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-secretsmanager (1.46.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-securityhub (1.48.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-servicecatalog (1.59.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-ses (1.38.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sdk-shield (1.37.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-ses (1.36.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-sms (1.29.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-sms (1.27.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-sns (1.42.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-sns (1.34.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-sqs (1.40.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-sqs (1.34.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-ssm (1.112.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-ssm (1.95.0)
-      aws-sdk-core (~> 3, >= 3.109.0)
+    aws-sdk-states (1.39.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sigv4 (1.2.2)
+    aws-sdk-transfer (1.32.0)
+      aws-sdk-core (~> 3, >= 3.112.0)
+      aws-sigv4 (~> 1.1)
+    aws-sigv4 (1.2.4)
       aws-eventstream (~> 1, >= 1.0.2)
     azure_graph_rbac (0.17.2)
       ms_rest_azure (~> 0.12.0)
-    azure_mgmt_key_vault (0.17.6)
+    azure_mgmt_key_vault (0.17.7)
       ms_rest_azure (~> 0.12.0)
-    azure_mgmt_resources (0.18.0)
+    azure_mgmt_resources (0.18.2)
       ms_rest_azure (~> 0.12.0)
-    azure_mgmt_security (0.18.2)
+    azure_mgmt_security (0.19.0)
       ms_rest_azure (~> 0.12.0)
-    azure_mgmt_storage (0.22.0)
+    azure_mgmt_storage (0.23.0)
       ms_rest_azure (~> 0.12.0)
-    bcrypt_pbkdf (1.0.1)
+    bcrypt_pbkdf (1.1.0)
     builder (3.2.4)
-    chef-config (16.6.14)
+    chef-config (17.3.48)
       addressable
-      chef-utils (= 16.6.14)
+      chef-utils (= 17.3.48)
       fuzzyurl
       mixlib-config (>= 2.2.12, < 4.0)
       mixlib-shellout (>= 2.0, < 4.0)
       tomlrb (~> 1.2)
-    chef-telemetry (1.0.14)
+    chef-telemetry (1.0.29)
       chef-config
       concurrent-ruby (~> 1.0)
-      ffi-yajl (~> 2.2)
-    chef-utils (16.6.14)
+    chef-utils (17.3.48)
+      concurrent-ruby
     coderay (1.1.3)
-    concurrent-ruby (1.1.7)
+    concurrent-ruby (1.1.9)
     declarative (0.0.20)
-    declarative-option (0.1.0)
     diff-lcs (1.4.4)
-    docker-api (2.0.0)
+    docker-api (2.2.0)
       excon (>= 0.47.0)
       multi_json
     domain_name (0.5.20190701)
@@ -207,44 +252,43 @@ GEM
     ecma-re-validator (0.2.1)
       regexp_parser (~> 1.2)
     ed25519 (1.2.4)
-    erubi (1.9.0)
-    excon (0.78.0)
-    faraday (0.17.3)
+    erubi (1.10.0)
+    excon (0.85.0)
+    faraday (0.17.4)
       multipart-post (>= 1.2, < 3)
     faraday-cookie_jar (0.0.7)
       faraday (>= 0.8.0)
       http-cookie (~> 1.0.0)
     faraday_middleware (0.12.2)
       faraday (>= 0.7.4, < 1.0)
-    ffi (1.13.1)
-    ffi-yajl (2.3.4)
-      libyajl2 (~> 1.2)
+    ffi (1.15.3)
     fuzzyurl (0.9.0)
-    google-api-client (0.44.0)
+    google-api-client (0.52.0)
       addressable (~> 2.5, >= 2.5.1)
       googleauth (~> 0.9)
       httpclient (>= 2.8.1, < 3.0)
       mini_mime (~> 1.0)
       representable (~> 3.0)
       retriable (>= 2.0, < 4.0)
+      rexml
       signet (~> 0.12)
-    googleauth (0.13.0)
+    googleauth (0.14.0)
       faraday (>= 0.17.3, < 2.0)
       jwt (>= 1.4, < 3.0)
       memoist (~> 0.16)
       multi_json (~> 1.11)
       os (>= 0.9, < 2.0)
       signet (~> 0.14)
-    gssapi (1.3.0)
+    gssapi (1.3.1)
       ffi (>= 1.0.1)
     gyoku (1.3.1)
       builder (>= 2.1.2)
-    hana (1.3.6)
+    hana (1.3.7)
     hashie (3.6.0)
-    http-cookie (1.0.3)
+    http-cookie (1.0.4)
       domain_name (~> 0.5)
     httpclient (2.8.3)
-    i18n (1.8.5)
+    i18n (1.8.10)
       concurrent-ruby (~> 1.0)
     inifile (3.0.0)
     inspec (4.22.22)
@@ -278,21 +322,20 @@ GEM
       tty-prompt (~> 0.17)
       tty-table (~> 0.10)
     jmespath (1.4.0)
-    json (2.3.1)
+    json (2.5.1)
     json_schemer (0.2.11)
       ecma-re-validator (~> 0.2)
       hana (~> 1.3)
       regexp_parser (~> 1.5)
       uri_template (~> 0.7)
-    jwt (2.2.2)
-    kitchen-inspec (2.2.1)
-      hashie (~> 3.4)
+    jwt (2.2.3)
+    kitchen-inspec (2.5.0)
+      hashie (>= 3.4, <= 5.0)
       inspec (>= 2.2.64, < 5.0)
-      test-kitchen (>= 2.7, < 3)
+      test-kitchen (>= 2.7, < 4)
     kitchen-salt (0.6.3)
       hashie (>= 3.5)
       test-kitchen (>= 1.4)
-    libyajl2 (1.2.0)
     license-acceptance (1.0.19)
       pastel (~> 0.7)
       tomlrb (~> 1.2)
@@ -304,16 +347,16 @@ GEM
       multi_json (~> 1.14)
     memoist (0.16.2)
     method_source (1.0.0)
-    mini_mime (1.0.2)
-    minitest (5.14.2)
+    mini_mime (1.1.0)
+    minitest (5.14.4)
     mixlib-config (3.0.9)
       tomlrb
-    mixlib-install (3.12.3)
+    mixlib-install (3.12.11)
       mixlib-shellout
       mixlib-versioning
       thor
     mixlib-log (3.0.9)
-    mixlib-shellout (3.1.6)
+    mixlib-shellout (3.2.5)
       chef-utils
     mixlib-versioning (1.2.12)
     ms_rest (0.7.6)
@@ -334,52 +377,54 @@ GEM
       net-ssh (>= 4.0.0)
     nori (2.6.0)
     os (1.1.1)
-    parallel (1.19.2)
+    parallel (1.20.1)
     parslet (1.8.2)
     pastel (0.8.0)
       tty-color (~> 0.5)
-    pry (0.13.1)
+    pry (0.14.1)
       coderay (~> 1.1)
       method_source (~> 1.0)
     public_suffix (4.0.6)
     regexp_parser (1.8.2)
-    representable (3.0.4)
+    representable (3.1.1)
       declarative (< 0.1.0)
-      declarative-option (< 0.2.0)
+      trailblazer-option (>= 0.1.1, < 0.2.0)
       uber (< 0.2.0)
     retriable (3.1.2)
-    rspec (3.9.0)
-      rspec-core (~> 3.9.0)
-      rspec-expectations (~> 3.9.0)
-      rspec-mocks (~> 3.9.0)
-    rspec-core (3.9.3)
-      rspec-support (~> 3.9.3)
-    rspec-expectations (3.9.3)
+    rexml (3.2.5)
+    rspec (3.10.0)
+      rspec-core (~> 3.10.0)
+      rspec-expectations (~> 3.10.0)
+      rspec-mocks (~> 3.10.0)
+    rspec-core (3.10.1)
+      rspec-support (~> 3.10.0)
+    rspec-expectations (3.10.1)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.9.0)
+      rspec-support (~> 3.10.0)
     rspec-its (1.3.0)
       rspec-core (>= 3.0.0)
       rspec-expectations (>= 3.0.0)
-    rspec-mocks (3.9.1)
+    rspec-mocks (3.10.2)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.9.0)
-    rspec-support (3.9.4)
-    rubyntlm (0.6.2)
+      rspec-support (~> 3.10.0)
+    rspec-support (3.10.2)
+    rubyntlm (0.6.3)
     rubyzip (1.3.0)
     semverse (3.0.0)
-    signet (0.14.0)
+    signet (0.15.0)
       addressable (~> 2.3)
       faraday (>= 0.17.3, < 2.0)
       jwt (>= 1.5, < 3.0)
       multi_json (~> 1.10)
     sslshake (1.3.1)
-    strings (0.2.0)
+    strings (0.2.1)
       strings-ansi (~> 0.2)
-      unicode-display_width (~> 1.5)
+      unicode-display_width (>= 1.5, < 3.0)
       unicode_utils (~> 1.4)
     strings-ansi (0.2.0)
-    test-kitchen (2.7.2)
+    test-kitchen (3.0.0)
       bcrypt_pbkdf (~> 1.0)
+      chef-utils (>= 16.4.35)
       ed25519 (~> 1.2)
       license-acceptance (>= 1.0.11, < 3.0)
       mixlib-install (~> 3.6)
@@ -391,28 +436,30 @@ GEM
       winrm (~> 2.0)
       winrm-elevated (~> 1.0)
       winrm-fs (~> 1.1)
-    thor (1.0.1)
-    thread_safe (0.3.6)
+    thor (1.1.0)
     timeliness (0.3.10)
     tomlrb (1.2.9)
-    train (3.3.27)
-      activesupport (>= 5.2.4.3, < 6.0.0)
+    trailblazer-option (0.1.1)
+    train (3.7.4)
+      activesupport (>= 6.0.3.1)
       azure_graph_rbac (~> 0.16)
       azure_mgmt_key_vault (~> 0.17)
       azure_mgmt_resources (~> 0.15)
       azure_mgmt_security (~> 0.18)
       azure_mgmt_storage (~> 0.18)
       docker-api (>= 1.26, < 3.0)
-      google-api-client (>= 0.23.9, < 0.44.1)
-      googleauth (>= 0.6.6, < 0.13.1)
+      google-api-client (>= 0.23.9, <= 0.52.0)
+      googleauth (>= 0.6.6, <= 0.14.0)
       inifile (~> 3.0)
-      train-core (= 3.3.27)
+      train-core (= 3.7.4)
       train-winrm (~> 0.2)
-    train-aws (0.1.18)
+    train-aws (0.2.8)
       aws-sdk-apigateway (~> 1.0)
       aws-sdk-apigatewayv2 (~> 1.0)
+      aws-sdk-applicationautoscaling (>= 1.46, < 1.52)
       aws-sdk-athena (~> 1.0)
-      aws-sdk-autoscaling (~> 1.22.0)
+      aws-sdk-autoscaling (>= 1.22, < 1.62)
+      aws-sdk-batch (>= 1.36, < 1.48)
       aws-sdk-budgets (~> 1.0)
       aws-sdk-cloudformation (~> 1.0)
       aws-sdk-cloudfront (~> 1.0)
@@ -420,16 +467,21 @@ GEM
       aws-sdk-cloudhsmv2 (~> 1.0)
       aws-sdk-cloudtrail (~> 1.8)
       aws-sdk-cloudwatch (~> 1.13)
+      aws-sdk-cloudwatchevents (>= 1.36, < 1.47)
       aws-sdk-cloudwatchlogs (~> 1.13)
       aws-sdk-codecommit (~> 1.0)
       aws-sdk-codedeploy (~> 1.0)
       aws-sdk-codepipeline (~> 1.0)
+      aws-sdk-cognitoidentity (>= 1.26, < 1.32)
+      aws-sdk-cognitoidentityprovider (>= 1.46, < 1.52)
       aws-sdk-configservice (~> 1.21)
       aws-sdk-core (~> 3.0)
       aws-sdk-costandusagereportservice (~> 1.6)
+      aws-sdk-databasemigrationservice (>= 1.42, < 1.54)
       aws-sdk-dynamodb (~> 1.31)
       aws-sdk-ec2 (~> 1.70)
       aws-sdk-ecr (~> 1.18)
+      aws-sdk-ecrpublic (~> 1.3)
       aws-sdk-ecs (~> 1.30)
       aws-sdk-efs (~> 1.0)
       aws-sdk-eks (~> 1.9)
@@ -438,48 +490,56 @@ GEM
       aws-sdk-elasticloadbalancing (~> 1.8)
       aws-sdk-elasticloadbalancingv2 (~> 1.0)
       aws-sdk-elasticsearchservice (~> 1.0)
+      aws-sdk-eventbridge (~> 1.24.0)
       aws-sdk-firehose (~> 1.0)
+      aws-sdk-glue (>= 1.71, < 1.88)
       aws-sdk-guardduty (~> 1.31)
       aws-sdk-iam (~> 1.13)
       aws-sdk-kafka (~> 1.0)
       aws-sdk-kinesis (~> 1.0)
       aws-sdk-kms (~> 1.13)
       aws-sdk-lambda (~> 1.0)
-      aws-sdk-organizations (~> 1.17.0)
+      aws-sdk-organizations (>= 1.17, < 1.60)
+      aws-sdk-ram (>= 1.21, < 1.26)
       aws-sdk-rds (~> 1.43)
       aws-sdk-redshift (~> 1.0)
       aws-sdk-route53 (~> 1.0)
       aws-sdk-route53domains (~> 1.0)
       aws-sdk-route53resolver (~> 1.0)
       aws-sdk-s3 (~> 1.30)
+      aws-sdk-secretsmanager (>= 1.42, < 1.47)
       aws-sdk-securityhub (~> 1.0)
+      aws-sdk-servicecatalog (>= 1.48, < 1.60)
       aws-sdk-ses (~> 1.0)
+      aws-sdk-shield (~> 1.30)
       aws-sdk-sms (~> 1.0)
       aws-sdk-sns (~> 1.9)
       aws-sdk-sqs (~> 1.10)
       aws-sdk-ssm (~> 1.0)
-    train-core (3.3.27)
+      aws-sdk-states (>= 1.35, < 1.40)
+      aws-sdk-transfer (>= 1.26, < 1.33)
+    train-core (3.7.4)
       addressable (~> 2.5)
       ffi (!= 1.13.0)
       json (>= 1.8, < 3.0)
       mixlib-shellout (>= 2.0, < 4.0)
       net-scp (>= 1.2, < 4.0)
       net-ssh (>= 2.9, < 7.0)
-    train-habitat (0.2.13)
-    train-winrm (0.2.11)
-      winrm (~> 2.0)
+    train-habitat (0.2.22)
+    train-winrm (0.2.12)
+      winrm (>= 2.3.6, < 3.0)
       winrm-elevated (~> 1.2.2)
       winrm-fs (~> 1.0)
-    tty-box (0.6.0)
+    tty-box (0.7.0)
       pastel (~> 0.8)
       strings (~> 0.2.0)
       tty-cursor (~> 0.7)
-    tty-color (0.5.2)
+    tty-color (0.6.0)
     tty-cursor (0.7.1)
-    tty-prompt (0.22.0)
+    tty-prompt (0.23.1)
       pastel (~> 0.8)
       tty-reader (~> 0.8)
-    tty-reader (0.8.0)
+    tty-reader (0.9.0)
       tty-cursor (~> 0.7)
       tty-screen (~> 0.8)
       wisper (~> 2.0)
@@ -488,16 +548,16 @@ GEM
       pastel (~> 0.8)
       strings (~> 0.2.0)
       tty-screen (~> 0.8)
-    tzinfo (1.2.7)
-      thread_safe (~> 0.1)
+    tzinfo (2.0.4)
+      concurrent-ruby (~> 1.0)
     uber (0.1.0)
     unf (0.1.4)
       unf_ext
     unf_ext (0.0.7.7)
-    unicode-display_width (1.7.0)
+    unicode-display_width (2.0.0)
     unicode_utils (1.4.0)
     uri_template (0.7.0)
-    winrm (2.3.5)
+    winrm (2.3.6)
       builder (>= 2.1.2)
       erubi (~> 1.8)
       gssapi (~> 1.2)
@@ -505,8 +565,8 @@ GEM
       httpclient (~> 2.2, >= 2.2.0.2)
       logging (>= 1.6.1, < 3.0)
       nori (~> 2.0)
-      rubyntlm (~> 0.6.0, >= 0.6.1)
-    winrm-elevated (1.2.2)
+      rubyntlm (~> 0.6.0, >= 0.6.3)
+    winrm-elevated (1.2.3)
       erubi (~> 1.8)
       winrm (~> 2.0)
       winrm-fs (~> 1.0)
@@ -516,6 +576,7 @@ GEM
       rubyzip (~> 1.1)
       winrm (~> 2.0)
     wisper (2.0.1)
+    zeitwerk (2.4.2)
 
 PLATFORMS
   ruby
@@ -523,7 +584,7 @@ PLATFORMS
 DEPENDENCIES
   inspec (~> 4.22.22)
   kitchen-docker!
-  kitchen-inspec (>= 2.2.1)
+  kitchen-inspec (>= 2.5.0)
   kitchen-salt (>= 0.6.3)
 
 BUNDLED WITH
diff --git a/bin/install-hooks b/bin/install-hooks
new file mode 100755 (executable)
index 0000000..8348574
--- /dev/null
@@ -0,0 +1,21 @@
+#!/usr/bin/env sh
+
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+set -o nounset # Treat unset variables as an error and immediately exit
+set -o errexit # If a command fails exit the whole script
+
+if [ "${DEBUG:-false}" = "true" ]; then
+  set -x # Run the entire script in debug mode
+fi
+
+if ! command -v pre-commit >/dev/null 2>&1; then
+  echo "pre-commit not found: please install or check your PATH" >&2
+  echo "See https://pre-commit.com/#installation" >&2
+  exit 1
+fi
+
+pre-commit install --install-hooks
+pre-commit install --hook-type commit-msg --install-hooks
diff --git a/bin/kitchen b/bin/kitchen
new file mode 100755 (executable)
index 0000000..981b899
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env ruby
+
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# 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')
index 8c1086d5a5c78fff2edcae1bb7a820bb2fbd6d6f..5e707293a7aa62f0183db79bb7579415d607e53e 100644 (file)
@@ -24,6 +24,9 @@ provisioner:
 
 platforms:
   ## SALT `tiamat`
+  - name: debian-11-tiamat-py3
+    driver:
+      image: saltimages/salt-tiamat-py3:debian-11
   - name: debian-10-tiamat-py3
     driver:
       image: saltimages/salt-tiamat-py3:debian-10
@@ -38,6 +41,9 @@ platforms:
       image: saltimages/salt-tiamat-py3:centos-7
 
   ## SALT `master`
+  - name: debian-11-master-py3
+    driver:
+      image: saltimages/salt-master-py3:debian-11
   - name: debian-10-master-py3
     driver:
       image: saltimages/salt-master-py3:debian-10
@@ -51,61 +57,53 @@ platforms:
     driver:
       image: saltimages/salt-master-py3:centos-7
 
-  ## SALT `3003.1`
-  - name: debian-10-3003-1-py3
+  ## SALT `3003.3`
+  - name: debian-11-3003.3-py3
     driver:
-      image: saltimages/salt-3003.1-py3:debian-10
-  - name: ubuntu-2004-3003-1-py3
+      image: saltimages/salt-3003.3-py3:debian-11
+  - name: debian-10-3003.3-py3
     driver:
-      image: saltimages/salt-3003.1-py3:ubuntu-20.04
-  - name: ubuntu-1804-3003-1-py3
+      image: saltimages/salt-3003.3-py3:debian-10
+  - name: ubuntu-2004-3003.3-py3
     driver:
-      image: saltimages/salt-3003.1-py3:ubuntu-18.04
-  - name: centos-7-3003-1-py3
-    driver:
-      image: saltimages/salt-3003.1-py3:centos-7
-
-  ## SALT `3002.6`
-  - name: debian-10-3002-6-py3
+      image: saltimages/salt-3003.3-py3:ubuntu-20.04
+  - name: ubuntu-1804-3003.3-py3
     driver:
-      image: saltimages/salt-3002.6-py3:debian-10
-  - name: ubuntu-2004-3002-6-py3
+      image: saltimages/salt-3003.3-py3:ubuntu-18.04
+  - name: centos-7-3003.3-py3
     driver:
-      image: saltimages/salt-3002.6-py3:ubuntu-20.04
-  - name: ubuntu-1804-3002-6-py3
-    driver:
-      image: saltimages/salt-3002.6-py3:ubuntu-18.04
-  - name: centos-7-3002-6-py3
-    driver:
-      image: saltimages/salt-3002.6-py3:centos-7
+      image: saltimages/salt-3003.3-py3:centos-7
 
-  ## SALT `3001.7`
-  - name: debian-10-3001-7-py3
+  ## SALT `3002.7`
+  - name: debian-11-3002.7-py3
+    driver:
+      image: saltimages/salt-3002.7-py3:debian-11
+  - name: debian-10-3002.7-py3
     driver:
-      image: saltimages/salt-3001.7-py3:debian-10
-  - name: ubuntu-2004-3001-7-py3
+      image: saltimages/salt-3002.7-py3:debian-10
+  - name: ubuntu-2004-3002.7-py3
     driver:
-      image: saltimages/salt-3001.7-py3:ubuntu-20.04
-  - name: ubuntu-1804-3001-7-py3
+      image: saltimages/salt-3002.7-py3:ubuntu-20.04
+  - name: ubuntu-1804-3002.7-py3
     driver:
-      image: saltimages/salt-3001.7-py3:ubuntu-18.04
-  - name: centos-7-3001-7-py3
+      image: saltimages/salt-3002.7-py3:ubuntu-18.04
+  - name: centos-7-3002.7-py3
     driver:
-      image: saltimages/salt-3001.7-py3:centos-7
+      image: saltimages/salt-3002.7-py3:centos-7
 
-  ## SALT `3000.9`
-  - name: debian-10-3000-9-py3
+  ## SALT `3001.8`
+  - name: debian-10-3001.8-py3
     driver:
-      image: saltimages/salt-3000.9-py3:debian-10
-  - name: ubuntu-1804-3000-9-py3
+      image: saltimages/salt-3001.8-py3:debian-10
+  - name: ubuntu-2004-3001.8-py3
     driver:
-      image: saltimages/salt-3000.9-py3:ubuntu-18.04
-  - name: centos-7-3000-9-py3
+      image: saltimages/salt-3001.8-py3:ubuntu-20.04
+  - name: ubuntu-1804-3001.8-py3
     driver:
-      image: saltimages/salt-3000.9-py3:centos-7
-  - name: ubuntu-1804-3000-9-py2
+      image: saltimages/salt-3001.8-py3:ubuntu-18.04
+  - name: centos-7-3001.8-py3
     driver:
-      image: saltimages/salt-3000.9-py2:ubuntu-18.04
+      image: saltimages/salt-3001.8-py3:centos-7
 
 verifier:
   # https://www.inspec.io/
index 78676f16fddc217e34edb8ec17571ba1d3921853..2347f57baf14d45bb40b22513174cd8096224501 100644 (file)
@@ -132,8 +132,10 @@ arvados:
     # this formula. The following dict is just an example that will be used
     # by the `arvados.api.resources.virtual_machines` state to add entries
     # in Arvados' database of the cluster's resources'
-    # It's additionally used in the `test/salt/pillar/examples/nginx_webshell_configuration.sls`
-    # pillar to add the corresponding `location` entries in nginx's webshell vhosts & upstreams
+    # It's additionally used in the
+    #   `test/salt/pillar/examples/nginx_webshell_configuration.sls`
+    # pillar to add the corresponding `location` entries in nginx's webshell
+    # vhosts & upstreams
     resources:
       virtual_machines:
         shell1:
index 17f1d5e8cc161e1614861d8a3037457e700dfbcb..601119f2ba15088487dd6ef4137ca1931223e6f2 100644 (file)
@@ -1,26 +1,29 @@
-# frozen_string_literal: true
-
 # Copyright (C) The Arvados Authors. All rights reserved.
 #
 # SPDX-License-Identifier: Apache-2.0
 
+# frozen_string_literal: true
+
 case os[:name]
 when 'centos'
   repo_file = '/etc/yum.repos.d/arvados.repo'
   repo_url = 'baseurl=http://rpm.arvados.org/CentOS/$releasever/os/$basearch/'
-when 'debian'
-  repo_file = '/etc/apt/sources.list.d/arvados.list'
-  repo_url = 'deb http://apt.arvados.org/buster buster main'
-when 'ubuntu'
+when 'debian', 'ubuntu'
+  # Inspec does not provide a `codename` matcher, so we add ours
+  case platform[:release].to_f.truncate
+  # ubuntu
+  when 18
+    codename = 'bionic'
+  when 20
+    codename = 'focal'
+  # debian
+  when 10
+    codename = 'buster'
+  when 11
+    codename = 'bullseye'
+  end
   repo_file = '/etc/apt/sources.list.d/arvados.list'
-  repo_url = case platform[:release].to_f.truncate
-             when 20
-               'focal'
-             when 18
-               'bionic'
-             when 16
-               'xenial'
-             end
+  repo_url = "deb http://apt.arvados.org/#{codename} #{codename} main"
 end
 
 control 'arvados repository' do
index 7ce0f2d329599576b830ee761ba5277b3125f3c2..ac58157309f9c6f9c0bbd27085611873e8811bd4 100644 (file)
@@ -37,3 +37,29 @@ control 'arvados shell gems' do
     end
   end
 end
+
+control 'arvados shell gems' do
+  title 'should be installed'
+
+  only_if('Skipped in Centos-7 and Ubuntu-18.04') do
+    !((os.redhat? and platform[:release].to_f.truncate == 7) or
+    (os.name == 'ubuntu' and platform[:release].to_f.truncate == 18))
+  end
+
+  describe gem('arvados-cli') do
+    it { should be_installed }
+  end
+end
+
+control 'RVM arvados shell gems' do
+  title 'should be installed'
+
+  only_if('Forced requirement for Centos-7 and Ubuntu-18.04') do
+    (os.redhat? and platform[:release].to_f.truncate == 7) or
+      (os.name == 'ubuntu' and platform[:release].to_f.truncate == 18)
+  end
+
+  describe gem('arvados-cli', '/usr/local/rvm/bin/rvm all do gem') do
+    it { should be_installed }
+  end
+end
index 20f1c4a215e4550271081e83e150f6ee8a308cd3..a9dc3cbf86fed8424e339ca7755210cbc5f327cb 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
 # frozen_string_literal: true
 
 case os[:name]
@@ -5,8 +9,21 @@ when 'centos'
   repo_file = '/etc/yum.repos.d/arvados.repo'
   repo_url = 'baseurl=http://rpm.arvados.org/CentOS/$releasever/dev/$basearch/'
 when 'debian', 'ubuntu'
+  # Inspec does not provide a `codename` matcher, so we add ours
+  case platform[:release].to_f.truncate
+  # ubuntu
+  when 18
+    codename = 'bionic'
+  when 20
+    codename = 'focal'
+  # debian
+  when 10
+    codename = 'buster'
+  when 11
+    codename = 'bullseye'
+  end
   repo_file = '/etc/apt/sources.list.d/arvados.list'
-  repo_url = 'deb http://apt.arvados.org/buster buster-dev main'
+  repo_url = "deb http://apt.arvados.org/#{codename} #{codename}-dev main"
 end
 
 control 'arvados repository' do
index 0bf33570e4de2205eeb037fc330d713f7616648e..a60b41f2f7e70b4e9df30a1e8ff4483d7f566315 100644 (file)
@@ -5,21 +5,24 @@
 
 ### POSTGRESQL
 postgres:
-  # Centos-7's postgres package is too old, so we need to force using upstream's
+  # Centos-7 and Ubuntu-18.04's postgres packages are too old, so we need to force using upstream's
   # This is not required in Debian's family as they already ship with PG +11
-  {%- if salt['grains.get']('os_family') == 'RedHat' %}
+  {%- if salt['grains.get']('osfinger') in ['Ubuntu-18.04', 'CentOS Linux-7'] %}
   use_upstream_repo: true
   version: '12'
 
+    {%- if salt['grains.get']('osfinger') == 'CentOS Linux-7' %}
   pkgs_deps:
     - libicu
     - libxslt
     - systemd-sysv
-
   pkgs_extra:
     - postgresql12-contrib
 
+    {%- endif %}
+
   {%- else %}
+  use_upstream_repo: false
   pkgs_extra:
     - postgresql-contrib
   {%- endif %}