AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1091538
Accepted
agsamek
agsamek
Asked: 2022-01-30 00:06:24 +0800 CST2022-01-30 00:06:24 +0800 CST 2022-01-30 00:06:24 +0800 CST

如何使用虚拟化/LAMP(小型 IaC)自动安装服务器?

  • 772

如何自动化服务器安装?哪些基础设施/系统适合我们的需求?

我们有 10 多台物理服务器和 100 多台虚拟机,主要是 LAMP。不是太多,但也不是任何可以自己继续工作的东西。所有服务器都有 KVM 虚拟化。我们为经常修改的客户托管各种定制应用程序。因此,这不是一个需要扩展的应用程序。项目团队直接与客户和虚拟机合作,这是一项要求。

我们经常遇到的问题是重新安装虚拟机/机器会变得很棘手,因为没有人控制它们最近的更改,这会带来不稳定的风险,人们会尽可能地推迟它,并且随着时间的推移问题会变得更大。

我想至少每 3 个月根据需要建立一个重新安装程序。重新安装应从代码存储库和备份开始。这不应该是虚拟机重复。

我们估计,如果手动完成,在当前设置中每 3 个月将花费我们大约 6 个人工月。我们如何才能减少这个时间并增加过程的可重复性?

问题是什么软件可以帮助我们自动完成这项任务。它应该尽可能轻。我们不需要自动节点分配。我们只需要重新安装以尽可能自动化。我们假设每次重新安装都有人工监督。

我们的节点主要是 LAMP,有两个系统具有超过 1TB 的结构化数据库数据、几个 >200GB 和大约 50 个小型自定义 VM。我们可以轻松地安排每个系统的计划停机时间,因此这不是重新安装期间的高可用性问题。

我们只需要尽可能地自动重新安装。

scripting debian installation
  • 2 2 个回答
  • 60 Views

2 个回答

  • Voted
  1. Best Answer
    Tero Kilkanen
    2022-01-30T01:11:47+08:002022-01-30T01:11:47+08:00

    您需要像 Ansible、Saltstack、Puppet 或 Chef 这样的配置管理框架。

    这是用于管理和应用配置的工具。但是,选择实际工具只是项目的一小部分。

    您需要设计和部署流程,通过此工具管理对基础架构的所有更改。

    这需要:

    • 培训人们使用该工具
    • 更改系统架构,以便在没有工具的情况下无法进行更改
    • 应对改变人的基本运作方式的阻力

    您还应该考虑统一软件堆栈基础架构。

    如果每个虚拟机都有一些不同的软件配置,你要么有

    • 您的配置管理代码中有很多重复的代码,用于不同的安装
    • 复杂的逻辑来选择如何应用哪个配置

    这些因素中的任何一个都会增加大量的维护开销,最终结果可能会变得与您当前的情况一样痛苦。

    • 3
  2. sickcodes
    2022-01-30T05:17:40+08:002022-01-30T05:17:40+08:00

    您的云是否有 API 密钥?

    大多数云都有一键式 LAMP 图像,例如

    Vultr:https ://www.vultr.com/apps/lamp/

    数字海洋:https ://marketplace.digitalocean.com/apps/lamp

    Linode:https ://www.linode.com/docs/guides/lamp-stack-marketplace-app/

    如果没有,我的绝对首选是 VestaCP https://vestacp.com/install/

    和https://hestiacp.com/

    两者都添加了 apache 后端、nginx 前端、MySQL/mariadb/postgres 和 php/php-fpm。所有选项也是。

    对于更新,我会创建一个单独的服务器,将一个通用的 SSH 公钥放入/root/.ssh/authorized_keys该单独的服务器,它可以自动登录到每个服务器,例如:

    INSTANCES=(
    10.0.0.5
    10.0.0.6
    10.0.0.7
    ...
    )
    
    
    for INSTANCE in "${INSTANCES[@]}"; do
        ssh root@${INSTANCE} /bin/bash -c "apt update -y && apt upgrade -y"
    done
    

    这几乎是 Terraform、Kubernetes 等 DIY。

    同样在 GitHub 上,还有大量特定于云的指南,例如:

    另一个数字海洋:https ://github.com/ethanbeyer/DigitalOcean-Droplet-Setup

    AWS 一个:https ://github.com/elionaz/aws-LAMP/blob/master/install_lamp.sh

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果同一个任务已经在运行,如何防止计划任务运行?

  • 需要从 Batch For 循环中排除特定结果

  • Bash 脚本:要求脚本以 root 身份运行(或使用 sudo)

  • 从命令行删除旧的(非引导)Windows Vista 目录

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve