如何只注册OpenShift集群的主要版本


- name: get ocp version
shell: "oc get clusterversion | awk '{print $2}'| tail -1"
register: ver

我已经使用上面的任务在Ansible任务中注册了输出,但ver也会有次要版本——4.8.1,我只需要主要版本,即4.8

Q:"我只需要主要版本

A: 给定注册变量

ver.stdout: 4.8.1

最简单的选项是使用过滤器splitext。例如,

ver_major: "{{ ver.stdout|splitext|first }}"

给出

ver_major: '4.8'

这里,请注意该命令没有用双引号括起来。

- name: get ocp version
shell: oc get clusterversion | awk 'END{split($2,a,".");print a[1] "." a[2]}'
register: ver

带有grep的选项

oc get clusterversion --no-headers | grep -o '[4].[0-9]' | head -1

直接,仅针对版本,带有cut的选项

oc get clusterversion -o jsonpath='{.items[].spec.desiredUpdate.version}{"n"}' | cut -d '.' -f -2

这两者都将导致

4.8

如果您对OpenShift集群分发的规格或升级渠道和版本感兴趣

- name: OC get upgrade channel
shell:
cmd: oc get clusterversion -o jsonpath='{.items[].spec.channel}{"n"}'
# Since this is a reporting task ...
changed_when: false
check_mode: false
register: ver

这将导致

stable-4.8

更多有趣的信息。。。

oc get clusterversion -o jsonpath='{.items[]}{"n"}' | jq .

进一步文档

  • 正在收集有关集群的数据
  • jsonpath的OpenShift管理员指南

最新更新