你如何pipe理你的EC2 Linux机器?

我有几个EC2 Linux映像,为我的项目之一进行夜间处理作业。 不时,我需要进入,做一些代码修改,configuration一些东西,然后重新绑定图像。

我的这些操作工具是痛苦的稀疏(SSH进入框,编辑VIM文件,WGET远程文件,我需要),我怀疑有一个更好的方法来做到这一点。 我很好奇听到我的位置上还有其他人在做什么。

我真的需要得到一些pipe理这些箱子的最佳实践。 任何build议,以消除一些痛苦将是最受欢迎的!

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

我不再做太多的手动系统pipe理。 我把我的基础设施视为一个可编程的实体,并将其作为一个可编程的实体来处理,通过configuration系统来自动configurationpipe理,EC2节点维护等工具。我的工具箱中的工具:

  • Ruby(我最喜欢的脚本/工具语言)
  • Git(版本控制)
  • Opscode的厨师 (用Ruby编写)(1)
  • Capistrano(临时大规模维修)
  • 亚马逊的EC2 API工具和图像维护。
  • Rightscale的AWS gem(Ruby绑定EC2)

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

当我按照特定function的需要构build节点时,我会捆绑一个AMI。 例如,如果我构build一个Rails应用程序服务器,那么我将安装所有必备软件包以节省构build时间。

当所有其他的失败,我login到SSH系统。 我做了很多年的手工系统pipe理,这是老帽子。

你使用某种forms的窗口系统和远程桌面相当于访问该框,或者是所有的命令行吗?

我不会在服务器上安装任何GUI,除非软件包有依赖关系,并且自动安装。

在Linux世界中是否有与此相当的东西? (传输文件)

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

  • 包安装
  • configuration文件

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

configuration文件通常由Chefpipe理的ERB模板。

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

你正在做你的configuration改变/脚本直接在机器上调整? 或者你在本地机器上设置了什么东西来远程编辑这些文件? 还是你只是远程编辑它们,然后在每次保存时转移它们?

我把与pipe理系统有关的所有东西放在一个软件控制库中。 在一个或多个系统上更新configuration时,这是我典型的工作stream程。 我从我的本地工作站开始。

  • 从主Git仓库拉他人的变化。
  • 在本地编辑文件(如更新configuration文件)。
  • 承诺改变,推动主。
  • 在厨师服务器(通过SSHlogin),拉我刚刚提交的最新的变化。
  • 将configuration部署到Chef服务器上的相应位置(我使用Rake)。
  • 厨师的客户间隔运行,所以他们会每隔30分钟更换一次。 如果我立即需要,我手动运行chef-client。
  • validation更改!

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

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

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

我在EC2做了很多工作,主要是testing环境和变化。 由于我的工具和工作stream程,我花了更多的时间来处理我真正关心的事情,而不是处理单个文件和思考特定configuration。

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

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

kickstart2ami webserver.ks 

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

我喜欢NX远程GUI访问。 非常有据可查的。

我使用nautilus进行相当多的文件pipe理和ssh命令。 它直接插入到您的系统中,就像您在数据中心中一样。 如果你是从一个窗口框中进行的话,那么这种连接将不起作用,因为窗口中的vfs是有限的。

我认为你不需要远程桌面来完成这些任务。

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

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

如果你真的想拥有graphics用户界面(我们通常没有在服务器上),那么你必须安装X环境并用VNC连接它。 在这种情况下,我们通过一个ssh隧道连接到VNC服务器,为其增加更多的安全性。

在回答有关使用X设置远程桌面的问题时,如果您使用的是Debian,请阅读本文 。 这并不是设置它的最大的文件。 它有你安装太多的软件包,但它是正确的想法。 你真的只需要X虚拟video驱动程序,然后让VNC启动一个X桌面。

如果您使用的是Ubuntu,我们正在考虑使用横向格式,这是由ubuntu(canonical)团队提供的一个商业产品,并将与ec2命令集成在一起。

你可以尝试像capistrano这样的东西,但是如果这对于你以后的事情来说还不够,那么听起来你是某种configurationpipe理的候选人。
木偶,reductivelabs.com/products/puppet/,在这个领域是一个真正的突出,但可能有点矫枉过正,除非你有更大的计划,然后值得前面的辛勤工作。
如果您使用的是debian / ubuntu发行版之一,那么我会检查Slack Roles
它是一个花哨的包装rsync和shell脚本。 这很less有前期的学习和良好的工作,但随着你的成长可以得到一点顺从。