【发布时间】:2020-02-20 20:01:44
【问题描述】:
我有一个 ansible 作业,它在一个远程服务器 (remote1) 上获取信息,然后在另一台远程服务器 (remote2) 上使用该信息。
在 Rundeck 中,我可以成功地分别从每个服务器获取信息。
对于 remote1(始终是同一台服务器),内联 playbook 如下所示:
---
- 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 }}
额外的 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 集成时却不行。
请指教。
谢谢
【问题讨论】: