我是 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。模块无需对此有任何认识或明确支持。功能强大。