【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

 

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