一、yum_repository模块
yum_repository模块用于配置yum仓库。
https://docs.ansible.com/ansible/latest/modules/yum_repository_module.html
参数 | 说明 |
---|---|
name | 仓库名 name.repo 源的名称 [name] |
description | 描述 |
baseurl | 包下载路径 |
gpgcheck= 1 or 0 | 包gpg验证 |
enabled = yes|no | 是否开启本源 |
state= absent | 删除源 |
增加一个/etc/yum.repos.d/dvd.repo配置文件
[root@manage01 ~]# ansible -m yum_repository group1 -a "name=dvd description=BaseOS baseurl=file:///media/cdrom gpgcheck=0 enabled=yes"
192.168.8.23 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"repo": "dvd",
"state": "present"
}
192.168.8.21 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"repo": "dvd",
"state": "present"
}
192.168.8.22 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"repo": "dvd",
"state": "present"
}
删除某个yum源
[root@manage01 ~]# ansible -m yum_repository group1 -a "name=dvd state=absent"
192.168.8.23 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"repo": "dvd",
"state": "absent"
}
192.168.8.22 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"repo": "dvd",
"state": "absent"
}
192.168.8.21 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"repo": "dvd",
"state": "absent"
}
使用apt_repository
在 Ubuntu 系统中,yum_repository
模块并不适用,我们需要使用 apt_repository
模块来管理 APT 仓库。
1. 添加 APT 仓库
假设你要在本地主机上(或远程主机)添加一个名为 myrepo
的 APT 仓库,可以使用以下命令:
ansible localhost -m ansible.builtin.apt_repository -a "repo='deb http://example.com/repo stable main' filename='myrepo' state=present"
参数说明
- repo: 指定要添加的仓库字符串。
- filename: 指定生成的 APT 配置文件的名称(不包括
.list
扩展名)。 - state: 指定仓库的状态,
present
表示添加仓库。
示例输出
假设你在本地主机上执行此命令,输出可能如下:
localhost | CHANGED => {
"changed": true,
"repo": "deb http://example.com/repo stable main",
"state": "present"
}
2. 删除 APT 仓库
假设你要删除之前添加的 myrepo
仓库,可以使用以下命令:
ansible localhost -m ansible.builtin.apt_repository -a "repo='deb http://example.com/repo stable main' filename='myrepo' state=absent"
参数说明
- repo: 指定要删除的仓库字符串。
- filename: 指定要删除的 APT 配置文件的名称(不包括
.list
扩展名)。 - state: 指定仓库的状态,
absent
表示删除仓库。
示例输出
假设你在本地主机上执行此命令,输出可能如下:
localhost | CHANGED => {
"changed": true,
"repo": "deb http://example.com/repo stable main",
"state": "absent"
}
3. 使用 APT 密钥
如果你需要添加一个带有 GPG 密钥的仓库,可以在添加仓库的同时指定密钥文件路径,或者在添加仓库后单独添加密钥。以下是一个示例:
# 添加仓库
ansible localhost -m ansible.builtin.apt_repository -a "repo='deb https://packages.cloud.google.com/apt cloud-sdk main' filename='google-cloud-sdk' state=present update_cache=yes"
# 添加 GPG 密钥
ansible localhost -m ansible.builtin.apt_key -a "url=https://packages.cloud.google.com/apt/doc/apt-key.gpg state=present"
参数说明
- url: 指定 GPG 密钥的 URL。
- state: 指定密钥的状态,
present
表示添加密钥。
示例输出
假设你在本地主机上执行此命令,输出可能如下:
localhost | CHANGED => {
"changed": true,
"repo": "deb https://packages.cloud.google.com/apt cloud-sdk main",
"state": "present"
}
localhost | CHANGED => {
"changed": true,
"id": "54A647F9048D5688D7DA2ABE6A030B21BA07F4FB",
"state": "present"
}
总结
通过 apt_repository
模块,你可以轻松地在 Ubuntu 系统上管理 APT 仓库的配置。使用 repo
参数指定仓库的 URL,filename
参数指定生成的配置文件的名称,state
参数控制仓库的存在状态(present
或 absent
)。你还可以使用 apt_key
模块来添加 GPG 密钥。