fc2blog / blog

オープンソースのブログ
MIT License
379 stars 47 forks source link

AWS EC2で手軽に試すためのAMI製作 #38

Open uzulla opened 4 years ago

uzulla commented 4 years ago

目標

概要

課題

工程

**以下、当初の内容です。想定と要件がズレがあったためにかわりましたが、memoのために残します** ## インフラ例 - レンタルサーバー - VPS - IaaS (AWS EC2など - PaaS (Heroku、Elasticbeanstalk、ロリポップマネージドクラウドなど - コンテナ(AWS ECS、k8s系など - サーバレス (Lamba、 GAEなど ## 先に結論 「お試し」であれば可能だと思う、対応したいインフラを指定お教えください。 「プロダクション環境」については課題が多い、ご検討ください。 ## 課題 アプリケーションコード(=blog自体)の更新は、アプリケーションの自動アップグレードの仕組みをつくれば可能(将来的なタスク)だが、運用はアプリケーションコードに完結しない。そこはどうするのか?(無視してよいのか?) (現実として、WordPressなどでも実現ができていない) - 各種クレデンシャルのsnake oil問題(一見信用できるが全く信用できない) - 「単にAMIを起動する」だけで動くようにすると、初期のクレデンシャルが安全でない。なんらかのトリックや「sshキーを作成して登録する」程度の知識が必要になる。 - ミドルウェアのバージョンアップについて(VPS、IaaSなど) - 「その時点で、安全に試してみる」だけならば、問題ない(それでよいのか?) - ディストリビューションのパッケージマネージャの自動更新でよしとして(してよいとはおもっていないが)も、EOLがある - ストレージの永続性について - PaaS、サーバレス、コンテナ系はミドルウェアメンテが不要に近いが、通常永続的なローカルストレージが無い - 生成されるCSSやアップロードされる画像をどうするか - S3などオブジェクトストレージに保持するようにする? - EFS(NFS)などネットワークストレージをアタッチを必須とする? - DBにBlobで保存? - 構築手順(作業者のスキル設定)難易度設定 - 「FTPでアップロードしてファイルを修正」以上をさせることができるか? - 例:AnsibleやDeployerなどで既存サーバーに自動デプロイ - 例:CloudFormationやTeraformなどでクラウド環境を構築 - (そこまでできるユーザーは、自前でできるのでは?) - バックアップ・レストア - 機能の実装が必要かと思われる - サーバースペック(CPU連続実行時間制限、空きディスクスペース)によっては困難なこともある - サポートは? - 「かんたんに構築できる」のはいいとして、なにかあったとき作業者がセルフで作業できるか? ## 踏まえた上で - 安全は万全でなくても「試しに動かす」程度ならば、可能かと思う - ボタンを押すだけで起動して「プロダクションレディ、永続運用可能」な物を提供することはむずかしい - configを書いて、自動化スクリプトを手元で走らせるなどの難易度が許されるか? - コンフィグを生成する(あるいはオートメーションを実行する)外部サービスを別途作る? どこまで実現したいか?ハードルをさげるか?の検討ができればと思います。
fc2dev commented 4 years ago

@uzulla AWSでAMIイメージを作成しておき、EC2インスタンスとして起動できるようにすることを第一歩として捉えています。 優先度としては、アップデートの機能を整えた後で考えています。

クレデンシャル AMIイメージであれば、初回起動時にクレデンシャル(パスワード)を生成し システムコンソールに表示するか、値をAWSコンソール上に表示することで 比較的安全に初期のパスワードを通知することが可能です。 また、SSHの鍵についてはクラウド側で生成してサーバーに登録されていることを前提とします。

ミドルウェアの管理 ミドルウェアの管理は厳格に行うのであれば、 AnsibleやChefなど構成管理ツールを適用しておき、レシピも管理しておく必要はありますが、 当初はディストリビューションのパッケージマネージャーの自動更新で構わないと思います。

永続性 EBSを使うことを前提とし、オブジェクトストレージへの対応は今後していけば良いと考えます。 Mysqlも含めたオールインワンのAMIです。

構築手順 AMIからEC2インスタンスを作り、コンソールで表示されたIPアドレスへアクセスを行うことにより OSS版FC2ブログの管理画面で設定を行い、利用を開始いただくことを考えています。

バックアップ クラウドの機能としてスナップショットの取得が可能なため、クラウドに任せて良いと考えています。

サポート 利用者様同士で解決していただくのが原則となりますが、 サポート用のフォーラムを弊社内に用意することで検討をしています。

uzulla commented 4 years ago

@fc2dev

ありがとうございます、要件理解できました。

細かい質問ですが、

fc2dev commented 4 years ago

@uzulla

・ミドルウェアは一般的なLAMPスタックで構いません。 ・Linuxのディストリビューションについては弊社でもUbuntuを利用しているため、Ubuntuに揃えていただけると助かります。 今だともう20.04でも安定して動くと考えています。 ・AMIの更新は大きな変更があったタイミングでスポット作業で依頼させていただくことを考えております。

uzulla commented 3 years ago

note

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/building-shared-amis.html https://aws.amazon.com/jp/articles/how-to-share-and-use-public-amis-in-a-secure-manner/ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharing-amis.html https://cloud-init.io/ https://www.insight-tec.com/tech-blog/20201216_aws_marketplace_ami/