是否有一个应用程序可以轻松地同时向多个Apache服务器发送软件更新?

kt06eoxx  于 2023-05-29  发布在  Apache
关注(0)|答案(1)|浏览(157)
Hello everyone,
My server networking is as follows:

Load Balancer
|
|__Apache2 Server -1
|
|__Apache2 Server -2
|
|__Apache2 Server -3
|
|__Apache2 Server -..n

我的问题是:当我对软件进行更改或更新时,我会在所有服务器上逐个重新安装更新。或者出现bug的时候,一个一个的去修复错误,是很累的。当我在软件代码中进行更改时,您是否有一个应用程序或替代建议,可以同时将其发送到所有服务器?
注意:我不是在寻找一个非常复杂的应用程序。我正在寻找一个应用程序,将同时发送我的软件文件,只是我想要的IP地址。
Ansible和Puppet有点复杂。

fafcakar

fafcakar1#

这是我几年前写的一个简单的实用程序,用于我的特定需求:

#!/bin/bash
#####################################################################
#
#  call this script appending a command to be executed on all servers 
#
#####################################################################

if [[ $# -eq 0 ]]; then
    echo "No command specified"
    exit 2
fi

# server ip, or DNS name
declare -a my_servers=("xxx.xxx.xxx.xxx" "yyy.yyy.yyy.yyy" "zzz.zzz.zzz.zzz")
remote_cmd="$1"

#start loop
for server in ${my_servers[@]};
do
    echo -e "\n\n\n----------------------------------->  $server: <--------------------------------------------------------------\n\n"
    ssh -i /root/.ssh/my_specific_key_rsa -p 5678  root@$server " hostnamectl | head -n 1 ; $remote_cmd ; exit" 
done
exit

假设你把它命名为sysadmin_helper.sh,在赋予执行权限后,你可以做如下事情:

sysadmin_helper.sh 'reboot'  
sysadmin_helper.sh 'df -h /'   
sysadmin_helper.sh 'systemctl reload apache2' 
sysadmin_helper.sh 'tail /var/log/apache2/error.log' ...

等等,大大加快了你的工作。
回到你的主要问题,也许你可以这样做:sysadmin_helper.sh 'cd $my_repo_dir ; git pull ',或者任何你用来与git服务器同步的东西。
因此,要使此脚本工作,您需要:
1.编辑my_servers var和ssh key的确切路径

  1. root ssh访问所有服务器
    1.更改默认的sshd端口,这是一个很好的安全实践(在这个例子中,我使用5678,但你会做出选择)
    1.一个可用的git repo。我认为rsync不适合您的情况;使用git,你可以获取特定的分支,最终撤销你的工作,等等。
    无论如何,有很多方法可以使这个脚本适应你的需要。

**免责声明:**我不是IT安全Maven,甚至不是这方面的专业人士。因此,任何修改或改进都是受欢迎的。

相关问题