如果我的 ansible-playbook 中有本地 rpm,我可以一步完成 yum 安装吗?

If I have a local rpm in my ansible-playbook can I do yum install in one step?

我已经在我的 ansible-playbook 中下载了一个 rpm:

(djangoenv)~/P/c/apache-installer ❯❯❯ tree .
.
├── defaults
│   └── main.yml
├── files
│   ├── apache2latest.tar
│   ├── httpd_final.conf
│   ├── httpd_temp.conf
│   └── sshpass-1.05-9.1.i686.rpm
├── handlers
│   └── main.yml
├── hosts
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

我的问题是为什么我不能使用以下方式安装它:

 - yum: name=files/sshpass-1.05-9.1.i686.rpm

?它抱怨在系统中找不到 files/sshpass-1.05-9.1.i686.rpm。现在我分两步进行:

 - copy: src=files/sshpass-1.05-9.1.i686.rpm dest=/tmp/sshpass-1.05-9.1.i686.rpm force=no
 - yum: name=/tmp/sshpass-1.05-9.1.i686.rpm state=present

不,没有简单的方法可以在安装前将包复制到远程主机。当您在名称参数中定义文件时,Ansible yum 模块需要一个本地文件。

恕我直言,将包保留在 Ansible 代码库中并不是一个好主意。因为它们是二进制的,并不完全是实际 Ansible 代码的一部分。设置一个私有存储库并将这些文件存储在那里会更干净。这是我所知道的在这种情况下处理包裹的唯一方法。