Reputation: 286
I have this output
- name: debug versions
debug: var=get_version.stdout
tags:
- get_version
my output:
ok: [workstation] => {
"get_version.stdout": "kubeadm_version: \"{{ kube_version }}\"\ncrun_version: 1.4.4\nrunc_version: v1.1.1\nkata_containers_version: 2.2.3\nyouki_version: 0.0.1\ngvisor_version: 20210921\ncontainerd_version: 1.6.3\ncri_dockerd_version: v0.2.0\ndocker_containerd_version: 1.4.12\ncalico_version: \"v3.22.2\"\ncalico_ctl_version: \"{{ calico_version }}\"\ncalico_cni_version: \"{{ calico_version }}\"\ncalico_flexvol_version: \"{{ calico_version }}\"\ncalico_policy_version: \"{{ calico_version }}\"\ncalico_typha_version: \"{{ calico_version }}\"\ncalico_apiserver_version: \"{{ calico_version }}\"\nflannel_version: \"v0.17.0\"\nflannel_cni_version: \"v1.0.1\"\ncni_version: \"v1.0.1\"\nweave_version: 2.8.1\npod_infra_version: \"3.3\"\ncilium_version: \"v1.11.1\"\nkube_ovn_version: \"v1.8.1\"\nkube_router_version: \"v1.4.0\"\nmultus_version: \"v3.8\"\nhelm_version: \"v3.8.2\"\nnerdctl_version: \"0.19.0\"\nkrew_version: \"v0.4.2\"\nkube_major_version: \"{{ kube_version | regex_replace('^v([0-9])+\\\\.([0-9]+)\\\\.[0-9]+', 'v\\\\1.\\\\2') }}\"\netcd_version: \"{{ etcd_supported_versions[kube_major_version] }}\"\ncrictl_version: \"{{ crictl_supported_versions[kube_major_version] }}\"\nnetcheck_version: \"v1.2.2\"\ncoredns_version: \"{{ 'v1.8.6' if (kube_version is version('v1.23.0','>=')) else 'v1.8.0' }}\"\nnodelocaldns_version: \"1.21.1\"\ndnsautoscaler_version: 1.8.5\nmetrics_server_version: \"v0.5.2\"\ncert_manager_version: \"v1.8.0\"\nmetallb_version: v0.12.1"
}
I want to access each tools version value. e.g: v0.12.1
for metallb_version
or 1.6.3
for containerd_version
Upvotes: 0
Views: 227
Reputation: 68404
shell> cat conf.j2
kubeadm_version: "{{ kube_version }}"
crun_version: 1.4.4
runc_version: v1.1.1
kata_containers_version: 2.2.3
youki_version: 0.0.1
gvisor_version: 20210921
containerd_version: 1.6.3
cri_dockerd_version: v0.2.0
docker_containerd_version: 1.4.12
calico_version: "v3.22.2"
calico_ctl_version: "{{ calico_version }}"
calico_cni_version: "{{ calico_version }}"
calico_flexvol_version: "{{ calico_version }}"
calico_policy_version: "{{ calico_version }}"
calico_typha_version: "{{ calico_version }}"
calico_apiserver_version: "{{ calico_version }}"
flannel_version: "v0.17.0"
flannel_cni_version: "v1.0.1"
cni_version: "v1.0.1"
weave_version: 2.8.1
pod_infra_version: "3.3"
cilium_version: "v1.11.1"
kube_ovn_version: "v1.8.1"
kube_router_version: "v1.4.0"
multus_version: "v3.8"
helm_version: "v3.8.2"
nerdctl_version: "0.19.0"
krew_version: "v0.4.2"
kube_major_version: "{{ kube_version | regex_replace('^v([0-9])+\\.([0-9]+)\\.[0-9]+', 'v\\1.\\2') }}"
etcd_version: "{{ etcd_supported_versions[kube_major_version] }}"
crictl_version: "{{ crictl_supported_versions[kube_major_version] }}"
netcheck_version: "v1.2.2"
coredns_version: "{{ 'v1.8.6' if (kube_version is version('v1.23.0','>=')) else 'v1.8.0' }}"
nodelocaldns_version: "1.21.1"
dnsautoscaler_version: 1.8.5
metrics_server_version: "v0.5.2"
cert_manager_version: "v1.8.0"
metallb_version: v0.12.1
What you see is the raw content of the file
- command: cat conf.j2
register: get_version
- debug:
var: get_version.stdout
rendered by the Ansible default
callback plugin (ANSIBLE_STDOUT_CALLBACK=default
)
ok: [localhost] => {
"get_version.stdout": "kubeadm_version: \"{{ kube_version }}\"\ncrun_version: 1.4.4\nrunc_version: v1.1.1\nkata_containers_version: 2.2.3\nyouki_version: 0.0.1\ngvisor_version: 20210921\ncontainerd_version: 1.6.3\ncri_dockerd_version: v0.2.0\ndocker_containerd_version: 1.4.12\ncalico_version: \"v3.22.2\"\ncalico_ctl_version: \"{{ calico_version }}\"\ncalico_cni_version: \"{{ calico_version }}\"\ncalico_flexvol_version: \"{{ calico_version }}\"\ncalico_policy_version: \"{{ calico_version }}\"\ncalico_typha_version: \"{{ calico_version }}\"\ncalico_apiserver_version: \"{{ calico_version }}\"\nflannel_version: \"v0.17.0\"\nflannel_cni_version: \"v1.0.1\"\ncni_version: \"v1.0.1\"\nweave_version: 2.8.1\npod_infra_version: \"3.3\"\ncilium_version: \"v1.11.1\"\nkube_ovn_version: \"v1.8.1\"\nkube_router_version: \"v1.4.0\"\nmultus_version: \"v3.8\"\nhelm_version: \"v3.8.2\"\nnerdctl_version: \"0.19.0\"\nkrew_version: \"v0.4.2\"\nkube_major_version: \"{{ kube_version | regex_replace('^v([0-9])+\\\\.([0-9]+)\\\\.[0-9]+', 'v\\\\1.\\\\2') }}\"\netcd_version: \"{{ etcd_supported_versions[kube_major_version] }}\"\ncrictl_version: \"{{ crictl_supported_versions[kube_major_version] }}\"\nnetcheck_version: \"v1.2.2\"\ncoredns_version: \"{{ 'v1.8.6' if (kube_version is version('v1.23.0','>=')) else 'v1.8.0' }}\"\nnodelocaldns_version: \"1.21.1\"\ndnsautoscaler_version: 1.8.5\nmetrics_server_version: \"v0.5.2\"\ncert_manager_version: \"v1.8.0\"\nmetallb_version: v0.12.1"
}
The same in a quotation block for better readability
ok: [localhost] => { "get_version.stdout": "kubeadm_version: "{{ kube_version }}"\ncrun_version: 1.4.4\nrunc_version: v1.1.1\nkata_containers_version: 2.2.3\nyouki_version: 0.0.1\ngvisor_version: 20210921\ncontainerd_version: 1.6.3\ncri_dockerd_version: v0.2.0\ndocker_containerd_version: 1.4.12\ncalico_version: "v3.22.2"\ncalico_ctl_version: "{{ calico_version }}"\ncalico_cni_version: "{{ calico_version }}"\ncalico_flexvol_version: "{{ calico_version }}"\ncalico_policy_version: "{{ calico_version }}"\ncalico_typha_version: "{{ calico_version }}"\ncalico_apiserver_version: "{{ calico_version }}"\nflannel_version: "v0.17.0"\nflannel_cni_version: "v1.0.1"\ncni_version: "v1.0.1"\nweave_version: 2.8.1\npod_infra_version: "3.3"\ncilium_version: "v1.11.1"\nkube_ovn_version: "v1.8.1"\nkube_router_version: "v1.4.0"\nmultus_version: "v3.8"\nhelm_version: "v3.8.2"\nnerdctl_version: "0.19.0"\nkrew_version: "v0.4.2"\nkube_major_version: "{{ kube_version | regex_replace('^v([0-9])+\\.([0-9]+)\\.[0-9]+', 'v\\1.\\2') }}"\netcd_version: "{{ etcd_supported_versions[kube_major_version] }}"\ncrictl_version: "{{ crictl_supported_versions[kube_major_version] }}"\nnetcheck_version: "v1.2.2"\ncoredns_version: "{{ 'v1.8.6' if (kube_version is version('v1.23.0','>=')) else 'v1.8.0' }}"\nnodelocaldns_version: "1.21.1"\ndnsautoscaler_version: 1.8.5\nmetrics_server_version: "v0.5.2"\ncert_manager_version: "v1.8.0"\nmetallb_version: v0.12.1" }
yaml
callback plugin (ANSIBLE_STDOUT_CALLBACK=yaml
)ok: [localhost] =>
get_version.stdout: |-
kubeadm_version: "{{ kube_version }}"
crun_version: 1.4.4
runc_version: v1.1.1
kata_containers_version: 2.2.3
youki_version: 0.0.1
gvisor_version: 20210921
containerd_version: 1.6.3
cri_dockerd_version: v0.2.0
docker_containerd_version: 1.4.12
calico_version: "v3.22.2"
calico_ctl_version: "{{ calico_version }}"
calico_cni_version: "{{ calico_version }}"
calico_flexvol_version: "{{ calico_version }}"
calico_policy_version: "{{ calico_version }}"
calico_typha_version: "{{ calico_version }}"
calico_apiserver_version: "{{ calico_version }}"
flannel_version: "v0.17.0"
flannel_cni_version: "v1.0.1"
cni_version: "v1.0.1"
weave_version: 2.8.1
pod_infra_version: "3.3"
cilium_version: "v1.11.1"
kube_ovn_version: "v1.8.1"
kube_router_version: "v1.4.0"
multus_version: "v3.8"
helm_version: "v3.8.2"
nerdctl_version: "0.19.0"
krew_version: "v0.4.2"
kube_major_version: "{{ kube_version | regex_replace('^v([0-9])+\\.([0-9]+)\\.[0-9]+', 'v\\1.\\2') }}"
etcd_version: "{{ etcd_supported_versions[kube_major_version] }}"
crictl_version: "{{ crictl_supported_versions[kube_major_version] }}"
netcheck_version: "v1.2.2"
coredns_version: "{{ 'v1.8.6' if (kube_version is version('v1.23.0','>=')) else 'v1.8.0' }}"
nodelocaldns_version: "1.21.1"
dnsautoscaler_version: 1.8.5
metrics_server_version: "v0.5.2"
cert_manager_version: "v1.8.0"
metallb_version: v0.12.1
- debug:
msg: "{{ lookup('template', 'conf.j2') }}"
vars:
kube_major_version: '1'
kube_version: 'v1.23'
calico_version: '3.22'
etcd_supported_versions:
'1': ['3.5', '3.4', '3.3']
crictl_supported_versions:
'1': ['1.15', '1.14', '1.13']
ok: [localhost] =>
msg: |-
kubeadm_version: "v1.23"
crun_version: 1.4.4
runc_version: v1.1.1
kata_containers_version: 2.2.3
youki_version: 0.0.1
gvisor_version: 20210921
containerd_version: 1.6.3
cri_dockerd_version: v0.2.0
docker_containerd_version: 1.4.12
calico_version: "v3.22.2"
calico_ctl_version: "3.22"
calico_cni_version: "3.22"
calico_flexvol_version: "3.22"
calico_policy_version: "3.22"
calico_typha_version: "3.22"
calico_apiserver_version: "3.22"
flannel_version: "v0.17.0"
flannel_cni_version: "v1.0.1"
cni_version: "v1.0.1"
weave_version: 2.8.1
pod_infra_version: "3.3"
cilium_version: "v1.11.1"
kube_ovn_version: "v1.8.1"
kube_router_version: "v1.4.0"
multus_version: "v3.8"
helm_version: "v3.8.2"
nerdctl_version: "0.19.0"
krew_version: "v0.4.2"
kube_major_version: "v1.23"
etcd_version: "['3.5', '3.4', '3.3']"
crictl_version: "['1.15', '1.14', '1.13']"
netcheck_version: "v1.2.2"
coredns_version: "v1.8.0"
nodelocaldns_version: "1.21.1"
dnsautoscaler_version: 1.8.5
metrics_server_version: "v0.5.2"
cert_manager_version: "v1.8.0"
metallb_version: v0.12.1
- template:
src: conf.j2
dest: conf
vars:
kube_major_version: '1'
kube_version: 'v1.23'
calico_version: '3.22'
etcd_supported_versions:
'1': ['3.5', '3.4', '3.3']
crictl_supported_versions:
'1': ['1.15', '1.14', '1.13']
shell> cat conf
kubeadm_version: "v1.23"
crun_version: 1.4.4
runc_version: v1.1.1
kata_containers_version: 2.2.3
youki_version: 0.0.1
gvisor_version: 20210921
containerd_version: 1.6.3
cri_dockerd_version: v0.2.0
docker_containerd_version: 1.4.12
calico_version: "v3.22.2"
calico_ctl_version: "3.22"
calico_cni_version: "3.22"
calico_flexvol_version: "3.22"
calico_policy_version: "3.22"
calico_typha_version: "3.22"
calico_apiserver_version: "3.22"
flannel_version: "v0.17.0"
flannel_cni_version: "v1.0.1"
cni_version: "v1.0.1"
weave_version: 2.8.1
pod_infra_version: "3.3"
cilium_version: "v1.11.1"
kube_ovn_version: "v1.8.1"
kube_router_version: "v1.4.0"
multus_version: "v3.8"
helm_version: "v3.8.2"
nerdctl_version: "0.19.0"
krew_version: "v0.4.2"
kube_major_version: "v1.23"
etcd_version: "['3.5', '3.4', '3.3']"
crictl_version: "['1.15', '1.14', '1.13']"
netcheck_version: "v1.2.2"
coredns_version: "v1.8.0"
nodelocaldns_version: "1.21.1"
dnsautoscaler_version: 1.8.5
metrics_server_version: "v0.5.2"
cert_manager_version: "v1.8.0"
metallb_version: v0.12.1
- include_vars:
file: conf.j2
name: conf
- debug:
var: conf
ok: [localhost] =>
conf:
calico_apiserver_version: '3.22'
calico_cni_version: '3.22'
calico_ctl_version: '3.22'
calico_flexvol_version: '3.22'
calico_policy_version: '3.22'
calico_typha_version: '3.22'
calico_version: v3.22.2
cert_manager_version: v1.8.0
cilium_version: v1.11.1
cni_version: v1.0.1
containerd_version: 1.6.3
coredns_version: v1.8.0
cri_dockerd_version: v0.2.0
crictl_version:
- '1.15'
- '1.14'
- '1.13'
crun_version: 1.4.4
dnsautoscaler_version: 1.8.5
docker_containerd_version: 1.4.12
etcd_version:
- '3.5'
- '3.4'
- '3.3'
flannel_cni_version: v1.0.1
flannel_version: v0.17.0
gvisor_version: 20210921
helm_version: v3.8.2
kata_containers_version: 2.2.3
krew_version: v0.4.2
kube_major_version: v1.23
kube_ovn_version: v1.8.1
kube_router_version: v1.4.0
kubeadm_version: v1.23
metallb_version: v0.12.1
metrics_server_version: v0.5.2
multus_version: v3.8
nerdctl_version: 0.19.0
netcheck_version: v1.2.2
nodelocaldns_version: 1.21.1
pod_infra_version: '3.3'
runc_version: v1.1.1
weave_version: 2.8.1
youki_version: 0.0.1
Upvotes: 1
Reputation: 33231
The |from_yaml
filter was designed for that problem
- set_fact:
metallb_version: '{{ (get_version.stdout | from_yaml).metallb_version }}'
- debug: var=metallb_version
if you want to do multiple of them, then coerce the stdout to a local dict and extract multiple facts at once:
- set_fact:
metallb_version: '{{ ver_dict.metallb_version }}'
containerd_version: '{{ ver_dict.containerd_version }}'
vars:
ver_dict: '{{ get_version.stdout | from_yaml }}'
Upvotes: 3