“复制”正在运行的服务器

“复制”正在运行的服务器

在担任这台 ubuntu 16.04 服务器的管理员数月之后,我没有使用 Ansible 或其他配置管理工具,而是对系统做了很多更改:更改了 /etc 中的配置文件、安装了软件包、启用和禁用了 apache2 模块等等。

是否有一种自动化的方法来创建脚本或其他东西,当在全新安装的 ubuntu 16.04 上执行时(但如果它在任何 Linux 上运行得更好),可以重新创建一个与我现在拥有的并且正在运行的服务器大致相同?

编辑:不幸的是,这不是我可以克隆的虚拟机。

答案1

目前,就行业标准而言,你能做的并不多。如果你真的需要脚本来为你准备一切,那么我会:

  • 转储所有已安装的软件包dpkg -l及其版本。
  • 使用 ubuntu 16.04 创建一个新服务器,安装相同版本的所有软件包。
  • etckeeper在新服务器上安装
  • rsync将所有/etc目录从原始服务器复制到“干净的”一是确保“干净的”一个不是存在于原始目录中的将被删除(a2dismod只需删除 /etc/apache2/modules-enabled 目录中的符号链接,因此这将是执行相同操作的另一种方法) - 有一个选项rsync可以做到这一点。

完成后,您应该看到(感谢 etckeeper)目录的 git 差异/etc/- 这可以简单地(?)转换为脚本 - 但只有当所有软件包版本与原始服务器完全相同时,它才会可靠地工作。patch然而,这将是一些真实模板的良好基础ansible//puppetchef

按照这条路线,您应该能够创建某种自动化系统来准备具有类似配置的新服务器。

如果您不关心“行业标准”,那么还有另一种选择 - 仅rsync/tar整个服务器(您需要停止数据库,或省略它们以rsync避免文件结构不一致),以便您可以在全新安装的 ubuntu 16.04 上解压它以在另一个位置获得完全相同的机器。

答案2

我能想到的唯一方法是:

  • 找到所有已安装软件包的列表,并在目标机器上重新安装它们;然后找到所有更改/添加的配置文件,并使用 tar/rsync/whatever 将它们复制到目标机器上;

  • 如果您不能/不愿通过直接 RAW 复制进行克隆,则可以使用 tar/rsync(带有适当的参数)将源数据完全克隆到新机器。

  • 您可以使用文件系统转储工具(例如:dump2fs、xfsdump、fsarchiver 等)转储整个文件系统,并在新机器上恢复它;

  • 使用 clonezilla/dd/ddrescue 克隆物理磁盘(克隆根本不需要虚拟环境)并在目标机器上恢复映像。这需要 livecd 启动的源机器或源卷的 LVM/BTRFS/ZFS 快照。

相关内容