Add software BOM to docs 05/4705/1
authorTodd Malsbary <todd.malsbary@intel.com>
Tue, 1 Mar 2022 23:24:38 +0000 (15:24 -0800)
committerTodd Malsbary <todd.malsbary@intel.com>
Wed, 2 Mar 2022 17:00:07 +0000 (09:00 -0800)
Signed-off-by: Todd Malsbary <todd.malsbary@intel.com>
Change-Id: Id729a558d1aabdb2b80d06f16f224dc5d2e627c6

README.md
doc/software-bom.md [new file with mode: 0644]
tools/software-bom.sh [new file with mode: 0755]

index b19106e..0a0199b 100644 (file)
--- a/README.md
+++ b/README.md
@@ -15,6 +15,7 @@ cluster is entirely configured.
 1. [Quick start](doc/quick-start.md)
 2. [Installation guide](doc/installation-guide.md)
 3. [Troubleshooting](doc/troubleshooting.md)
+4. [Software BOM](doc/software-bom.md)
 
 # Reporting a bug
 
diff --git a/doc/software-bom.md b/doc/software-bom.md
new file mode 100644 (file)
index 0000000..0c94508
--- /dev/null
@@ -0,0 +1,41 @@
+<!-- Markdown generated from tools/software-bom.sh. DO NOT EDIT. -->
+
+# Software BOM
+
+## Jump server
+
+|Component|Version|
+|---|---|
+|OS|Ubuntu 20.04|
+|K8s|v1.20.7 (Kubespray 2.16.0)|
+|Docker|19.03 (Kubespray 2.16.0)|
+|Flannel|v0.13.0 (Kubespray 2.16.0)|
+|Ironic|capm3-v0.5.4|
+|cert-manager|v1.7.1|
+|Bare Metal Operator|capm3-v0.5.4|
+|Cluster API|v0.4.7|
+|Flux|0.27.0|
+
+## Compute cluster
+
+|Component|Version|
+|---|---|
+|OS|Ubuntu 20.04|
+|K8s|v1.21.6|
+|containerd|1.4.11-1|
+|Calico|v3.22.0|
+|Containerized Data Importer|v1.44.1|
+|cert-manager|v1.7.1|
+|CPU Manager for Kubernetes|v1.4.1|
+|EMCO|v21.12|
+|Flux|0.27.0|
+|Intel Network Adapter Virtual Function Driver Installer|latest|
+|Kata Containers|2.3.2|
+|KubeVirt|v0.50.0|
+|Multus|v3.8|
+|Node Feature Discovery|v0.10.1|
+|Nodus|dd9985e5be010b764b324b57c1afe985a59abf68|
+|Intel QAT Device Plugin|v0.23.0|
+|Intel QAT Driver Installer|latest|
+|SR-IOV Network Operator|v1.1.0|
+
diff --git a/tools/software-bom.sh b/tools/software-bom.sh
new file mode 100755 (executable)
index 0000000..fb8f996
--- /dev/null
@@ -0,0 +1,143 @@
+#!/bin/bash
+set -eu -o pipefail
+
+SCRIPTDIR="$(readlink -f $(dirname ${BASH_SOURCE[0]}))"
+LIBDIR="$(dirname ${SCRIPTDIR})/env/lib"
+ICNDIR="$(dirname ${SCRIPTDIR})"
+
+source $LIBDIR/common.sh
+
+function table_header {
+    cat <<EOF
+|Component|Version|
+|---|---|
+EOF
+}
+
+function jump_server_os {
+    case $(awk '/m.vm.box = / {print $3}' ${ICNDIR}/Vagrantfile | tr -d "'") in
+       "intergratedcloudnative/ubuntu2004") version="Ubuntu 20.04" ;;
+       *) version="UNKNOWN" ;;
+    esac
+    echo "|OS|${version}|"
+}
+
+function kubespray_version {
+    awk -F= '/KUBESPRAY_VERSION=/ {print $2}' ${ICNDIR}/deploy/kud/kud_bm_launch.sh
+}
+function jump_server_k8s {
+    local -r version=$(curl -sL https://raw.githubusercontent.com/kubernetes-sigs/kubespray/v$(kubespray_version)/roles/kubespray-defaults/defaults/main.yaml | awk '/kube_version:/ {print $2}')
+    echo "|K8s|${version} (Kubespray $(kubespray_version))|"
+}
+
+function jump_server_cri {
+    local -r version=$(curl -sL https://raw.githubusercontent.com/kubernetes-sigs/kubespray/v$(kubespray_version)/roles/container-engine/docker/defaults/main.yml | awk '/docker_version:/ {print $2}' | tr -d "'")
+    echo "|Docker|${version} (Kubespray $(kubespray_version))|"
+}
+
+function jump_server_cni {
+    # kud/hosting_providers/vagrant/inventory/group_vars/k8s-cluster.yml:kube_network_plugin: flannel
+    local -r version=$(curl -sL https://raw.githubusercontent.com/kubernetes-sigs/kubespray/v$(kubespray_version)/roles/download/defaults/main.yml | awk '/flannel_version:/ {print $2}' | tr -d '"')
+    echo "|Flannel|${version} (Kubespray $(kubespray_version))|"
+}
+
+function jump_server_addons {
+    cat <<EOF
+|Ironic|${BMO_VERSION}|
+|cert-manager|${CERT_MANAGER_VERSION}|
+|Bare Metal Operator|${BMO_VERSION}|
+|Cluster API|${CAPI_VERSION}|
+|Flux|${FLUX_VERSION}|
+EOF
+}
+
+function jump_server {
+    table_header
+    jump_server_os
+    jump_server_k8s
+    jump_server_cri
+    jump_server_cni
+    jump_server_addons
+}
+
+function compute_cluster_os {
+    case $(awk '/imageName:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml) in
+       "focal-server-cloudimg-amd64.img") version="Ubuntu 20.04" ;;
+       *) version="UNKNOWN" ;;
+    esac
+    echo "|OS|${version}|"
+}
+
+function compute_cluster_k8s {
+    local -r version=$(awk '/k8sVersion:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml)
+    echo "|K8s|${version}|"
+}
+
+function compute_cluster_cri {
+    local -r version=$(awk '/containerdVersion:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml)
+    echo "|containerd|${version}|"
+}
+
+function compute_cluster_cni {
+    echo "|Calico|${CALICO_VERSION}|"
+}
+
+function git_repository_tag {
+    local -r source_yaml=$1
+    awk '/tag:/ {print $2}' ${source_yaml}
+}
+
+function image_tag {
+    local -r source_yaml=$1
+    local -r image_name=$2
+    awk -F: '/image:.*'"${image_name}"'/ {print $3}' ${source_yaml} | tr -d '"' 
+}
+
+function ref_tag {
+    local -r kustomization_yaml=$1
+    awk -F= '/?ref=/ {print $2}' ${kustomization_yaml} | tr -d "'"
+}
+
+function compute_cluster_addons {
+    cat <<EOF
+|Containerized Data Importer|${CDI_VERSION}|
+|cert-manager|${CERT_MANAGER_VERSION}|
+|CPU Manager for Kubernetes|${CPU_MANAGER_VERSION}|
+|EMCO|$(git_repository_tag ${ICNDIR}/deploy/site/cluster-icn/emco-source.yaml)|
+|Flux|${FLUX_VERSION}|
+|Intel Network Adapter Virtual Function Driver Installer|$(image_tag ${ICNDIR}/deploy/iavf-driver-installer/icn/daemonset.yaml iavf-driver-installer)|
+|Kata Containers|${KATA_VERSION}|
+|KubeVirt|${KUBEVIRT_VERSION}|
+|Multus|${MULTUS_VERSION}|
+|Node Feature Discovery|$(ref_tag ${ICNDIR}/deploy/node-feature-discovery/icn/kustomization.yaml)|
+|Nodus|${NODUS_VERSION}|
+|Intel QAT Device Plugin|${QAT_VERSION}|
+|Intel QAT Driver Installer|$(image_tag ${ICNDIR}/deploy/qat-driver-installer/icn/daemonset.yaml qat-driver-installer)|
+|SR-IOV Network Operator|$(git_repository_tag ${ICNDIR}/deploy/sriov-network-operator/icn/source.yaml)|
+EOF
+}
+
+function compute_cluster {
+    table_header
+    compute_cluster_os
+    compute_cluster_k8s
+    compute_cluster_cri
+    compute_cluster_cni
+    compute_cluster_addons
+}
+
+cat <<EOF >${ICNDIR}/doc/software-bom.md
+<!-- Markdown generated from tools/software-bom.sh. DO NOT EDIT. -->
+
+# Software BOM
+
+## Jump server
+
+$(jump_server)
+
+## Compute cluster
+
+$(compute_cluster)
+
+EOF