0

我正在配置一个需要添加多个 GPG 密钥的系统。我正在尝试简化流程并遵循 DRY 原则。

我从 vars 列表中安装了 apt 包,如下所示:

- name: Install packages
  apt: name={{ apt_packages }}

vars.yml看起来像这样的地方:

apt_packages:
  - tilix
  - terraform
  - ansible
  - opera

这是有效的,因为该apt模块接受逗号分隔的输入并进行相应的解析。

所以我试图在使用apt_key模块时实现类似的过程,但我似乎无法让它工作。以下是我所做的一些尝试:

- name Add keys
  apt_key:
    url: url="{{ items }}"
    loop: "{{ gpg_keys }}"
    state: present

- name: Add GPG Keys
  apt_key:
    url: url="{{ gpg_keys }}"
    state: present

两者都抛出不同的错误。

是否可以使用 apt-key 模块做这样的事情?显然,我试图避免为要添加的每个键都有单独的调用者,因为会有很多键,我希望稍后能够通过简单地将列表附加到vars.yml.

4

1 回答 1

0

你的任务中有一些小错误。
正确的做法是这样的:

- name: Add keys
  apt_key:
    url: "{{ item }}"
    state: present
  loop: "{{ gpg_keys }}"
  • 你已经有了密钥url,所以前置url=是不正确的
  • loop是任务的参数而不是apt_key模块的参数,因此它需要缩进到apt_key(与url模型参数不同)

旁注:

  • 您还需要确保gpg_keys包含一个列表,类似于apt_packages.
  • name参数apt接受一个列表,正如您在 中正确定义的那样vars.yml,没有逗号分隔的字符串。(你已经做对了)

文档:

于 2021-06-21T10:41:28.343 回答