You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible中如何拼接含AnsibleUnsafeText类型的变量以扩展卷组

Ansible扩展卷组:类型错误问题及解决

问题1:为什么new_pvs是AnsibleUnsafeText类型?

new_pvs是通过字符串拼接的模板表达式生成的("/dev/{{ disk }}{{ next_number }}"),Ansible会将这类直接拼接的模板文本标记为AnsibleUnsafeText类型。这个设计是为了避免自动转义可能包含特殊字符的内容,同时明确该文本是未经安全处理的原始模板输出。

问题2:如何将rootvg_pvs和new_pvs拼接为单个列表?

union过滤器要求两边都是列表类型,而new_pvs是单个文本对象,所以需要把它转换成列表再进行拼接,以下是两种实用方法:

方法1:使用union时临时包装成列表

直接修改表达式,把单个文本放进列表后再做合并,后续传给lvg模块时也用同样写法:

- debug:
    msg:|-
      current_pvs: {{ rootvg_pvs | union([new_pvs]) }}

- name: 扩展rootvg卷组
  lvg:
    vg: rootvg
    pvs: "{{ rootvg_pvs | union([new_pvs]) }}"

方法2:直接将new_pvs定义为列表类型

修改vars里的new_pvs定义,从一开始就把它做成列表:

new_pvs: ["/dev/{{ disk }}{{ next_number }}"]

之后直接用union拼接即可:

- debug:
    msg:|-
      current_pvs: {{ rootvg_pvs | union(new_pvs) }}

补充:用+运算符拼接(无自动去重)

如果能确认新分区不会和现有PV重复,也可以直接用列表加法:

current_pvs: {{ rootvg_pvs + [new_pvs] }}

内容的提问来源于stack exchange,提问作者danidar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:57:24