您如何管理您的 EC2 Linux 机器?

Jas*_*ter 8 linux amazon-ec2

我有一些 EC2 Linux 映像,它们为我的一个项目执行夜间处理作业。有时,我需要进入,进行一些代码更改,配置一些东西,并重新捆绑映像。

我用于这些操作的工具集非常稀少(SSH 进入盒子,在 VIM 中编辑文件,我需要 WGET 远程文件),我怀疑有更好的方法来做到这一点。我很想知道我职位上的其他人在做什么。

  • 您是否使用某种形式的窗口系统和远程桌面等价于访问该框,还是全部是命令行?管理 EC2 Windows 机器是微不足道的,因为您可以简单地远程桌面进入并通过网络传输文件。在 Linux 世界中是否有类似的东西?

  • 您是否直接在机器上进行配置更改/脚本调整?或者您是否在本地机器上设置了一些东西来远程编辑这些文件?或者您只是远程编辑它们然后在每次保存时传输它们?

  • 您如何在 EC2 和本地环境之间来回移动文件?FTP?通过 VPN 某种映射驱动器?

我真的需要一些最佳实践来管理这些盒子。任何消除一些痛苦的建议将是最受欢迎的!

编辑:显然,我在上面不清楚,因为前两个响应围绕管理和配置 EC2 实例。我只想知道如何将桌面远程连接到正在运行的 Linux 服务器,以便移动文件和编辑它们不那么痛苦。

jti*_*man 13

我不再做太多的手动系统管理了。我将我的基础设施视为可编程实体,并通过使用自动化配置管理、EC2 节点维护等工具配置系统来对待它。我的工具箱中的工具:

  • Ruby(我最喜欢的脚本/工具语言)
  • Git(版本控制)
  • Opscode 的 Chef(用 Ruby 编写)(1)
  • Capistrano(临时大规模维护)
  • Amazon 的 EC2 API 工具,用于实例和图像维护。
  • Rightscale 的 AWS gem(用于 EC2 的 Ruby 绑定)

(1) - 披露,我为 Opscode 工作。其他工具填补了这个空间,如 Reductive Lab 的 Puppet。

当我按照特定功能所需的方式构建节点时,我会捆绑一个 AMI。例如,如果我正在构建一个 Rails 应用服务器,我将安装所有必备包以节省构建时间。

当所有其他方法都失败时,我使用 SSH 登录系统。我做了很多年的手动系统管理,这是旧帽子。

您是否使用某种形式的窗口系统和远程桌面等价于访问该框,还是全部是命令行?

我不会在服务器上安装任何 GUI,除非一个包有一个依赖项并且一个被自动安装。

在 Linux 世界中是否有类似的东西?(传输文件)

我通常做两种类型的文件传输/文件维护。

  • 包安装
  • 配置文件

对于平台原生的包,我使用标准的包管理工具,如 APT 或 YUM。对于源安装(something.tar.gz),我通常通过 wget 下载。

配置文件通常是由 Chef 管理的 ERB 模板。

我使用 SSH 和 SCP/SFTP 手动传输文件。

您是否直接在机器上进行配置更改/脚本调整?或者您是否在本地机器上设置了一些东西来远程编辑这些文件?或者您只是远程编辑它们然后在每次保存时传输它们?

我将与管理系统相关的所有内容都保存在软件控制存储库中。这是我在一个或多个系统上更新配置时的典型工作流程。我从我的本地工作站开始。

  • 从主 Git 存储库中提取其他人的更改。
  • 在本地编辑文件(例如,更新配置文件)。
  • 提交更改,推送到掌握。
  • 在 Chef 服务器(通过 SSH 登录)上,提取我刚刚提交的最新更改。
  • 将配置部署到 Chef 服务器上的适当位置(为此我使用 Rake)。
  • Chef 客户端按时间间隔运行,因此它们将每 30 分钟获取一次更改。如果我立即需要某些东西,我会手动运行chef-client。
  • 验证更改!

您如何在 EC2 和本地环境之间来回移动文件?FTP?通过 VPN 某种映射驱动器?

我在 EC2 节点上使用的文件可能会存储在几个位置。

  • 厨师服务器。主要是配置模板,也有一些小包。
  • GitHub。我们将代码(开源项目)存储在 GitHub 上。EC2 节点可以很容易地做到这一点(例如检出某些东西的最新版本)。
  • Amazon S3 存储桶。有些东西存储在桶中。

我在 EC2 中做了很多工作,主要是测试环境和变化。由于我的工具和工作流程,我花更多的时间处理我真正关心的事情,而不是处理单个文件和考虑特定配置。


小智 6

我们所有的软件都是通过 RPM 部署的。每个 EC2 实例类型都由一个 kickstart 文件描述(其中列出了要安装的 RPM...)。kickstart 设置意味着可以在大约 10 分钟内从头开始构建每种实例类型的工作机器。

然后我们有一个程序调用 anaconda(Red Hat 安装程序)来获取 kickstart 文件,将系统安装到一个目录中,然后捆绑该目录并将其作为 Amazon 机器映像推送到 S3。这只是一步,所以我只需输入:

kickstart2ami webserver.ks
Run Code Online (Sandbox Code Playgroud)

由于机器可以在大约 40 分钟内完全重建、上传和运行,因此构建新机器映像比在实际(一次性)EC2 实例上执行系统管理更容易。因此,实际上没有在 EC2 实例上执行系统管理员。