EC2 Linuxボックスをどのように管理しますか?


8

私のプロジェクトの1つで毎晩処理するEC2 Linuxイメージがいくつかあります。時々、私は入り、いくつかのコード変更を行い、いくつかのものを設定し、イメージを再バンドルする必要があります。

これらの操作のための私のツールセットはひどくまばらで(ボックスへのSSH、VIMでのファイルの編集、必要なWGETリモートファイル)、私はそれを行うためのより良い方法があると思います。私の立場にいる他の人々が何をしているのか知りたいです。

  • ボックスにアクセスするために、何らかの形式のウィンドウシステムとリモートデスクトップを使用していますか、それともすべてコマンドラインですか?EC2 Windowsボックスを管理することは、ネットワーク経由でデスクトップをリモートで転送してファイルを転送するだけなので簡単です。Linuxの世界でこれに相当するものはありますか?

  • マシン上で直接設定変更/スクリプト調整を行っていますか?または、これらのファイルをリモートで編集するためにローカルボックスに何か設定されていますか?または、リモートで編集してから、保存するたびに転送しますか?

  • EC2とローカル環境の間でファイルをどのように移動しますか?FTP?VPN経由でマップされたドライブのようなものですか?

これらのボックスを管理するために、いくつかのベストプラクティスを導入する必要があります。痛みのいくつかを取り除くための提案は大歓迎です!

編集:明らかに、最初の2つの応答はEC2インスタンスの管理と構成を中心に展開されていたため、上記は明確ではありませんでした。デスクトップを実行中のLinuxサーバーにリモートで移動して、ファイルを移動したり編集したりするのが簡単になるようにしたいだけです。


タイトルは「EC2 Linuxボックスをどのように管理しますか?」なので、EC2インスタンスの管理と構成に関する回答を得ている可能性があります。
ビル・ワイス

回答:


13

手動によるシステム管理はもうやめました。私は自分のインフラストラクチャをプログラム可能なエンティティと見なし、構成管理やEC2ノードのメンテナンスなどを自動化するツールでシステムを構成することで、そのように扱います。ツールボックス内のツール:

  • Ruby(私のお気に入りのスクリプト/ツール言語)
  • Git(バージョン管理)
  • OpscodeのChef(Rubyで記述)(1)
  • カピストラーノ(臨時の大量保守)
  • インスタンスおよびイメージのメンテナンスのためのAmazonのEC2 APIツール。
  • RightscaleのAWS gem(EC2のRubyバインディング)

(1)-開示、私はOpscodeで働いています。Reductive Labの人形のような他のツールがこのスペースを埋めます。

特定の機能に必要な方法でノードを構築したら、AMIをバンドルします。たとえば、Railsアプリサーバーを構築している場合は、すべての必須パッケージをインストールして、構築にかかる時間を節約します。

他のすべてが失敗した場合、私はSSHでシステムにログインします。私は長年にわたって手動のシステム管理を行っていました。これは古い帽子です。

ボックスにアクセスするために、何らかの形式のウィンドウシステムとリモートデスクトップを使用していますか、それともすべてコマンドラインですか?

パッケージに依存関係があり、パッケージが自動インストールされない限り、サーバーにGUIをインストールしません。

Linuxの世界でこれに相当するものはありますか?(ファイルの転送)

私は通常、2種類のファイル転送/ファイル保守を行います。

  • パッケージのインストール
  • 設定ファイル

プラットフォームにネイティブなパッケージについては、APTやYUMなどの標準パッケージ管理ツールを使用します。ソースインストール(something.tar.gz)の場合、通常はwget経由でダウンロードします。

構成ファイルは通常、Chefによって管理されるERBテンプレートです。

SSHとSCP / SFTPを使用して手動でファイルを転送します。

マシン上で直接設定変更/スクリプト調整を行っていますか?または、これらのファイルをリモートで編集するためにローカルボックスに何か設定されていますか?または、リモートで編集してから、保存するたびに転送しますか?

システムの管理に関連するすべてのものをソフトウェア制御リポジトリに保管します。これは、1つ以上のシステムで構成を更新するときの私の典型的なワークフローです。私は自分のローカルワークステーションから開始します。

  • 他の人の変更のためにマスターGitリポジトリからプルします。
  • ローカルでファイルを編集します(構成ファイルの更新など)。
  • 変更をコミットし、マスターにプッシュします。
  • Chefサーバー(SSH経由でログイン)で、コミットした最新の変更をプルします。
  • Chefサーバーの適切な場所に構成をデプロイします(このためにRakeを使用しています)。
  • Chefクライアントは一定の間隔で実行されるため、30分ごとに変更を取得します。すぐに何かが必要な場合は、chef-clientを手動で実行します。
  • 変更を確認してください!

EC2とローカル環境の間でファイルをどのように移動しますか?FTP?VPN経由でマップされたドライブのようなものですか?

EC2ノードで使用するファイルが保存される可能性のある場所がいくつかあります。

  • Chefサーバー。主に設定テンプレート、いくつかの小さなパッケージも。
  • GitHub。コード(オープンソースプロジェクト)をGitHubに保存します。EC2ノードはこれに簡単にアクセスできます(何かの最新バージョンのチェックアウトなど)。
  • Amazon S3バケット。いくつかのものはバケツに保管されます。

私はEC2で多くの作業を行い、主に環境と変更のテストを行っています。私のツールとワークフローの結果として、実際に気にかけることに取り組むのに多くの時間を費やし、個々のファイルの処理や特定の構成の検討に費やす時間を減らしています。


「APTやYUMなどの標準パッケージ管理ツールを使用しています」-apt-get / yumは常に最新のものを選択します。別のバージョンのパッケージをインストールする必要がある場合(アプリケーションの特定のニーズによって必要になった場合)はどのように管理しますか?または、これに直面したことはありませんか?
talonx

6

すべてのソフトウェアはRPMを介してデプロイされます。各EC2インスタンスタイプは、キックスタートファイル(インストールされるRPMをリストする...)によって記述されます。キックスタートセットアップとは、各インスタンスタイプの稼働中のマシンを約10分でゼロから構築できることを意味します。

次に、anaconda(Red Hatインストーラー)を呼び出してキックスタートファイルを取得し、システムをディレクトリにインストールして、そのディレクトリをバンドルし、Amazon Machine ImageとしてS3にプッシュするプログラムがあります。これはすべて1つのステップなので、次のように入力します。

kickstart2ami webserver.ks

マシンは約40分で完全に再構築、アップロード、実行できるため、実際の(使い捨ての)EC2インスタンスでsysadminを実行するよりも新しいマシンイメージを構築する方が簡単です。したがって、EC2インスタンスでは実際にはsysadminは実行されません。


それで、あなたは実際にそれを起動するたびに最初からボックス全体を再構築しますか?痛い。私のボックスが行う小さな仕事でさえ、ランダムな依存関係が12個あり、3つの言語のカスタムコードがたくさんあります。正しく設定するには1か月の微調整が必​​要だったので、一度にすべてを再現するような複雑なスクリプトを想像することはできませんでした。あなたのスクリプトをどのように構築してテストしましたか?
Jason Kester、

すべてのコードはRPM(en.wikipedia.org/wiki/RPM_Package_Manager)パッケージにパッケージ化されているため、さまざまなコードのインストールの複雑さはパッケージ内で抽象化されています。努力のほとんどは、コードをパッケージ化することです。私は通常、パッケージ管理を介さずにインストールされたものはすべて失敗と見なします。キックスタートはこれらのパッケージのリストをインストールするだけなので、その作業はかなり簡単です。魔法の設定や調整がないため、特別なマシンや貴重なマシンはありません。"kickstart2ami"はanacondaを呼び出し、次にec2アップロード/登録ツールを順番に呼び出します。
tfh1985 09年

1
kickstart2amiスクリプトを共有できますか?
ノアキャンベル

@JasonKester「1か月間調整して正しく設定する」という重要なことは、再現手順を文書化する価値があります。それをスクリプト化するよりも、それを文書化するより良い方法は何ですか?
スカイホーク

3

リモートGUIアクセスにはNXが好きです。非常によく文書化されています。


3

かなりのファイル管理にはnautilusを使用し、コマンドにはsshを使用しています。データセンターで物理的に使用していたように、システムに直接接続します。Windowsボックスから実行する場合、WindowsのVFSが制限されているため、この種の接続は機能しません。


2

これらのタスクにはリモートデスクトップは必要ないと思います。

他の人が述べたように、SFTPを使用してボックス間でファイルを転送できます。使用WinSCPのクライアントそれがローカルマシン上にあったかのようにあなたも編集でき(それをダブルクリックして)Windowsマシン上のファイルを使用することができ、SFTP経由で接続します。また、リモートでファイルをコピー/移動するために使用することもできます。

ファイル操作を高速化できるsshコンソールでMidnight Commander(mc)を使用することも検討できます。インストールするには、yum install mcまたはapt-get install mcコマンドを使用します。その後mc、ターミナルで入力することで開始できます。また、vimよりも簡単なビューアとエディタが組み込まれています。

GUIが本当に必要な場合(通常、サーバーにはありません)、X環境をインストールしてVNCでそれに接続する必要があります。このような場合、セキュリティを強化するsshトンネルを介してVNCサーバーに接続します。


1

Xを使用したリモートデスクトップの設定に関する質問への回答として、Debianを使用している場合は、こちらをお読みください。それを設定することに関して、それはまさに最高のドキュメントではありません。それはあなたがあまりにも多くのパッケージをインストールしていますが、それは正しい考えを持っています。本当に必要なのは、X用のダミービデオドライバーだけです。その後、VNCでXデスクトップを起動します。


0

ubuntuを使用している場合:これにはランドスケープの使用を検討しています。ubuntu(正規)チームによる商用製品であり、ec2コマンドと統合されます。


ありがとう、しかしそれはEC2インスタンスを管理するためのツールのようであり、個別のボックスへのリモートデスクトップ処理ではなく、ツールを探しています。
Jason Kester

0

capistranoのようなものを試すこともできますが、それでも十分でない場合は、なんらかの構成管理の候補のようです。
Puppet、reductivelabs.com / products / puppet /は、この分野では本当に目立っていますが、大きくなる計画があり、前もってハードワークする価値がある場合を除いて、少しやりすぎかもしれません。
debian / ubuntuディストリビューションの1つを使用している場合は、Slackロールをチェックアウトし
ます。これは、rsyncおよびシェルスクリプトの高級ラッパーです。これは事前の学習がほとんどなく、うまく機能しますが、成長するにつれて少し不規則になる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.