Запуск playbook из git repo, клонированного во время выполнения playbook - PullRequest
0 голосов
/ 14 сентября 2018

Кажется, я не могу понять это из документации.

У меня есть книга игр X, которую я хочу использовать в различных контекстах. Как и любой хороший инженер-программист, я поместил его в репозиторий в системе управления версиями (git). Итак, я хочу, чтобы мои другие сборники пьес могли взять и включить их, как мне это сделать? Я мог бы включить репо с X в качестве поддерева, но это не идеально.

Допустим, у меня есть git-репо A, в котором есть ансамбль Playbook X. У меня также есть git-репо B, в котором есть ансамбль Playbook Y. Я хочу, чтобы во время выполнения X клон B затем запустил playbook Y Это похоже на то, что должно быть легко гуглить, и тот факт, что это не так, заставляет меня задуматься, не ошибаюсь ли я в этом.

Вот что я попробовал в playbook X:

- name: Clone B
      git:
        repo: 'http://{{ git_user }}:{{ git_pass }}@somehost/B.git'
        dest: /tmp/B

- name: Run Y
      include_tasks: /tmp/B/Y.yml
      remote_src: yes

Несмотря на то, что для remote_src установлено значение «да», он все время говорит мне, что не может найти /tmp/B/Y.yml на контроллере Ansible, поэтому он, похоже, смотрит на мой локальный ящик, а не на пульт. Репо B правильно клонировано на /tmp на пульте (подтверждено через ssh).

1 Ответ

0 голосов
/ 18 сентября 2018

Это может быть достигнуто с помощью комбинации модулей git, fetch и include_tasks:

- name: Clone B on the remote
  git:
    repo: 'http://{{ git_user }}:{{ git_pass }}@somehost/B.git'
    dest: /tmp/B

# This copies the specified file from the remote to the current dir
- name: Fetch yml from remote
  fetch:
    src: /tmp/B/Y.yml
    dest: ./
    flat: yes

- name: Run Y
  include_tasks: Y.yml

Обратите внимание, что Y.yml должен быть простым списком задач. Так как я также хочу иметь возможность запускать его как автономно, так и включать в проект в репо A, я поместил в репозиторий playbook, который просто включает и запускает его.

Также в связи с вводящим в заблуждение сообщением об ошибке моего первого подхода (см. Комментарии к вопросу), похоже, что они уже исправили его .

...