如何在终端输出已完成变量评估的Ansible任务?
实现Ansible任务输出时完成变量评估的方法
有几种实用方案可以让Ansible任务输出到终端时自动完成变量评估,以下是具体实现:
1. 直接用debug模块输出评估后的任务内容
无需额外变量或文件,直接在debug的消息中编写任务结构,Ansible会自动评估其中的变量:
- name: Show evaluated secret task debug: msg: | - name: Create secret kubernetes.core.k8s: definition: apiVersion: v1 kind: Secret metadata: name: api-token namespace: {{ kubernetes_namespace }} type: Opaque wait: true verbosity: 0 # 强制输出,无需额外添加-v参数
执行后终端会直接展示变量替换完成的完整任务格式,和你期望的可读格式一致。
2. 用set_fact存储评估后的定义再打印
把任务的核心配置存入变量,通过debug输出评估后的变量内容,同时不影响原任务执行:
- name: Prepare evaluated secret definition set_fact: secret_def: apiVersion: v1 kind: Secret metadata: name: api-token namespace: '{{ kubernetes_namespace }}' type: Opaque - name: Print evaluated secret config debug: var: secret_def verbosity: 0 - name: Create secret kubernetes.core.k8s: definition: '{{ secret_def }}' wait: true
这种方式适合需要复用评估后配置的场景,终端输出的secret_def会显示完全替换后的变量值。
3. 生成评估后的文件并打印内容
通过template模块生成包含评估变量的YAML文件,再打印文件内容:
- name: Generate evaluated secret manifest template: dest: /tmp/secret-evaluated.yml content: | apiVersion: v1 kind: Secret metadata: name: api-token namespace: {{ kubernetes_namespace }} type: Opaque - name: Print evaluated manifest command: cat /tmp/secret-evaluated.yml register: manifest_output - debug: msg: '{{ manifest_output.stdout }}'
该方法适合需要留存评估后配置文件,同时在终端展示的场景。
内容的提问来源于stack exchange,提问作者Floren
相关产品推荐
相关产品推荐

