1

系统:centos 6.8 x86_64 , ansible-2.1 , rundeck-2.6.8 Batix/rundeck-ansible-plugin v1.3.0

rundeck 在同一个 ansible 控制器主机上运行,​​我只想从 rundeck 界面运行剧本。

su rundeck -c "ansible all -m ping" ,效果很好,但是当我尝试从 rundeck 运行剧本时出现错误:

执行失败:10:没有匹配的节点:MultiNodeSelector{nodenames=[localhost]}

在作业中,节点选择是“本地执行”,在第二个选项“调度到节点”中,列表中没有主机。ansible playbooks中指定的主机,所以我不需要将它指定为rundeck,我在这里遗漏了什么吗?rundeck 应该在同一主机上运行 playbook,并且 ansible 将部署到远程系统。

谢谢,尼尔。

4

1 回答 1

1

Rundeck 保留自己的内部主机清单,与 Ansible 分开。该插件为您提供了一个资源模型源,让 Rundeck 使用您的 Ansible 清单来扫描节点并填充 Rundeck 清单。然后根据 Rundeck 清单配置您的 Rundeck 作业。

该插件使用默认值,因此如果您将库存存储/etc/ansible/hosts在与 Rundeck 系统不同的位置,则需要将其作为参数传递给资源模型源,如下所示:

Rundeck Ansible 资源模型源自定义清单

另一种解决方案是创建一个 Rundeck 作业,该作业仅充当调用的包装器,ansible或者ansible-playbook将其作为工作流步骤:

cd <your ansible dir>

. env/bin/activate # we use virtualenv
export ANSIBLE_CONFIG=/var/lib/rundeck/.ansible.cfg
ansible-playbook -i inventory -l "$RD_OPTION_LIMIT" $RD_OPTION_ANSIBLE_OPTS playbooks/$RD_OPTION_PLAYBOOK

这样的事情不需要 rundeck-ansible-plugin,因为您可以配置 Rundeck 作业选项以满足您的 Ansible 参数需求。

于 2016-07-11T19:04:50.770 回答