From d2b23cda807ba4782c6d6a6af7d5a9e929bb70c7 Mon Sep 17 00:00:00 2001 From: Vignesh Goutham Ganesh Date: Tue, 11 Jan 2022 21:26:09 -0800 Subject: [PATCH 05/18] Additional EKS-A specific goss validations Signed-off-by: Vignesh Goutham Ganesh --- images/capi/packer/config/ansible-args.json | 2 +- images/capi/packer/config/kubernetes.json | 1 + images/capi/packer/goss/goss-command.yaml | 16 ++++++++++++++++ images/capi/packer/goss/goss-files.yaml | 6 ++++++ images/capi/packer/goss/goss-vars.yaml | 6 ++++++ images/capi/packer/ova/packer-node.json | 7 ++++++- 6 files changed, 36 insertions(+), 2 deletions(-) diff --git a/images/capi/packer/config/ansible-args.json b/images/capi/packer/config/ansible-args.json index 7d61321df..62990ab41 100644 --- a/images/capi/packer/config/ansible-args.json +++ b/images/capi/packer/config/ansible-args.json @@ -1,5 +1,5 @@ { "ansible_common_ssh_args": "-o IdentitiesOnly=yes -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa", - "ansible_common_vars": "containerd_url={{user `containerd_url`}} containerd_sha256={{user `containerd_sha256`}} pause_image={{user `pause_image`}} containerd_additional_settings={{user `containerd_additional_settings`}} containerd_cri_socket={{user `containerd_cri_socket`}} containerd_version={{user `containerd_version`}} containerd_wasm_shims_url={{user `containerd_wasm_shims_url`}} containerd_wasm_shims_version={{user `containerd_wasm_shims_version`}} containerd_wasm_shims_sha256={{user `containerd_wasm_shims_sha256`}} containerd_wasm_shims_runtimes=\"{{user `containerd_wasm_shims_runtimes`}}\" crictl_url={{user `crictl_url`}} crictl_sha256={{user `crictl_sha256`}} crictl_source_type={{user `crictl_source_type`}} custom_role_names=\"{{user `custom_role_names`}}\" firstboot_custom_roles_pre=\"{{user `firstboot_custom_roles_pre`}}\" firstboot_custom_roles_post=\"{{user `firstboot_custom_roles_post`}}\" node_custom_roles_pre=\"{{user `node_custom_roles_pre`}}\" node_custom_roles_post=\"{{user `node_custom_roles_post`}}\" disable_public_repos={{user `disable_public_repos`}} extra_debs=\"{{user `extra_debs`}}\" extra_repos=\"{{user `extra_repos`}}\" extra_rpms=\"{{user `extra_rpms`}}\" http_proxy={{user `http_proxy`}} https_proxy={{user `https_proxy`}} kubeadm_template={{user `kubeadm_template`}} kubernetes_cni_http_source={{user `kubernetes_cni_http_source`}} kubernetes_cni_http_checksum={{user `kubernetes_cni_http_checksum`}} kubernetes_http_source={{user `kubernetes_http_source`}} kubernetes_container_registry={{user `kubernetes_container_registry`}} kubernetes_rpm_repo={{user `kubernetes_rpm_repo`}} kubernetes_rpm_gpg_key={{user `kubernetes_rpm_gpg_key`}} kubernetes_rpm_gpg_check={{user `kubernetes_rpm_gpg_check`}} kubernetes_deb_repo={{user `kubernetes_deb_repo`}} kubernetes_deb_gpg_key={{user `kubernetes_deb_gpg_key`}} kubernetes_cni_deb_version={{user `kubernetes_cni_deb_version`}} kubernetes_cni_rpm_version={{user `kubernetes_cni_rpm_version`}} kubernetes_cni_semver={{user `kubernetes_cni_semver`}} kubernetes_cni_source_type={{user `kubernetes_cni_source_type`}} kubernetes_semver={{user `kubernetes_semver`}} kubernetes_source_type={{user `kubernetes_source_type`}} kubernetes_load_additional_imgs={{user `kubernetes_load_additional_imgs`}} kubernetes_deb_version={{user `kubernetes_deb_version`}} kubernetes_rpm_version={{user `kubernetes_rpm_version`}} no_proxy={{user `no_proxy`}} pip_conf_file={{user `pip_conf_file`}} python_path={{user `python_path`}} redhat_epel_rpm={{user `redhat_epel_rpm`}} epel_rpm_gpg_key={{user `epel_rpm_gpg_key`}} reenable_public_repos={{user `reenable_public_repos`}} remove_extra_repos={{user `remove_extra_repos`}} systemd_prefix={{user `systemd_prefix`}} sysusr_prefix={{user `sysusr_prefix`}} sysusrlocal_prefix={{user `sysusrlocal_prefix`}} load_additional_components={{ user `load_additional_components`}} additional_registry_images={{ user `additional_registry_images`}} additional_registry_images_list={{ user `additional_registry_images_list`}} additional_url_images={{ user `additional_url_images`}} additional_url_images_list={{ user `additional_url_images_list`}} additional_executables={{ user `additional_executables`}} additional_executables_list={{ user `additional_executables_list`}} additional_executables_destination_path={{ user `additional_executables_destination_path`}} additional_s3={{ user `additional_s3`}} build_target={{ user `build_target`}} amazon_ssm_agent_rpm={{ user `amazon_ssm_agent_rpm` }} etcd_http_source={{user `etcd_http_source`}} etcd_version={{user `etcd_version`}} etcdadm_http_source={{user `etcdadm_http_source`}}", + "ansible_common_vars": "containerd_url={{user `containerd_url`}} containerd_sha256={{user `containerd_sha256`}} pause_image={{user `pause_image`}} containerd_additional_settings={{user `containerd_additional_settings`}} containerd_cri_socket={{user `containerd_cri_socket`}} containerd_version={{user `containerd_version`}} containerd_wasm_shims_url={{user `containerd_wasm_shims_url`}} containerd_wasm_shims_version={{user `containerd_wasm_shims_version`}} containerd_wasm_shims_sha256={{user `containerd_wasm_shims_sha256`}} containerd_wasm_shims_runtimes=\"{{user `containerd_wasm_shims_runtimes`}}\" crictl_url={{user `crictl_url`}} crictl_sha256={{user `crictl_sha256`}} crictl_source_type={{user `crictl_source_type`}} custom_role_names=\"{{user `custom_role_names`}}\" firstboot_custom_roles_pre=\"{{user `firstboot_custom_roles_pre`}}\" firstboot_custom_roles_post=\"{{user `firstboot_custom_roles_post`}}\" node_custom_roles_pre=\"{{user `node_custom_roles_pre`}}\" node_custom_roles_post=\"{{user `node_custom_roles_post`}}\" disable_public_repos={{user `disable_public_repos`}} extra_debs=\"{{user `extra_debs`}}\" extra_repos=\"{{user `extra_repos`}}\" extra_rpms=\"{{user `extra_rpms`}}\" http_proxy={{user `http_proxy`}} https_proxy={{user `https_proxy`}} kubeadm_template={{user `kubeadm_template`}} kubernetes_cni_http_source={{user `kubernetes_cni_http_source`}} kubernetes_cni_http_checksum={{user `kubernetes_cni_http_checksum`}} kubernetes_http_source={{user `kubernetes_http_source`}} kubernetes_container_registry={{user `kubernetes_container_registry`}} kubernetes_rpm_repo={{user `kubernetes_rpm_repo`}} kubernetes_rpm_gpg_key={{user `kubernetes_rpm_gpg_key`}} kubernetes_rpm_gpg_check={{user `kubernetes_rpm_gpg_check`}} kubernetes_deb_repo={{user `kubernetes_deb_repo`}} kubernetes_deb_gpg_key={{user `kubernetes_deb_gpg_key`}} kubernetes_cni_deb_version={{user `kubernetes_cni_deb_version`}} kubernetes_cni_rpm_version={{user `kubernetes_cni_rpm_version`}} kubernetes_cni_semver={{user `kubernetes_cni_semver`}} kubernetes_cni_source_type={{user `kubernetes_cni_source_type`}} kubernetes_semver={{user `kubernetes_semver`}} kubernetes_source_type={{user `kubernetes_source_type`}} kubernetes_load_additional_imgs={{user `kubernetes_load_additional_imgs`}} kubernetes_deb_version={{user `kubernetes_deb_version`}} kubernetes_rpm_version={{user `kubernetes_rpm_version`}} no_proxy={{user `no_proxy`}} pip_conf_file={{user `pip_conf_file`}} python_path={{user `python_path`}} redhat_epel_rpm={{user `redhat_epel_rpm`}} epel_rpm_gpg_key={{user `epel_rpm_gpg_key`}} reenable_public_repos={{user `reenable_public_repos`}} remove_extra_repos={{user `remove_extra_repos`}} systemd_prefix={{user `systemd_prefix`}} sysusr_prefix={{user `sysusr_prefix`}} sysusrlocal_prefix={{user `sysusrlocal_prefix`}} load_additional_components={{ user `load_additional_components`}} additional_registry_images={{ user `additional_registry_images`}} additional_registry_images_list={{ user `additional_registry_images_list`}} additional_url_images={{ user `additional_url_images`}} additional_url_images_list={{ user `additional_url_images_list`}} additional_executables={{ user `additional_executables`}} additional_executables_list={{ user `additional_executables_list`}} additional_executables_destination_path={{ user `additional_executables_destination_path`}} additional_s3={{ user `additional_s3`}} build_target={{ user `build_target`}} amazon_ssm_agent_rpm={{ user `amazon_ssm_agent_rpm` }} etcd_http_source={{user `etcd_http_source`}} etcd_version={{user `etcd_version`}} etcdadm_http_source={{user `etcdadm_http_source`}} etcd_sha256={{user `etcd_sha256`}} etcdadm_version={{user `etcdadm_version`}}", "ansible_scp_extra_args": "{{env `ANSIBLE_SCP_EXTRA_ARGS`}}" } diff --git a/images/capi/packer/config/kubernetes.json b/images/capi/packer/config/kubernetes.json index 80f93c5c3..32b0543f4 100644 --- a/images/capi/packer/config/kubernetes.json +++ b/images/capi/packer/config/kubernetes.json @@ -20,6 +20,7 @@ "etcd_version":"", "etcdadm_http_source":"", "kubernetes_semver": "v1.25.10", + "kubernetes_full_version": "v1.25.10", "kubernetes_series": "v1.25", "kubernetes_source_type": "pkg", "systemd_prefix": "/usr/lib/systemd", diff --git a/images/capi/packer/goss/goss-command.yaml b/images/capi/packer/goss/goss-command.yaml index 1ab83545e..f5cf16cf5 100644 --- a/images/capi/packer/goss/goss-command.yaml +++ b/images/capi/packer/goss/goss-command.yaml @@ -27,6 +27,11 @@ command: stderr: [ ] timeout: 0 {{end}} + cat /etc/containerd/config.toml | grep sandbox_image | tr -d '"' | awk -F ' = ' '{print $2}': + exit-status: 0 + stderr: [] + timeout: 0 + stdout: [{{ .Vars.pause_image }}] {{if eq .Vars.kubernetes_source_type "pkg"}} {{if eq .Vars.kubernetes_cni_source_type "pkg"}} crictl images | grep -v 'IMAGE ID' | awk -F'[ /]' '{print $2}' | sed 's/-{{ .Vars.arch }}//g' | sort: @@ -43,6 +48,12 @@ command: stderr: [] timeout: 0 stdout: ["kube-apiserver", "kube-controller-manager", "kube-proxy", "kube-scheduler"] +# Make sure at least one of the embedded images is tagged with eks-d tag + crictl images | grep -v 'IMAGE ID' | awk -F'[ ]+' '{print $2}': + exit-status: 0 + stderr: [] + timeout: 0 + stdout: [{{ .Vars.kubernetes_version }}] {{end}} {{if and (eq .Vars.kubernetes_source_type "http") (eq .Vars.kubernetes_cni_source_type "http") (.Vars.kubernetes_load_additional_imgs)}} # The second last pipe of awk is to take out arch from kube-apiserver-amd64 (i.e. amd64 or any other arch) @@ -83,6 +94,11 @@ command: stderr: [] timeout: 0 {{end}} + etcdadm version --short: + exit-status: 0 + stdout: [{{ .Vars.etcdadm_version }}] + stderr: [] + timeout: 0 {{range $name, $vers := index .Vars .Vars.OS .Vars.PROVIDER "command"}} {{ $name }}: {{range $key, $val := $vers}} diff --git a/images/capi/packer/goss/goss-files.yaml b/images/capi/packer/goss/goss-files.yaml index 278f403fa..eb92570cc 100644 --- a/images/capi/packer/goss/goss-files.yaml +++ b/images/capi/packer/goss/goss-files.yaml @@ -1,4 +1,10 @@ file: + /var/cache/etcdadm/etcd/{{ .Vars.etcd_version }}/etcd-{{ .Vars.etcd_version }}-linux-amd64.tar.gz: + exists: true + sha256: {{ .Vars.etcd_sha256 }} + /opt/cni/bin/host-device: + exists: true + sha256: {{ .Vars.kubernetes_cni_host_device_sha256 }} {{range $name, $vers := index .Vars .Vars.OS "common-files"}} {{ $name }}: exists: {{ $vers.exists }} diff --git a/images/capi/packer/goss/goss-vars.yaml b/images/capi/packer/goss/goss-vars.yaml index 41e3ed024..504e48482 100644 --- a/images/capi/packer/goss/goss-vars.yaml +++ b/images/capi/packer/goss/goss-vars.yaml @@ -88,6 +88,12 @@ kubernetes_cni_rpm_version: "" # When k8s and k8s cni source is http kubernetes_load_additional_imgs: false +etcd_version: "" +etcdadm_version: "" +etcd_sha256: "" +kubernetes_cni_host_device_sha256: "" +pause_image: "" + #windows variables kubernetes_install_path: "" windows_service_manager: "" diff --git a/images/capi/packer/ova/packer-node.json b/images/capi/packer/ova/packer-node.json index 0b3e48792..ff6430db3 100644 --- a/images/capi/packer/ova/packer-node.json +++ b/images/capi/packer/ova/packer-node.json @@ -440,7 +440,12 @@ "kubernetes_deb_version": "{{ user `kubernetes_deb_version` }}", "kubernetes_rpm_version": "{{ split (user `kubernetes_rpm_version`) \"-\" 0 }}", "kubernetes_source_type": "{{user `kubernetes_source_type`}}", - "kubernetes_version": "{{user `kubernetes_semver` | replace \"v\" \"\" 1}}" + "kubernetes_version": "{{user `kubernetes_semver` | replace \"v\" \"\" 1}}", + "etcdadm_version": "{{ user `etcdadm_version` }}", + "etcd_version": "{{ user `etcd_version` }}", + "etcd_sha256": "{{ user `etcd_sha256` }}", + "pause_image": "{{ user `pause_image` }}", + "kubernetes_cni_host_device_sha256": "{{ user `kubernetes_cni_host_device_sha256` }}" }, "version": "{{user `goss_version`}}" } -- 2.39.1