使用Ansible导入/添加yum .repo文件

rin*_*t.6 3 yum ansible vagrant-provision

我正在尝试使用Ansible从自定义存储库安装MariaDB(或任何软件),但是我不确定如何使用yum / yum_repository模块导入.repo文件。

Ansible

这是我的剧本:

-
    hosts: all
    become: true
    remote_user: root
    tasks:
        -
            name: set system timezone
            timezone:
                name: America/Toronto
        -
            name: add custom repository
            yum_repository:
                name: centos_o
                description: custom repositories
                baseurl: http://example.net/mirror/centos_o.repo
        -
            name: ensure mariadb is installed
            yum:
                name: mariadb-server-5.5.*
                state: installed
Run Code Online (Sandbox Code Playgroud)

我已经尝试了所有include,metalink,baseurl和mirrorlist没有运气。另外,我缺少GPG关键步骤,但是我什至无法正确添加回购协议。

centos_o.repo文件如下所示:

# JENKINS
[jenkins]
name=CentOS-$releasever - JENKINS
baseurl=http://example.net/mirror/jenkins/
enabled=0
gpgcheck=1

# MariaDB 5.5
[mariadb]
name=CentOS-$releasever - MariaDB
baseurl=http://example.net/mirror/mariadb/yum/5.5/centos$releasever-amd64/
enabled=0
gpgcheck=1

# MariaDB 10.0
[mariadb]
name=CentOS-$releasever - MariaDB
baseurl=http://example.net/mirror/mariadb/yum/10.0/centos$releasever-amd64/
enabled=0
gpgcheck=1
Run Code Online (Sandbox Code Playgroud)

贝壳

这是我要转换为Ansible的Shell脚本版本:

yum clean all
yum-config-manager --add-repo=http://example.net/mirror/centos_o.repo
yum-config-manager --enable mariadb
rpm --import http://example.net/mirror/mariadb/RPM-GPG-KEY-MariaDB
Run Code Online (Sandbox Code Playgroud)

如果有什么不同,我可以在CentOS机器上使用Vagrant的Ansible本地供应商运行它。

mda*_*iel 5

这似乎是你是正确的,他们不提供你所追求的。他们的模型是这样的,您将调用yum_repository:3 次,一次使用文件中baseurl=已有的每个值.repo。

因此,鉴于您的情况,我建议您只使用像在 shell 中一样command:运行yum-config-manager --add-repo。唯一的问题是 ifyum-config-manager --add-repo=不是幂等的,在这种情况下,您必须command:手动保护它以防止它在每次运行时一遍又一遍地添加相同的 repo 文件。


小智 5

将shell命令与created标志一起使用。如果回购文件存在,则将跳过该步骤。您需要确保知道什么叫回购文件。

- name: Add CentOS_o repository
  shell: yum-config-manager --add-repo=http://example.net/mirror/centos_o.repo
  args:
    creates: /etc/yum.repos.d/centos_o.repo 
Run Code Online (Sandbox Code Playgroud)

如果您需要向网址添加任何架构,请使用类似

- name: Add CentOS_7_speciality repository
  shell: yum-config-manager --add-repo=http://example.net/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/{{ ansible_architecture }}/
centos_o.repo
  args:
    creates: /etc/yum.repos.d/centos_o.repo 
Run Code Online (Sandbox Code Playgroud)

Ansible会将变量替换为

{{ ansible_distribution | lower }} == centos
{{ ansible_distribution_major_version }} == 7
{{ ansible_architecture }} == x86_64
Run Code Online (Sandbox Code Playgroud)