如何在Ansible中仅注册OpenShift集群的主版本号?
解决方案
有两种实用方式可以提取出主版本号(如4.8):
方式一:在Shell命令中直接处理
修改原有的Shell任务,通过文本处理工具直接截取主版本部分:
- name: get ocp major version shell: "oc get clusterversion | awk '{split($2, ver, \".\"); print ver[1]\".\"ver[2]}' | tail -1" register: ver
或者用cut命令实现更简洁的截取:
- name: get ocp major version shell: "oc get clusterversion | awk '{print $2}' | tail -1 | cut -d. -f1,2" register: ver
方式二:通过Ansible变量过滤器处理
如果保留原Shell命令不变,也可以在后续使用变量时,用正则过滤器提取主版本:
# 原任务保持不变 - name: get ocp version shell: "oc get clusterversion | awk '{print $2}'| tail -1" register: ver # 后续使用时提取主版本 - name: print ocp major version debug: msg: "{{ ver.stdout | regex_replace('^(\\d+\\.\\d+)\\..*$', '\\1') }}"
这里的regex_replace会匹配版本号的前两位数字段,自动忽略后面的小版本部分。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

