我是新手,试图在远程机器上复制和安装jdk。 我想使用RPM安装只考虑我有所有不同风格的客户端(RHEL,Centos,Ubuntu等)。 以下是我的剧本
- hosts: all_clients remote_user: root tasks: - name: copy jdk rpm on client machine usr/tmp copy: src: ./RPM/jdk8u73x64.rpm dest: /usr/tmp/jdk8u73x64.rpm - name: start installation of jdk package: name: /usr/tmp/jdk8u73x64.rpm #name: jdk8u73x64.rpm state: latest #use: rpm
但是我得到错误。
TASK [setup] ******************************************************************* ok: [10.219.161.98] TASK [copy jdk rpm on client machine usr/tmp] ********************************** ok: [10.219.161.98] TASK [start installation of jdk] *********************************************** fatal: [10.219.161.98]: FAILED! => {"changed": false, "failed": true, "msg": "No Package matching 'jdk8u73x64.rpm' found available, installed or updated", "rc": 0, "results": []} NO MORE HOSTS LEFT ************************************************************* to retry, use: --limit @test2.retry PLAY RECAP ********************************************************************* 10.219.161.98 : ok=2 changed=0 unreachable=0 failed=1
Ansible 软件包模块的描述并没有多说它在客户端机器上search软件包的位置。 有人可以帮助我使它工作吗?
首先,位置通常从剧本的位置parsing。
其次, package不是为安装本地文件而devise的,而是为了从远程软件仓库中获取。
第三,原因package行为是这样的,因为对于独立于操作系统的层提供依赖于操作系统的文件是没有意义的; 根据定义,一个.rpm只能安装在一个带有rpm的系统上,而不能用apt , pacman或portage等等。
您将需要使用yum模块在基于rpm的机器上安装rpm。 如果像你说的那样,你也支持Ubuntu机器,那么你需要使用一个条件过滤出来,然后添加一个单独的规则来安装一个等效的.deb文件。
但是,如果你所要做的只是安装Java,那就应该已经可以在仓库中使用了,而且你可以避免所有这些拷贝文件。