2016-07-11 51 views
1

系统:centos的6.8 x86_64的,ansible-2.1,rundeck-2.6.8 Batix/rundeck-ansible-插件V1.3.0rundeck ansible模块 - 无匹配的节点

rundeck相同ansible控制器主机上运行,​​并且我只想从rundeck界面运行剧本。

苏rundeck -c “ansible所有-m平”,效果很好,但是当我尝试从rundeck运行剧本有一个错误:

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

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

谢谢, Nir。

回答

1

Rundeck保留自己的主机内部清单,与Ansible分开。该插件为您提供Resource Model Source以让Rundeck使用您的Ansible清单扫描节点并填充Rundeck清单。然后,将您的Rundeck作业配置为Rundeck清单。

插件使用的是默认值,所以如果你在不同的地方比/etc/ansible/hosts的Rundeck系统上存储您的库存,你将需要传递作为参数的资源模型源,像这样:

Rundeck Ansible Resource Model Source Custom Inventory

另一种解决方案是创建一个Rundeck工作,仅仅充当一个包装调用ansibleansible-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插件,因为您可以配置Rundeck作业选项以适应Ansible参数的需要。

+0

ansible hosts文件位于其默认位置(/ etc/ansible/hosts)中,我试图以shell脚本或命令的形式运行,并且出于同样原因失败 - (错误为grails.app.services.rundeck。 services.ExecutionUtilService - 执行失败:16:没有匹配的节点:MultiNodeSelector {nodenames = [localhost]}) - 所以它似乎是一些设置与rundeck服务(我是新的rundeck) – user3820425

+0

@ user3820425你跟踪你的Rundeck记录库存扫描期间是否有错误? – thankyour

+0

from rundeck logs:----- 2016-07-11 22:08:18,942 [quartzScheduler_Worker-2] WARN grails.app.services.rundeck.services.FrameworkService - 空节点列表 2016-07-11 22:08 :18,971 [quartzScheduler_Worker-2] ERROR grails.app.services.rundeck.services.ExecutionUtilService - 执行失败:16:没有匹配的节点:MultiNodeSelector {nodenames = [localhost]} – user3820425