Назад | Перейти на главную страницу

Запустить сценарий на удаленном хосте, который не находится в игре

Я пытаюсь включить запуск сценария на удаленном хосте перед выполнением набора задач на другом списке хостов. В частности, я пытаюсь выполнить сценарий в моем локальном репозитории yum, чтобы синхронизировать репо, перед запуском обновления yum на наборе хостов. Локальный сервер репо не может быть в том же списке инвентаризации, что и обновляемые хосты, так как мне это сделать? Любая помощь будет принята с благодарностью.

Я вижу возможные ответы. Выберите тот, который лучше всего подходит для вашей ситуации

Решение 1: 2 воспроизведения

Доступный playbook может содержать несколько пьес, которые будут запускаться по порядку. Вы можете разделить свои действия на две пьесы. Вероятно, это будет более удобно, если у вас есть несколько задач для вашего первого хоста или если у вас есть несколько хостов, с которыми нужно разговаривать для вашей синхронизации (например, кластер ...)

- name: sync my local yum repo
  hosts: my_local_yum_repo_host

  tasks:
    - name: dummy task to sync repo
      debug:
        msg: sync repo

- name: update my hosts
  hosts: my_hosts_to_upgrade

  tasks:
    - name: run the upgrade
      yum:
        name: '*'
        state: latest

Решение 2: делегирование и run_once

В этом случае мы помещаем все в одну игру и используем делегация с участием run_once играть за один раз, чтобы все хосты обновлялись в списке

- name: update my hosts
  hosts: my_hosts_to_upgrade

  tasks:

    - name: dummy task to sync repo
      debug:
        msg: sync repo
      delegate_to: my_local_yum_repo_host
      run_once: true

    - name: run the upgrade
      yum:
        name: '*'
        state: latest