rundeck和ansible都有管理主机的能力,但是当把它们放在一起工作时,我已经尝试将主机从一种格式转换为另一种格式,这样主机就可以同时由rundeck和ansible管理,但做这项工作不方便,管理主机的最佳方法是什么?
答案 0 :(得分:1)
似乎有些人已经这样做了:https://github.com/srknc/rundeck_ansible_sync
答案 1 :(得分:0)
使rundeck主机信息保持最新的最佳方法。要从rundeck创建ansible主机文件,这非常简单。因此,在执行之前,您调用一个bash脚本来创建ansible的节点列表,在这种情况下,您可以使用rundeck过滤器和简单的作业,即使您可以直接使用rundeck而不使用ansible。
#!/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
存放角色和剧本的ansible home / opt / ansible 在rundeck作业中,您必须指定选项NodeFilter,它可用于过滤节点,例如标签:app或标签:web等。