Importing/adding 使用 Ansible 的 yum .repo 文件
Importing/adding a yum .repo file using Ansible
我正在尝试使用 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
我已经尝试了所有 include
、metalink
、baseurl
和 mirrorlist
,但都没有成功。我也错过了 GPG 关键步骤,但我什至无法正确添加 repo。
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
Shell
这是我要转换为 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
如果有什么不同的话,我在 CentOS 机器上 运行 使用 Vagrant 的 Ansible local 配置器。
appears 你是对的,他们没有提供你想要的东西。他们的模型是这样的,你会调用 yum_repository:
3 次,一次使用你在 .repo
文件中已有的每个 baseurl=
值。
因此,鉴于您的情况,我建议只使用 command:
到 运行 和 yum-config-manager --add-repo
,就像您在 shell 中一样。唯一的问题是 yum-config-manager --add-repo=
不是幂等的,在这种情况下,您必须手动保护 command:
以防止它在每个 运行.
使用带有创建标志的 shell 命令。如果 repo 文件存在,这将跳过该步骤。您需要确保知道 repo 文件的名称。
- 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
如果您需要向 url 添加任何架构,请使用
- 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
Ansible 会将变量替换为
{{ ansible_distribution | lower }} == centos
{{ ansible_distribution_major_version }} == 7
{{ ansible_architecture }} == x86_64
我正在尝试使用 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
我已经尝试了所有 include
、metalink
、baseurl
和 mirrorlist
,但都没有成功。我也错过了 GPG 关键步骤,但我什至无法正确添加 repo。
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
Shell
这是我要转换为 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
如果有什么不同的话,我在 CentOS 机器上 运行 使用 Vagrant 的 Ansible local 配置器。
appears 你是对的,他们没有提供你想要的东西。他们的模型是这样的,你会调用 yum_repository:
3 次,一次使用你在 .repo
文件中已有的每个 baseurl=
值。
因此,鉴于您的情况,我建议只使用 command:
到 运行 和 yum-config-manager --add-repo
,就像您在 shell 中一样。唯一的问题是 yum-config-manager --add-repo=
不是幂等的,在这种情况下,您必须手动保护 command:
以防止它在每个 运行.
使用带有创建标志的 shell 命令。如果 repo 文件存在,这将跳过该步骤。您需要确保知道 repo 文件的名称。
- 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
如果您需要向 url 添加任何架构,请使用
- 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
Ansible 会将变量替换为
{{ ansible_distribution | lower }} == centos
{{ ansible_distribution_major_version }} == 7
{{ ansible_architecture }} == x86_64