Доступ к 2 удаленным серверам в rundeck ansible playbook Inline Workflow - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть задание ansible, которое извлекает информацию на одном удаленном сервере (remote1) и затем использует эту информацию на другом удаленном сервере (remote2).

В Rundeck я могу успешно получать информацию с каждого сервера в отдельности.

Для remote1 (всегда один и тот же сервер) встроенная книга воспроизведения выглядит следующим образом:

---

- hosts: ${option.master}
  gather_facts: false

  tasks:

    - shell: cat /etc/redhat-release
      register: redhat_rel
    - debug: msg={{ redhat_rel.stdout }}

И дополнительные ansible аргументы:

--limit "${option.master}" -i /etc/ansible/hosts,${option.master}:5555

Для удаленных 2 (различные серверы, вызываемые в разделе «Параметры», встроенная книга воспроизведения выглядит следующим образом:

---

- hosts: all
  gather_facts: false

  tasks:

    - shell: cat /etc/redhat-release
      register: redhat_rel2
    - debug: msg={{ redhat_rel2.stdout }}

И дополнительные ansible аргументы:

--limit "${option.hostitem}" -i ${option.hostitem}, -e "ansible_user=${option.username} ansible_port=${option.port}"

Но я не могу объединить их в одну пьесу, например:

---

- hosts: ${option.master}
  gather_facts: false

  tasks:

    - shell: cat /etc/redhat-release
      register: redhat_rel
    - debug: msg={{ redhat_rel.stdout }}

- hosts: all
  gather_facts: false

  tasks:

    - shell: cat /etc/redhat-release
      register: redhat_rel2
    - debug: msg={{ redhat_rel2.stdout }}

Extra ansible аргументы:

--limit "${option.master} ${option.hostitem}" -i /etc/ansible/hosts,$(option.master}:21716, ${option.hostitem}, -e "ansible_user=${option.username} ansible_port=${option.port}"

Ошибка Rundeck:

ansible-playbook: error: unrecognized arguments: server.com,
14:55:10        Failed: AnsibleNonZero: ERROR: Ansible execution returned with non zero code.
14:55:10        Execution failed: 57800 in project Automation: [Workflow result: , step failures: {1=Dispatch failed on 1 nodes: [rdprod01: AnsibleNonZero: ERROR: Ansible execution returned with non zero code. + {dataContext=MultiDataContextImpl(map={}, base=null)} ]}, Node failures: {rdprod01=[AnsibleNonZero: ERROR: Ansible execution returned with non zero code. + {dataContext=MultiDataContextImpl(map={}, base=null)} ]}, status: failed]

Обратите внимание, что я могу запустить сценарий Ansible в командной строке, но не когда я пытаюсь интегрировать его с Rundeck.

Пожалуйста, сообщите.

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2020

Я думаю, что лучший подход - создать два задания (для каждой книги воспроизведения, отправка на соответствующие узлы) и вызывать эти задания из родительского задания, используя Шаг задания задания . Вы можете увидеть хороший пример здесь . Здесь и здесь Вы можете понять, почему это хороший подход.

...