如何跨服务器镜像命令

如何跨服务器镜像命令

我在 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 脚本。它们是跨平台的。

调用 AzureRmVMRunCommandaz vm 运行命令

答案4

您能为所有这些设置编写一个 shell 脚本吗?如果可以,则编写一个脚本,然后使用 linux customScriptExtensions 将其推广到所有服务器

https://docs.microsoft.com/en-us/azure/virtual-machines/linux/extensions-customscript

我对 Windows 中的各种环境执行了相同的操作,但上面的操作也适用于 Linux。我将其与推出虚拟机的 ARM 模板绑定在一起。因此,如果我以后必须进行一些设置更改,我可以通过 ARM 模板本身控制所有内容。

相关内容