如何处理影响许多服务器的IP更改?

由于位置的变化,我们必须将多个服务器移动到新的IP地址(从10.X.*.*10.Y.*.* )。 我们正在利用这个机会把我们的IP分配从一个杂乱无章的设置清理到一个更有序的IP分配,所以旧IP和新IP之间没有太多对应关系。 系统几乎都是:

  • 运行Ubuntu(14.04,几个12.04和一个奇怪的10.04,我们打算升级)
  • 由Puppet和Foreman进行pipe理(主要是软件包安装和服务configuration)
  • configurationetckeeper保持与git中的function相关的configuration
  • 通过/etc/network/interfacesconfiguration静态IP。

目前我们有两个select:

  • 在文件副本中预先进行所有更改,并在移动后重新启动服务器时,使用脚本切换文件。
  • 在git分支中提前做好所有更改,并在移动后重新启动服务器时,执行git checkout new-branch (或根据便利性更改合并)。

实质上,两种方法都是一样的,只是使用的工具是不同的。 当然,也有手动方法,但是这样会很容易出错。

要进行的更改包括更新interfaces IP,DNS服务器IP,Nagios,muninconfigurationIP等。

我还有什么其他的select?

最后,我们决定使用git方法,而改变IP是我们的麻烦中最less的。 🙂

步骤:

  • 使用Puppet安装和设置etckeeper,并为我们的Gitlab实例上的每个服务器创build一个回购。 我们select使用忽略除了select文件和目录以外的所有内容的gitignore
  • 让团队成员创build一个具有所需newip的分支(使用通用名称,如newip )。此练习还包括向git添加任何感兴趣的文件或目录,向gitignore添加例外。
  • 检查新分支上的提交。
  • 在切换的那一天, cd /etc; git fetch origin newip:newip && git merge newip cd /etc; git fetch origin newip:newip && git merge newip每个系统上的cd /etc; git fetch origin newip:newip && git merge newip ,然后closures它。

我们遇到了一些合并冲突,从testing其他选项(并没有被撤销)做出的改变,但是这些很容易解决。