我在 Azure 环境中有三台 CentOS 服务器,需要对它们进行大量软件和配置(例如添加用户、添加权限等)。不幸的是,我无法只对一台服务器执行此操作并复制服务器。有没有办法可以对一台服务器执行此操作,并将其复制到其他两台服务器上,这样我只需执行一次?
答案1
这就是配置管理工具的目的,因此我建议您查看以下一个或多个:
- 厨师
- 木偶
- Ansible
- 盐
这些工具可让您在一个或多个文件中定义机器配置,然后将其应用于多台机器并确保它们处于您定义的状态。其中大多数都有免费的开源版本,您可以开始使用。
答案2
我建议阅读并学习有关并行 ssh、集群和配置管理工具的知识。其理念是,您从中央服务器运行一次命令,然后它会推送到组或集群中的其余服务器。为了实现这一点,您需要某种方式让中央服务器与其他服务器通信(一种简单的方法是通过 ssh 并使用密钥)。对于配置管理,有 chef、Puppet、Ansible 等选项。
答案3
建议您查看 AzureRmVMRunCommand,它允许您在 Azure 中的任何服务器上执行 PowerShell/Shell 脚本。使用一个小循环,您可以轻松地在任何服务器上执行所需的任何更改。
电源外壳
Invoke-AzureRmVMRunCommand -ResourceGroupName 'rgname' -Name 'vmname' -CommandId 'RunPowerShellScript' -ScriptPath 'sample.ps1' -Parameter @{"arg1" = "var1";"arg2" = "var2"}
猛击
az vm run-command invoke -g MyResourceGroup -n MyVm --command-id RunShellScript --scripts 'echo $0 $1' --parameters hello world
注意:也可以在上述两个命令中执行 PowerShell/Shell 脚本。它们是跨平台的。
答案4
您能为所有这些设置编写一个 shell 脚本吗?如果可以,则编写一个脚本,然后使用 linux customScriptExtensions 将其推广到所有服务器
https://docs.microsoft.com/en-us/azure/virtual-machines/linux/extensions-customscript
我对 Windows 中的各种环境执行了相同的操作,但上面的操作也适用于 Linux。我将其与推出虚拟机的 ARM 模板绑定在一起。因此,如果我以后必须进行一些设置更改,我可以通过 ARM 模板本身控制所有内容。