Где модуль 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, это должно быть уже доступно в репозиториях, и вы можете избежать всего этого копирования файлов.