如何使用 Ansible 的 homebrew 模块来断言已安装的软件包列表

如何使用 Ansible 的 homebrew 模块来断言已安装的软件包列表

我是 Ansible 的新用户。我用它来协调几组 Linux 服务器。现在我正在扩展该用途,以便使用Ansible 的 homebrew 模块

使用 homebrew 模块,我想断言我的 macOS 机器上安装了一系列软件包。到目前为止,我能做的最好的就是为每个软件包创建单独的角色,每个角色类似于:

- name: "htop"
  homebrew:
    name: htop
    state: present

似乎必须有一种方法可以提供单个角色中的软件包列表,我以前在使用 Ansible apt 模块时见过这种情况。

有什么建议吗?自制模块本身是否明确支持这种操作,或者 Ansible 甚至 Python 本身是否有更基本的东西可以提供我正在寻找的东西?

PS-您可以放心地假设我的 macOS 机器都是服务器。

答案1

我或多或少找到了一个解决方案。我的角色现在看起来是这样的,而且它有效:

- name: "brew favourites"
  homebrew: name={{ item }} state=present
  with_items:
    - htop
    - nmap
    - telnet
    - wget
    - nginx

扩展说明

我真的不知道是什么机制负责这项工作。我觉得它不在 Ansible 中,实际上是一种 Pythonism(这是 Lamda 吗?)。无论它是什么,它都可以作为解决这类问题的通用解决方案的模板。

在看到类似的定义 apt 包列表的描述后,我尝试了上述方法,该方法如下:

- name: "Asserting apt packages"
  apt: pkg={{ item }} state=installed
  with_items:
    - aptitude
    - vim
    - htop
    - nmap
    - curl
    - screen
    - open-vm-tools

因此请注意apt 模块,我想列出许多软件包参数。在自制模块' 上下文,事实并非如此, 但反而姓名

类似地,两个 Ansible 模块都有一个状态参数,但对于 apt 来说,适当的值是已安装,并且使用自制软件展示

所以我认为这种语法在全局环境中适用于 Ansible。模块无需对此有任何认识或明确支持。功能强大。

相关内容