Ansible dnf模块启用Fedora Copr存储库

tvl*_*tvl 7 fedora ansible lxd dnf

我想用Ansible启用Fedora Copr存储库.更具体地说,我想转换此命令:

dnf copr enable ganto/lxd
Run Code Online (Sandbox Code Playgroud)

使用Ansible command模块我克服了这个问题但是打破了任务的幂等性(如果再次运行,角色不应该进行任何更改)(changed_when: false不是一个选项).

- name: Enable Fedora Copr for LXD
  command: "dnf copr enable -y ganto/lxd"
Run Code Online (Sandbox Code Playgroud)

另外,我试过这个:

- name: Install LXD
  dnf:
    name: "{{ item }}"
    state: latest
    enablerepo: "xxx"
  with_items:
    - lxd
    - lxd-client
Run Code Online (Sandbox Code Playgroud)

我在哪里测试选项的许多变化enablerepo而没有任何成功.

这可能是使用dnf Ansible模块(或其他)吗?

Val*_*yov 8

您可以使用creates使您的命令幂等;如果.repo文件已经存在,那么任务将不会运行:

- name: Enable Fedora Copr for LXD
  command:
      cmd: dnf copr enable -y ganto/lxd
      creates: /etc/yum.repos.d/_copr_ganto-lxd.repo
Run Code Online (Sandbox Code Playgroud)

(你必须enabled=1手动检查)

$ cat /etc/yum.repos.d/_copr_ganto-lxd.repo

[ganto-lxd]
name=Copr repo for lxd owned by ganto
baseurl=https://copr-be.cloud.fedoraproject.org/results/ganto/lxd/fedora-$releasever-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/ganto/lxd/pubkey.gpg
repo_gpgcheck=0
enabled=1
Run Code Online (Sandbox Code Playgroud)


Fro*_*tyX 3

现在可以感谢https://docs.ansible.com/ansible/latest/collections/community/general/copr_module.html

原始片段使用command

- name: Enable Fedora Copr for LXD
  command: "dnf copr enable -y ganto/lxd"
Run Code Online (Sandbox Code Playgroud)

可以改为

- name: Enable Fedora Copr for LXD
  community.general.copr:
    name: ganto/lxd
Run Code Online (Sandbox Code Playgroud)