![在新电脑或虚拟机上重新安装一组程序](https://linux22.com/image/118135/%E5%9C%A8%E6%96%B0%E7%94%B5%E8%84%91%E6%88%96%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B8%8A%E9%87%8D%E6%96%B0%E5%AE%89%E8%A3%85%E4%B8%80%E7%BB%84%E7%A8%8B%E5%BA%8F.png)
操作系统: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。