同时使用rundeck和ansible管理主机似乎很奇怪,有什么建议吗?

同时使用rundeck和ansible管理主机似乎很奇怪,有什么建议吗?,ansible,rundeck,Ansible,Rundeck,rundeck和ansible都可以管理主机,但当它们一起工作时,我尝试将主机从一种格式转换为另一种格式,这样主机就可以同时由rundeck和ansible管理,但这样做并不方便,管理主机的最佳方式是什么?似乎有些人已经这样做了:保持rundeck主机信息最新的最佳方式。从rundeck创建ansible主机文件非常简单。因此,在执行之前,您将调用一个bash脚本,该脚本将为ansible创建节点列表,在本例中,您可以使用rundeck过滤器,并为简单的作业而使用rundeck,即使您可以不使用

rundeck和ansible都可以管理主机,但当它们一起工作时,我尝试将主机从一种格式转换为另一种格式,这样主机就可以同时由rundeck和ansible管理,但这样做并不方便,管理主机的最佳方式是什么?

似乎有些人已经这样做了:

保持rundeck主机信息最新的最佳方式。从rundeck创建ansible主机文件非常简单。因此,在执行之前,您将调用一个bash脚本,该脚本将为ansible创建节点列表,在本例中,您可以使用rundeck过滤器,并为简单的作业而使用rundeck,即使您可以不使用ansible直接使用rundeck

#!/bin/bash
PID=$$
nodeFilter=${RD_OPTION_NODEFILTER:-}
projectName=${RD_JOB_PROJECT:-}
if [ -f /var/rundeck/tools/bin/dispatch ]; then
    /var/rundeck/tools/bin/dispatch -v -p $projectName --filter "${nodeFilter}" >/tmp/filtered.node.$PID
else
    /usr/bin/dispatch -v -p $projectName --filter "${nodeFilter}" >/tmp/filtered.node.$PID
fi
nodes=( $( grep "hostname" /tmp/filtered.node.$PID | cut -f2 -d ":" ) )
echo "[all]" >/tmp/ansible.hosts.$PID
for (( CNTR=0; CNTR<${#nodes[@]}; CNTR+=1 )); do
    if [ "${nodes[$CNTR]}" != "$HOSTNAME" ] && [ "${nodes[$CNTR]}" != "$HOSTNAME.example.com" ]; then
        echo "${nodes[$CNTR]}" >> /tmp/ansible.hosts.$PID
    fi
done
echo "DEBUG: all ansible host file"
cat /tmp/ansible.hosts.$PID
cd /opt/ansible; ansible-playbook -i /tmp/ansible.hosts.$PID /opt/ansible/playbook.yml
#/bin/bash
PID=$$
nodeFilter=${RD_OPTION_nodeFilter:-}
projectName=${RD_作业_项目:-}
如果[-f/var/rundeck/tools/bin/dispatch];然后
/var/rundeck/tools/bin/dispatch-v-p$projectName--filter“${nodeFilter}”>/tmp/filtered.node.$PID
其他的
/usr/bin/dispatch-v-p$projectName--filter“${nodeFilter}”>/tmp/filtered.node.$PID
fi
节点=($(grep“hostname”/tmp/filtered.node.$PID | cut-f2-d):)
echo“[all]”>/tmp/ansible.hosts.$PID
对于((CNTR=0;CNTR>/tmp/ansible.hosts.$PID
fi
完成
echo“调试:所有ansible主机文件”
cat/tmp/ansible.hosts.$PID
cd/opt/ansible;ansible playbook-i/tmp/ansible.hosts.$PID/opt/ansible/playbook.yml
ansible主页中存储角色和剧本的位置/opt/ansible
在rundeck作业中,您必须指定可用于筛选节点的选项NodeFilter,例如标记:app或标记:web等。

我使用rundeck管理正在运行的Ansible脚本(提供易于使用的作业状态和日志/调试信息)。因此,我不使用Rundeck来管理主机。当然,我使用的是AWS EC2,所以我有一个动态清单,通过剧本中的标签来参考,所以这可能与您无关。