不,Ansible dnf 模块不支持启用 Copr 存储库。
您可以添加一个任务来测试您的 Copr 存储库是否已启用,以保护 Copr 启用任务。
例子:
shell:
cmd: |
dnf -C repolist enabled -v | grep '^Repo-id' | awk '$3 == "copr:copr.fedorainfracloud.org:ganto:lxd" {print "enabled"}'
warn: no
check_mode: no
changed_when: false
register: lxd_copr
- name: Enable Fedora Copr for LXD
command:
cmd: dnf -y copr enable ganto/lxd
warn: no
when: lxd_copr.stdout == ''
笔记:
- 仔细检查您的 copr 存储库的 ID,因为它与您用于启用它的短名称不同
- 我设置
warn: no
是因为 ansible 警告所有dnf
命令(因为它建议使用 dnf 模块,如果可能的话)
- 我设置
check_mode: no
了,因为即使在--check
模式下也可以安全地执行它
- 我设置
changed_when: false
是因为该命令不会改变系统状态
yum_repository
或者,您可以使用Ansible 模块添加和启用 Copr 存储库。
例子:
- name: enable copr
yum_repository:
name: "copr:copr.fedorainfracloud.org:{{ item[0] }}:{{ item[1] }}"
file: "_copr:copr.fedorainfracloud.org:{{ item[0] }}:{{ item[1] }}"
description: "{{ item[2] }}"
baseurl: "{{ copr_url }}/results/{{ item[0] }}/{{ item[1] }}/fedora-$releasever-$basearch/"
gpgkey: "{{ copr_url }}/results/{{ item[0] }}/{{ item[1] }}/pubkey.gpg"
gpgcheck: yes
enabled: yes
skip_if_unavailable: yes
vars:
#copr_url: https://copr-be.cloud.fedoraproject.org
copr_url: https://download.copr.fedorainfracloud.org
loop:
- [ganto, lxd, "Copr repo for LXD"]
这近似于dnf copr enable ganto/lxd
调用的效果。但是在生成的文件中存在一些细微的文本差异.repo
(例如,True
与1
,缺少默认值的键),如果例如存储库已经启用了,则会导致此任务报告更改dnf copr
。
此外,这可以说具有更高的维护开销,因为必须跟踪 Copr 对其.repo
文件引入的更改。