在新电脑或虚拟机上重新安装一组程序

在新电脑或虚拟机上重新安装一组程序

操作系统:OpenSuSE 42.3 64位

我花了很长时间配置邮件服务器,我想以某种方式将其捆绑起来,以便在需要重新安装主机时可以轻松地重新部署它。

例如,病毒将其清除或硬件故障。

我已经用 dovecot、clamav、dkim、dovecot、rspam、spam Assassin、openssl 等配置了 postfix。

随着时间的推移,我希望能够继续进行调整。

这需要对文件系统权限进行复杂的更改、添加用户、生成密钥等。

我考虑过像 lxc、docker 等容器。这是最好的选择吗?哪一个?

我如何收集所有这些设置等,以便我可以轻松地在全新机器上重新安装完全相同的配置。当前的机器已经变得臃肿,充满了旧文件和尚未清理的东西。我想启动一个新的虚拟机,将当前的所有内容迁移过来,并删除旧的虚拟机。

如果容器是答案,我如何收集我所做的所有更改并将它们放入容器中?

包含似乎可以更轻松地复制设置。

答案1

听起来您想要某种形式的配置管理,例如盐堆 (可能无主的或者安西布尔或其他各种之一。

这些工具可能需要一些时间才能掌握,但它们解决了您面临的确切问题:如何完全按照规格配置新机器。使用这些工具,您可以将配置和设置放入 git 存储库中的某个位置,然后在新机器或虚拟机上,您只需引导安装 salt 或 ansible,并让它按照存储库中的规则完成其余的工作。


Ansible 可能就是您想要的 - 它允许您编写配置文件和命令的“剧本”,以便通过 ssh 远程运行和执行它们。因此,当您创建新服务器时,您只需对其运行 ansible playbook 即可对其进行完全配置。


我对 saltstack 有更多的经验,因此可以为您提供在无主设置中使用它的更详细的示例。在包含两个文件的存储库中:

wheel.sls确保安装了 sudo 并禁用密码超时

sudo:
  pkg.installed

/etc/sudoers.d/wheel:
  file.managed:
    - user: root
    - group: root
    - mode: 440
    - contents: |
        %wheel ALL=(ALL) ALL
        Defaults passwd_timeout=0

以及top.sls- 使用什么 salt 来决定在哪些机器上运行哪些状态,在这种情况下,一切都将运行wheel.sls

base:
  '*':
    - wheel

然后只需在目标虚拟机/服务器上安装 salt-minion 并为其提供类似于以下内容的配置/etc/salt/minion

file_client: local
fileserver_backend:
  - git
gitfs_remotes:
  - [email protected]:user/repo.git:
    - pubkey: /etc/salt/ssh/github.pub
    - privkey: /etc/salt/ssh/github

将 github url 替换为您的存储库的 URL,并将公钥/私钥替换为有权访问该存储库的密钥。当然,您可以扩展它以执行更多操作,然后安装单个包并编写单个文件,以获得更完整的示例结帐这个仓库其中包含我的设置的公共部分(当然,大部分配置都在私人存储库中,但应该足以给您一些想法)。

对于更复杂的设置,您可以运行专用的 master - 甚至通过 ssh 运行 salt。

相关内容