Где модуль ansible пакета ищет данное имя пакета?
Я новичок в ansible и пытаюсь скопировать и установить JDK на удаленной машине. Я хотел бы использовать rpm install только с учетом того, что у меня разные вкусы клиентов (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 пакета не говорит о том, где он ищет пакет на клиентском компьютере. Может кто-нибудь, пожалуйста, помогите мне заставить это работать?
1 ответ
Во-первых, местоположения обычно определяются из местоположения книги воспроизведения.
Во-вторых, package
предназначен не для установки локального файла, а для извлечения из удаленных репозиториев.
В-третьих, причина package
ведет себя так, потому что на самом деле не имеет смысла для слоя, независимого от ОС, подавать файл, зависящий от ОС; по определению .rpm
может быть установлен только в системе с rpm
и не тот, который вместо этого использует apt
, или же pacman
, или же portage
или что угодно.
Вы захотите использовать модуль yum для установки rpm на своих машинах на основе rpm. Если, как вы говорите, вы также поддерживаете машины с Ubuntu, вам нужно отфильтровать их с помощью условного выражения и добавить отдельное правило для установки эквивалентного .deb
на них.
Однако, если все, что вы пытаетесь сделать, это установить Java, это должно быть уже доступно в репозиториях, и вы можете избежать всего этого копирования файлов.