我正在配置一个需要添加多个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
中添加列表来添加额外的键。
您的任务中出现了一些小错误
正确的方法是:
- name: Add keys
apt_key:
url: "{{ item }}"
state: present
loop: "{{ gpg_keys }}"
- 您已经有了密钥
url
,所以准备url=
是不正确的 loop
是任务的参数,而不是apt_key
模块的参数,因此它需要缩进到apt_key
的级别(与url
不同,后者是模型的参数(
旁注:
- 您还需要确保
gpg_keys
包含一个类似于apt_packages
的列表 apt
的name
参数接受一个列表,正如您在vars.yml
中正确定义的那样,没有逗号分隔的字符串。(你已经做对了(
文档:
- apt
- apt_key