您如何管理EC2 Linux设备?


8

我有一些EC2 Linux映像,它们为我的一个项目进行夜间处理工作。我需要时不时地进入,进行一些代码更改,进行一些配置,然后重新捆绑图像。

我用于这些操作的工具集非常稀疏(将SSH插入框中,在VIM中编辑文件,需要我的WGET远程文件),我怀疑还有更好的方法。我很想知道我这个职位上其他人在做什么。

  • 您是否正在使用某种形式的Windowing系统和等效的远程桌面来访问该框,还是全部使用命令行?管理EC2 Windows盒非常简单,因为您可以简单地远程进入桌面并通过网络传输文件。在Linux世界中有与此等效的东西吗?

  • 您是在机器上直接进行配置更改/脚本调整吗?还是在本地框上设置了某些内容以远程编辑这些文件?还是只是简单地远程编辑它们,然后在每次保存时传输它们?

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

我真的需要掌握一些管理这些框的最佳实践。任何消除某些痛苦的建议都将受到欢迎!

编辑:显然,我在上面并不清楚,因为前两个响应围绕管理和配置EC2实例展开。我只想知道如何将桌面远程安装到正在运行的Linux Server中,从而使文件移动和编辑变得不那么麻烦。


您可能会获得有关管理和配置EC2实例的答案,因为标题为“如何管理EC2 Linux盒?”。
Bill Weiss,

Answers:


13

我不再进行太多手动系统管理。我将基础架构视为可编程实体,并通过使用可自动执行配置管理,EC2节点维护等工具的系统来配置系统,将其视为此类实体。我的工具箱中的工具:

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

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

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

当所有其他方法均失败时,我将使用SSH登录系统。我做了很多年的手动系统管理,这真是老土了。

您是否正在使用某种形式的Windowing系统和等效的远程桌面来访问该框,还是全部使用命令行?

我不会在服务器上安装任何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中做了很多工作,主要是测试环境和变更。由于工具和工作流程的影响,我将更多的时间花在了我真正关心的事情上,而不是花在处理单个文件和思考特定配置上。


“我使用APT或YUM之类的标准软件包管理工具”-apt-get / yum总是选择最新的软件包。如何管理是否必须安装该软件包的另一个版本(由您的应用程序的特定需求所必需)?还是您从未面对过?
talonx 2011年

6

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

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

kickstart2ami webserver.ks

由于可以在大约40分钟内完全重建,上传和运行计算机,因此与在实际的(丢弃)EC2实例上执行sysadmin相比,构建新的计算机映像要容易得多。因此,实际上没有在EC2实例上执行任何sysadmin。


因此,您实际上每次启动时都从头开始重建整个盒子吗?哎哟。即使是我的机器所做的一点工作,也具有十几种随机依赖性和一堆3种语言的自定义代码。花费了一个月的时间进行调整才能正确设置它,所以我无法想象能够一次性复制所有内容的复杂脚本。您如何构建和测试您的脚本?
杰森·凯斯特

所有代码都打包到RPM(en.wikipedia.org/wiki/RPM_Package_Manager)包中,因此在包中抽象出了安装各种代码段的任何复杂性。然后,大部分的努力就是打包代码。我通常认为没有通过软件包管理安装的任何东西都是笨拙的。kickstart只会安装这些软件包的列表,因此它的工作非常简单。因为没有神奇的配置/调整,所以没有机器是特殊的或珍贵的。“ kickstart2ami”仅调用anaconda,然后依次调用ec2上传/注册工具,并添加一些胶水。
tfh1985

1
可以分享kickstart2ami脚本吗?
诺亚·坎贝尔,2010年

@JasonKester“花了一个月的时间进行调整才能正确设置”的任何重要内容肯定值得记录复制步骤。有什么比编写脚本更好的记录方法了?
天鹰

3

我喜欢NX进行远程GUI访问。也有很好的记录。


3

我使用nautilus进行大量文件管理,并使用ssh进行命令。它就像在数据中心中一样直接插入您的系统。如果您是从Windows盒子中进行操作,则这种连接将不起作用,因为Windows中的vfs受限制。


2

我认为您不需要远程桌面来执行这些任务。

正如其他人提到的,您可以使用SFTP在文件箱之间传输文件。使用WinSCP客户端通过sftp进行连接,您也可以使用它来编辑Windows计算机上的文件(通过双击它们),就像在本地计算机上一样。您也可以使用它来远程复制/移动文件。

您还可以考虑在ssh控制台上使用Midnight Commander(mc),它可以加快文件操作。要安装,请使用yum install mcapt-get install mc命令。然后,您可以通过mc在终端上键入来启动它。它还具有一个内置的查看器和编辑器,它比vim更直接。

如果您确实要拥有GUI(我们通常在服务器上没有),则必须安装X环境并通过VNC连接到它。在这种情况下,我们通过ssh隧道连接到VNC服务器,从而为其添加了更多安全性。


1

在回答您的有关设置了X远程桌面的问题,如果你使用Debian,请阅读。这并不是设置它的最佳文档。它让您安装了太多的软件包,但这是正确的主意。您实际上只需要一个用于X的虚拟视频驱动程序,然后让VNC启动X桌面。


0

如果您使用的是ubuntu:我们正在考虑为此使用景观,这是ubuntu(规范)团队的商业产品,并将与ec2命令集成在一起。


谢谢,但这似乎是用于管理EC2实例的工具,而不是将远程桌面迁移到单独的盒子中,而这正是我正在寻找的工具。
杰森·凯斯特

0

您可以尝试使用capistrano之类的方法,但是如果这还不足以满足您的需求,那么听起来您已成为某种配置管理的候选人。
Puppet,reductivelabs.com / products / puppet /是该领域的佼佼者,但对您来说可能有点过大,除非您有变大的计划,然后值得进行艰苦的努力。
如果您使用的是debian / ubuntu发行版之一,那么我将签出Slack Roles
它是rsync和shell脚本的精美包装。这几乎没有什么前期学习,并且效果很好,但是随着您的成长,它会变得有些笨拙。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.