У меня есть задание 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.
Пожалуйста, сообщите.
Спасибо