如何使用 Ansible 在远程机器上安装 .rpm 包?
显而易见的解决方案是使用command模块,但这有点傻。另外我想避免只为一个包设置 yum 存储库。
有没有更实用的方法来解决这个问题?
Hen*_*gel 43
Ansibleyum模块已经为这个问题提供了解决方案。服务器上本地 rpm 文件的路径可以传递给name参数。
您还可以将 url 或本地路径传递给 rpm 文件。要对多个包进行操作,这可以接受以逗号分隔的包列表或(从 2.0 开始)包列表。
执行此操作的正确步骤如下所示:
- name: Copy rpm file to server
copy:
src: package.rpm
dest: /tmp/package.rpm
- name: Install package.
yum:
name: /tmp/package.rpm
state: present
Run Code Online (Sandbox Code Playgroud)
Fli*_*pym 17
实际上,该yum模块可以直接从给定的 URL 安装 RPM:
- name: Remote RPM install with yum
yum: name=http://example.com/some_package.rpm
Run Code Online (Sandbox Code Playgroud)
这是我从源计算机安装多个 RPM 的操作:
- name: mkdir /tmp/RPMS
file: path=/tmp/RPMS state=directory
- name: copy RPMs to /tmp/RPMS
copy:
src: "{{ item }}"
dest: /tmp/RPMS
with_fileglob:
- "../files/*.rpm"
register: rpms_copied
- name: local RPMs not found
fail:
msg: "RPMs not found in ../files/"
when: rpms_copied.results|length == 0 and rpms_copied.skipped and rpms_copied.skipped_reason.find('No items') != -1
- set_fact:
rpm_list: "{{ rpms_copied.results | map(attribute='dest') | list}}"
- name: install RPMs
yum:
name: "{{rpm_list}}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133006 次 |
| 最近记录: |