我有一些 EC2 Linux 映像为我的一个项目执行夜间处理工作。有时,我需要进入,进行一些代码更改,配置一些东西,并重新捆绑图像。
我用于这些操作的工具集非常稀疏(SSH 进入盒子,在 VIM 中编辑文件,我需要的 WGET 远程文件),我怀疑有更好的方法来做到这一点。我很想知道我这个职位的其他人在做什么。
您是在使用某种形式的 Windowing 系统和远程桌面等效于访问该框,还是全部是命令行?管理 EC2 Windows 机器很简单,因为您可以简单地远程桌面并通过网络传输文件。在 Linux 世界中是否有与此等价的东西?
您是否直接在机器上进行配置更改/脚本调整?或者您是否在本地机器上设置了一些东西来远程编辑这些文件?还是您只是在远程编辑它们,然后在每次保存时传输它们?
您如何在 EC2 和本地环境之间来回移动文件?FTP?通过 VPN 的某种映射驱动器?
我真的需要一些最佳实践来管理这些盒子。任何消除一些痛苦的建议都将受到欢迎!
编辑:显然,我上面并不清楚,因为前两个响应围绕着管理和配置 EC2 实例。我只想知道如何将桌面远程连接到正在运行的 Linux 服务器中,这样移动文件和编辑它们就不那么痛苦了。
我不再做太多手动系统管理了。我将我的基础架构视为一个可编程实体,并通过使用自动化配置管理、EC2 节点维护等工具配置系统来将其视为可编程实体。我的工具箱中的工具:
(1) - 披露,我为 Opscode 工作。其他工具填补了这个空间,比如 Reducing Lab 的 Puppet。
当我以特定功能所需的方式构建节点时,我确实捆绑了一个 AMI。例如,如果我正在构建 Rails 应用服务器,我将安装所有必备软件包以节省构建时间。
当一切都失败时,我使用 SSH 登录系统。我做了很多年的手动系统管理,这是老帽子。
我不会在服务器上安装任何 GUI,除非一个包具有依赖关系并且一个被自动安装。
我通常做两种类型的文件传输/文件维护。
对于平台原生的包,我使用标准的包管理工具,如 APT 或 YUM。对于源代码安装(something.tar.gz),我通常通过 wget 下载。
配置文件通常是由 Chef 管理的 ERB 模板。
我使用 SSH 和 SCP/SFTP 手动传输文件。
我将与管理系统相关的所有内容都保存在软件控制存储库中。这是我在一个或多个系统上更新配置时的典型工作流程。我从本地工作站开始。
我在 EC2 节点上使用的文件可能会存储在几个位置。
我在 EC2 中做了很多工作,主要是测试环境和更改。由于我的工具和工作流程,我将更多时间花在我真正关心的事情上,而不是处理单个文件和考虑特定配置。
我们所有的软件都是通过 RPM 部署的。每个 EC2 实例类型都由一个 kickstart 文件描述(其中列出了要安装的 RPM...)。kickstart 设置意味着可以在大约 10 分钟内从头开始构建每种实例类型的工作机器。
然后我们有一个程序调用 anaconda(Red Hat 安装程序)来获取一个 kickstart 文件,将系统安装到一个目录中,然后捆绑该目录并将其作为 Amazon 系统映像推送到 S3。这都是一步,所以我只需输入:
由于机器可以在大约 40 分钟内完全重建、上传和运行,因此构建新机器映像比在实际(一次性)EC2 实例上执行系统管理员更容易。因此,实际上没有在 EC2 实例上执行任何系统管理员。
我喜欢NX进行远程 gui 访问。也有很好的记录。
我使用 nautilus 进行大量文件管理,使用 ssh 进行命令。它可以直接插入您的系统,就像您在数据中心实际使用它一样。如果您是从 Windows 框中执行此操作,那么这种连接将无法工作,因为 Windows 中的 vfs 是有限的。
我认为您不需要远程桌面来执行这些任务。
正如其他人提到的,您可以使用 SFTP 在盒子之间传输文件。使用WinSCP 客户端通过 sftp 进行连接,您也可以使用它来编辑 Windows 机器上的文件(通过双击它们),就像它在本地机器上一样。您还可以使用它远程复制/移动文件。
您也可以考虑在 ssh 控制台上使用 Midnight Commander (mc) 来加快文件操作。要安装使用
yum install mc
orapt-get install mc
命令。mc
之后,您可以通过在终端上键入来启动它。它还具有比 vim 更直接的内置查看器和编辑器。如果你真的想拥有 GUI——我们通常在服务器上没有——你必须安装 X 环境并使用 VNC 连接到它。在这种情况下,我们通过 ssh 隧道连接到 VNC 服务器,从而增加了安全性。
在回答有关使用 X 设置远程桌面的问题时,如果您使用的是 Debian,请阅读此. 这并不是设置它的最佳文档。它让你安装了太多的软件包,但它的想法是正确的。你真的只需要一个用于 X 的虚拟视频驱动程序,然后让 VNC 启动一个 X 桌面。
如果您使用的是 ubuntu:我们正在考虑为此使用Landscape,它是 ubuntu(规范)团队的商业产品,将与 ec2 命令集成。
您可以尝试像 capistrano 这样的东西,但如果这还不足以满足您的需求,那么听起来您是某种配置管理的候选人。
Puppet,reducinglabs.com/products/puppet/,在这个领域是真正的佼佼者,但对你来说可能有点矫枉过正,除非你有变大的计划,然后值得预先努力。
如果您使用的是 debian/ubuntu 发行版之一,那么我会检查Slack Roles
它是 rsync 和 shell 脚本的精美包装器。这几乎没有前期学习并且效果很好,但是随着您的成长,它可能会变得有点笨拙。