【问题标题】:how to get commands from ansible playbook如何从 ansible playbook 获取命令
【发布时间】:2017-09-18 10:43:02
【问题描述】:

有没有一种简单的方法可以找回精确的 ansible 脚本(剧本)正在尝试做的事情?

例如我有

- name: Install required packages
  yum: name={{item}} state=present
  with_items:
    - nmp
  become: True 

我想得到:

sudo yum install nmp

也就是说,我想知道 ansible 正在运行哪些命令(操作系统级别)。 基本上,我需要相反的过程:Ansible and Playbook. How to convert shell commands into yaml syntax?

【问题讨论】:

  • 详细-vvvv
  • 但 Ansible 有时只运行外部命令(实际上在极少数情况下总体上是这样),它主要是 Python 代码和 Python 库。
  • 有趣的一点@techraf - 所以你是说从文件(docs.ansible.com/ansible/file_module.html)之类的模块到操作系统级别的命令没有简单的“翻译”?只有像 command (docs.ansible.com/ansible/command_module.html) 这样的模块 - 只是运行 shell + command 本身才能被“翻译” - 我理解正确吗?
  • 是的,您理解正确。它甚至更复杂,因为单个模块(如yum)的行为取决于参数和安装的库。其他模块也必须处理不同的操作系统类型等。
  • @techraf - 把它写成答案 - 我相信它是有效的

标签: ansible


【解决方案1】:

这里总结一下上面cmets的中心点 [1][2]

Ansible 很少运行外部命令,它主要是用于控制主机的 Python 代码和 Python 库。因此,Ansible 的“翻译”不一定将 yum (Ansible module) 使用转换为 yum (CLI) 调用。

虽然您可以依赖输出,但在某些情况下,通过解析 ansible-playbook -vvv foo.yml 的输出中的命令序列 - 实现充其量是不稳定的。

我鼓励您继续在此线程上讨论您要完成的工作。很可能已经有一个解决方案,有人可以为您指出一个已经存在的工具。

【讨论】:

    猜你喜欢
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2018-08-31
    • 2020-03-28
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多