如果我的 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 代码的一部分。设置一个私有存储库并将这些文件存储在那里会更干净。这是我所知道的在这种情况下处理包裹的唯一方法。
我已经在我的 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 代码的一部分。设置一个私有存储库并将这些文件存储在那里会更干净。这是我所知道的在这种情况下处理包裹的唯一方法。