【Redis】Redis實例遷移中的防火牆權限遷移實現

一、簡述

    由於大多數情況下Redis的部署都是單機多實例,且Redis的權限目前僅iptables控制,在進行實例遷移的時候,就不能將整個iptables文件copy過去,需要截取該實例端口開通的權限到目標服務器上。

 

二、實現方式

    1、通過ansible獲取shell模塊執行grep命令獲取到源實例相關防火牆權限內容;

    2、將防火牆內容寫入到中控端臨時文件中;

    3、通過ansible的copy模塊將權限內容的臨時文件傳到目標服務器;

    4、通過ansible的shell模塊執行sed命令,將臨時文件的內容插入到iptables中,然後重載即可;

echo "業務防火牆複製..."
iptables_cmd=`ansible ${SrcIp} -m shell -a "cat /etc/sysconfig/iptables|grep ' ${InstancePort} '" -s|grep -v "SUCCESS"`

echo "$iptables_cmd" > /tmp/tmp_${SrcIp}_${InstancePort}_iptables

ansible ${DestIp} -m copy -a "src=/tmp/tmp_${SrcIp}_${InstancePort}_iptables dest=/tmp/" -s

ansible ${DestIp} -m shell -a 'cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak_`date "+%Y%m%d_%H%M"`' -s

ansible ${DestIp}  -m shell -a "chattr -i /etc/sysconfig/iptables && sed -i '15r /tmp/tmp_${SrcIp}_${InstancePort}_iptables' /etc/sysconfig/iptables && chattr +i /etc/sysconfig/iptables" -s

ansible ${DestIp}  -m shell -a "service iptables reload" -s

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章