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

Другие вопросы по тегам