带循环的ansible apt-key模块
ansible apt-key module with loop
我正在配置一个需要添加多个 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
中正确定义的那样,没有逗号分隔的字符串。 (你已经做对了)
文档:
我正在配置一个需要添加多个 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
中正确定义的那样,没有逗号分隔的字符串。 (你已经做对了)
文档: