【问题标题】:how to trace an existing ansible project如何跟踪现有的 ansible 项目
【发布时间】:2020-11-29 12:30:59
【问题描述】:

我不太确定如何跟踪用 YAML 编写的用于网络设备的现有项目。 我已正确设置系统并完美执行所有任务。但我想检查所有数据都分配了什么。

有没有办法像 python 一样追踪 ansible?

例如:在 python 中,我可以使用 ipdb 模块或只使用 print() 语句来查看所有类型的东西。

【问题讨论】:

  • Ansible playbook 应该是 idempotent,因此您应该能够再次运行 playbook 而无需进行任何更改。但是,更安全的选择是在检查模式-C 下重新运行它,并在-v-vvv 上进行详细打印。 Diff more -D 在您寻找更改时也很好。 ansible-playbook -C -D -vv your_play.yml 将是获取调试输出的完整命令。
  • 谢谢米克。如果我想检查存储在变量中的内容怎么办。调试会是我唯一的选择吗?
  • 据我所知,调试是查看存储在变量中的值的唯一选项

标签: networking automation ansible yaml


【解决方案1】:

Ansible 提供了一个Playbook Debugger,可用于跟踪任务的执行情况。

如果你想调试一个剧中的所有东西,你可以通过debugger: always

- name: some play
  hosts: all
  debugger: always
  tasks: ...

然后你可以使用c命令继续下一个任务,p task_vars查看变量或p result._result查看结果。

调试器也可以像这样用于任务或角色级别:

- hosts: all
  roles:
    - role: dj-wasabi.zabbix-agent
      debugger: always

这有助于不让debug 任务污染您的角色,同时限制调试范围。

另一种方法是使用debug module,类似于在python中使用print语句。你可以像这样在你的任务中使用:

# Example that prints the loopback address and gateway for each host
- debug:
    msg: System {{ inventory_hostname }} has uuid {{ ansible_product_uuid }}

- debug:
    msg: System {{ inventory_hostname }} has gateway {{ ansible_default_ipv4.gateway }}
  when: ansible_default_ipv4.gateway is defined

# Example that prints return information from the previous task
- shell: /usr/bin/uptime
  register: result

- debug:
    var: result
    verbosity: 2

【讨论】:

  • 非常感谢安德鲁。我正是在寻找这个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 2020-01-21
  • 2021-04-07
  • 2017-12-15
  • 1970-01-01
相关资源
最近更新 更多