rundeck と ansible は両方ともホストを管理する能力を持っていますが、それらを一緒に動作させると、ホストを 1 つの形式から別の形式に変換して、ホストを rundeck と ansible で同時に管理できるようにしようとしましたが、便利ではありませんこの仕事をするために、ホストを管理する最善の方法は何ですか?
質問する
2145 次
2 に答える
0
rundeck のホスト情報を最新の状態に保つ最善の方法です。rundeck から ansible ホスト ファイルを作成するのは非常に簡単です。そのため、実行前に ansible のノード リストを作成する bash スクリプトを呼び出します。この場合、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
ロールと Playbook が保存される ansible ホーム /opt/ansible rundeck ジョブでは、tags:app や tags:web など、ノードのフィルターに使用できるオプション NodeFilter を指定する必要があります。
于 2016-06-02T16:18:09.180 に答える