如何用Ansible内置模块提取目标节点文件内容至变量?
用Ansible内置模块读取/etc/debian_version内容为变量
你可以用Ansible内置的slurp模块实现这个需求,它专门用于读取远程节点上的文件内容,无需额外依赖,完全适配你的Ansible版本。
示例任务
- name: 读取/etc/debian_version文件内容 slurp: path: /etc/debian_version register: debian_version_raw - name: 解码内容并去除首尾空白字符 set_fact: debian_version: "{{ debian_version_raw.content | b64decode | trim }}"
说明
slurp模块会以Base64编码的形式返回文件内容,存放在注册变量debian_version_raw的content字段中- 通过
b64decode过滤器解码为原始字符串,再用trim去除文件末尾的换行符和多余空白,最终得到干净的版本号8.6,存储在debian_version变量中供后续任务使用
备选方案(使用command模块)
如果更习惯用命令行方式读取,也可以用command模块配合stdout处理:
- name: 读取debian版本号 command: cat /etc/debian_version register: debian_version_cmd - name: 提取并格式化版本号 set_fact: debian_version: "{{ debian_version_cmd.stdout | trim }}"
内容的提问来源于stack exchange,提问作者Intrastellar Explorer
相关产品推荐
相关产品推荐

