Movatterモバイル変換


[0]ホーム

URL:


PDF, PPTX21,976 views

AWS OpsWorksハンズオン

AWS OpsWorksハンズオン

Embed presentation

Download as PDF, PPTX
AWS OpsWorksハンズオン2014/06/121
AgendaAWS OpsWorks概要AWS OpsWorksハンズオン• CloudFormationによるEC2インスタンス、RDS、VPCの自動生成• GitHub上にコードリポジトリ生成• サンプルレシピを作成、GitHubにpush• OpsWorksのスタック、レイヤー、インスタンス、App生成• OpsWorksで起動したインスタンスにサンプルレシピを実行• OpsWorksでWordPressをデプロイするAPPENDIX2
AWSの構築・デプロイ自動化サービスの中での位置づけElastic Beanstalk OpsWorks CloudFormationフレキシビリティ導入の容易さ
AWS OpsWorks概要4
5AWS OpsWorksとは?アプリケーションのライフサイクル管理サービス• Chefを採用• ソフトウェアのインストール・構成・アプリケーションのデプロイの自動化• 幅広いアプリケーションアーキテクチャをサポート• 追加コストなし
AWS OpsWorksのメリットAWSにおけるインスタンスやアプリの動的な構成変更に容易に対応可能Chefのサーバー・クライアントのメンテナンスが不要。Chefのレシピやアプリの開発に注力が可能アプリケーションのデプロイのサイクルを自動化することで、ビジネスニーズの変化にいち早く対応可能開発者コードリポジトリpush デプロイ インスタンス
(例)OpsWorksによる動的なインスタンス追加への対応バックエンドインスタンスが動的に追加されても、HAProxyに反映される後から追加起動したインスタンスにも最新のアプリがデプロイされるS/WロードバランサーレイヤーWebサーバレイヤー監視サーバレイヤー後から追加起動したインスタンスも動的に監視対象に追加される構成情報OpsWorks
OpsWorksの動作要件Amazon LinuxまたはUbuntu 12.04LTSベース• AMIをカスタマイズ可能Chefバージョン9,11に対応VPC対応• デフォルトVPC, 自作VPC共に利用可能ELB、RDS、CloudFormationに対応起動したインスタンスからOpsWorksサービスエンドポイントへ通信可能であること
OpsWorksの基本的な仕組みEC2インスタンス上のOpsWorks AgentOpsWorkstalks with
OpsWorksの基本的な仕組みOpsWorksによって引き起こされた一連のコマンドを取得AgentがChef solo(Chef client)でレシピを実行EC2インスタンス上のOpsWorks Agent
OpsWorks利用の流れUser AWS ManagementConsoleStackLoad BalancerレイヤーApp ServerレイヤーDatabaseレイヤーレシピレシピレシピ DBWeb/AppWeb/AppLB①スタックの作成②レイヤーの作成③レシピの設定④レイヤーにインスタンス追加・起動⑤ライフサイクルイベントにより、レシピが実行される(次頁参照)構成情報(JSON)
OpsWorksライフサイクルイベント各イベントごとに登録されているレシピが実行されるイベント いつ実行されるか?Setup インスタンス初期化時、または正常に起動した時Configure スタックの状態が変化するたびに実行。例:新規インスタンスがレイヤーに正常に追加された時Deploy アプリケーションがデプロイされるたびに実行Undeploy アプリケーションが削除された時Shutdown インスタンスが停止する45秒前<Cookbook名>::<レシピ名>レシピ名がdefaultの場合は省略可能
用語説明:スタックとは?OpsWorksのトップエンティティ属する全インスタンスの構成を管理• 例:DBサーバをアプリケーションサーバのバックエンドデータストアとして認識させるカスタムレシピを保存する任意のリポジトリを指定可能スタックをコピー可能• リージョン間でも可能
用語説明:レイヤーとは?インスタンス構築のための青写真(設計図)レシピを指定して、何のパッケージをインストールするか定義カスタムレシピも定義可能追加のEBSボリュームの指定。RAID指定も可能ビルトインレイヤーSecurity Groupの設定も可能
用語説明:インスタンスとは?アプリケーションを提供するためのEC2インスタンスのこと起動時にインスタンスサイズやAZ(VPC内の場合はサブネット)を指定
用語説明:Appとは?アプリケーションサーバにデプロイされる利用可能なアプリケーションサーバ• Ruby on Rails / PHP /Node.js(JavaScript) / Static(HTML) /Other(Javaなど)サポートするリポジトリ• Git / Subversion / HTTP archive / S3Archive / Other
構成例17Virtual Private CloudVPC Public SubnetVPC Private SubnetInternetGatewayNATPHP App ServerレイヤーMySQL DB レイヤーGithubRecipeRepositoryApp CodeRepositoryVPC内に構築• OpsWorksにより起動されたインスタンスはOpsWorksサービスエンドポイントと接続が必須(Privateサブネット利用時はNAT必須)• プライベートサブネット内のコードリポジトリを利用可能• 同じレイヤーのインスタンスを異なるサブネットに配置可能
OpsWorksの利用方法AWSマネージメントコンソールAWS CLIAWS SDK for Java / .NET / PHP / Python / Ruby$ aws opsworks describe-stacks
ハンズオン19
ハンズオンの目標OpsWorksの仕組みを理解する自分で作成したChefレシピをOpsWorks上でデプロイできるOpsWorksでWordPressをデプロイできる20
今回構築する構成のイメージ21WordPress用インスタンスOpsWorksスタックPHP App ServerレイヤーGitHubコードリポジトリGitクライアン用インスタンス(レシピ作成用)UserChefレシピをgit pushChefレシピを作成ChefレシピをデプロイAmazonRDSMySQLDB接続RDSレイヤー
手順概要1. CloudFormationでGitクライアント用インスタンス、RDSを作成2. GitHubアカウント登録(登録済の場合は不要)3. Gitクライアント用インスタンス上でChefレシピを作成、GitHubにpush4. OpsWorksスタック、PHP Application Serverレイヤー、RDSレイヤー、インスタンスを作成5. レシピがインスタンス上で実行されたことを確認6. WordPressが動作することを確認する22
(ご参考)実行するコマンドラインのテキスト以下のテキストにあるコマンドを、必要箇所でコピー&ペースト頂くと、コマンド入力ミスを防げて便利です。• http://opsworks-bootcamp-jp.s3.amazonaws.com/CLI.txt適宜ご活用ください。23
CloudFormationでGitクライアント、RDSを作成24
本章で構築する環境25Gitクライアント用インスタンス(レシピ作成用)UserAmazonRDSMySQLGitクライアント用インスタンスとRDSインスタンスをCloudFormationで作成する※VPC、パブリックサブネット、プライベートサブネットも作成する
事前確認事項今回CloudFormationで作成する以下のAWSリソースがAWSアカウント内で上限値に達していないことを確認してください。デフォルト上限値(2014年6月12日現在)• 1リージョンにつきEC2 t1.microインスタンス: 20• 1リージョンにつきVPC数: 5• RDSインスタンス: 40• CloudFormationスタック数: 2026
AWS Management Consoleにログインhttps://console.aws.amazon.com/console/home へアクセスご自身のユーザーアカウントでログイン27
CloudFormationスタックの作成(1)28
CloudFormationスタックの作成(2)29Specify an Amazon S3 template URLを選択して、http://opsworks-bootcamp-jp.s3.amazonaws.com/opsworks-handson-cf.templateを入力して、Nextを選択。
CloudFormationスタックの作成(3)30ハンズオンに利用可能な既存のEC2キーペアの名前を入力する。キーペアがない場合は、別途作成してから、その名前を入力する。
CloudFormationスタックの作成(4)31特に何も入力せずに、Nextを選択
CloudFormationスタックの作成(5)32確認後、Createを選択
GitHubにアカウント登録する(カスタムChefレシピ格納先)※既にGitHubアカウントをお持ちの方は飛ばして頂いて構いません33
本章で構築する環境34Gitクライアント用インスタンス(レシピ作成用)UserAmazonRDSMySQLGitHubコードリポジトリGitHubにアカウント登録する
GitHubへアクセスし、アカウントを登録https://github.com/ へアクセス35任意のユーザー名、パスワード、メールアドレスを入力Sign upを選択
GitHubの登録内容を確認して、登録完了36
新しいリポジトリを作成37
リポジトリ名を指定してCreate repositoryを選択38任意のリポジトリ名
リポジトリ作成完了39
Gitクライアントインスタンス上でChefレシピを作成、GitHubにpushする40
本章で構築する環境41Gitクライアント用インスタンス(レシピ作成用)UserAmazonRDSMySQLGitHubコードリポジトリChefレシピをgit pushChefレシピを作成
CloudFormationのOutputsを確認42CloudFormationのManagement Console画面に移動実行したStackを選択、StatusがCREATE_COMPLETEになっていることを確認Gitクライアント用のインスタンスのPublicDnsNameを確認する
Gitクライアント用インスタンスにGitをインストールSSHでGitクライアントにログインする• 接続先:Git ClientのPublic DNS(前頁で確認したもの)• (例:ec2-xx-xx-xx-xx.ap-northeast-1.amazonaws.com)• ユーザー名:ec2-user• パスワード: (なし)• 秘密鍵ファイル:(ダウンロードした秘密鍵ファイル 例:demo.pem)ログイン後、updateをしてgitをインストール43$ sudo yum update$ sudo yum install git
Gitクライアント上でサンプルのChefレシピを作成するサンプルレシピ用のディレクトリを作成サンプル用のレシピファイルを作成default.rbの中身は次頁44$ mkdir –p ~/site-cookbooks/hello/recipes$ vi ~/site-cookbooks/hello/recipes/default.rbGitクライアント上で実行
default.rbの中身上記テキストをそのままコピー&ペーストすると、全角文字になっている部分があるため、以下URLにあるテキストから取得したものを利用するようにしてください。• http://opsworks-bootcamp-jp.s3.amazonaws.com/CLI.txt45file "/home/ec2-user/hello.txt" doaction :createendGitクライアント上で実行
GitクライアントからGitマスターサーバーへGit接続するための設定をするGitの初期化、コミット、GitHubリポジトリにpushをするgitのユーザー名、パスワードを入力するとpushが成功する46$ cd ~/site-cookbooks$ git init$ git add .$ git commit –m “first commit”$ git remote add origin https://github.com/xxxxxx/test-cookboooks.git$ git push -u origin masterGitクライアント上で実行Username for 'https://github.com': xxxxxxxxPassword for ‘https://xxxxxxxxxx@github.com’: xxxxxxxxxxxxx
OpsWorksの環境を構築する47
本章で構築する環境48Gitクライアント用インスタンス(レシピ作成用)UserAmazonRDSMySQLGitHubコードリポジトリスタック、レイヤー、新規インスタンス、既存のRDSを追加するWordPress用インスタンスOpsWorksスタックPHP App ServerレイヤーRDSレイヤー
AWS Management Console上のOpsWorksの画面に移動するhttps://console.aws.amazon.com へアクセスご自身のアカウントでログインOpsWorksを選択する49
OpsWorks Stackを作成するAdd Stackを選択50
スタックの設定をする51Name: WordPressStackRegion: Asia Pacific (Tokyo)VPC: OpsWorksVPC(CloudFormationで作成したVPC)Default subnet:10.0.1.0/24 PublicSubnetDefault operating system: Amazon LinuxDefault root device type: Instance storeDefault SSH key: (CloudFormation作成時に指定したSSH key)Advancedを選択(忘れずに!)
Stackの設定(つづき)52Repository type: GitRepository URL:https://github.com/xxxxxx/test-cookboooks.Use custom Chef cookbooksをYesにする11.10を選択
レイヤーを追加する53
PHP App Serverレイヤーを追加する54
PHP App ServerのPublic IPAddress割り当ての設定を有効にする55
PHP App ServerのPublic IPAddress割り当ての設定を有効にする56
PHP App ServerのPublic IPAddress割り当ての設定を有効にする57
RDSレイヤーを追加する58
RDSレイヤーを追加する59
RDSレイヤーを追加する60CloudFormationで作成されたRDSを選択する(CloudFormationのOutputsから確認可能)User: wpuserPassword: wppassword
PHP App Serverレイヤーにインスタンスを追加する61
PHP App Serverレイヤーにインスタンスを追加する(続き)62
PHP App Serverレイヤーに追加するインスタンスの設定63t1.microでも構わないが、起動に時間がかかる可能性があるため、c3.largeを推奨10.0.1.0/24 PublicSubnetを選択Advancedを選択
PHP App Serverレイヤーに追加するインスタンスの設定(続き)64自分のキーペアが選択されていることを確認Instance storeが選択されていることを確認
追加したインスタンスを起動する65
起動を確認66Statusがonlineになるのを確認する
起動後、インスタンスにSSHログインするユーザー名:ec2-userパスワード:なし秘密鍵ファイル:指定したキーペア用のファイル接続先:以下のpublic IP67接続先のpublic IPsshリンクをクリックすると、SSH接続に必要な情報が表示される。(任意)
PHP App ServerレイヤーのインスタンスにSSHログイン後/home/ec2-userディレクトリに何もファイルがないことを確認68$ ls /home/ec2-user
作成したChefレシピをPHP App Serverレイヤーのインスタンスに実行する69
本章で構築する環境70Gitクライアント用インスタンス(レシピ作成用)UserAmazonRDSMySQLGitHubコードリポジトリスタック、レイヤー、新規インスタンス、既存のRDSを追加するWordPress用インスタンスOpsWorksスタックPHP App ServerレイヤーRDSレイヤースタックのRun Command(Execute Recipe)でhello Chefレシピを実行
OpsWorksのインスタンスにレシピを手動で展開、実行する方法71Chefレシピコードリポジトリ①Stack CommandでCustomCookbookをアップデート②①のコマンドにより、Cookbook(レシピ含む)がインスタンスに自動で展開される③Stack Commandでレシピ名を指定して実行インスタンスOpsWorksManagementConsole
Stackの画面に移動72
Run Commandを選択73
Custom Cookbookをアップデートする74Update Custom Cookbooksを選択作成したChefレシピをPHP App Serverインスタンスにダウンロードさせるために行う処理インスタンスのステータスがonlineになると選択可能になる。onlineになるまで待機
Custom Cookbookをアップデート中75
Custom Cookbookのアップデート成功を確認76Repeatをクリックすると、再度Run Command画面に切り替わる
helloレシピを実行する77Execute Recipesを選択Recipes to executesにhello と入力
レシピが実行中であることを確認78
レシピが実行成功したことを確認79
PHP App Serverレイヤーのインスタンス上でhello.txtファイルが生成されたことを確認するlsコマンドで確認80[ec2-user@php-app1 ~]$ ls –lh /home/ec2-usertotal 4.0K-rw-r--r-- 1 root root 6 Mar 20 09:43 hello.txtOpsWorksインスタンス上で実行
PHP App ServerレイヤーのインスタンスにWordPressをデプロイする81
本章で構築する環境82Gitクライアント用インスタンス(レシピ作成用)UserAmazonRDSMySQLGitHubコードリポジトリWordPress用インスタンスOpsWorksスタックPHP App ServerレイヤーRDSレイヤーWordpressChefレシピをgit pushWordpressChefレシピを作成WordpressChefレシピをデプロイDB接続
WordPressをデプロイするまでの流れ構成に必要なパラメータをStack JSONに登録する2つのChefレシピファイルを作成、Gitマスターにpushする• WordPress CLIインストール用のレシピ• WordPress CLIを使ったWordPress構成用のレシピOpsWorksのStack内にWordPress用のAppを登録、デプロイするChefレシピファイルを実行する83
Stackの画面に移動84
Stack Settingsを選択85
Stackの設定を変更する86
Custom Chef JSON用のテキストを作成するコードは以下からダウンロード可能• http://opsworks-bootcamp-jp.s3.amazonaws.com/CLI.txt87{"deploy": {"wordpress": {"wp_admin_email" : "xxx@xxxx"}}}WordPress設定時に登録するAdmin用のご自身のEメールアドレスを入力する
作成したCustom Chef JSONテキストを入力88下にスクロール作成したCustom JSONを入力する
Stackの設定を反映させるためにConfigureを実行する89
Stackの設定を反映させるためにConfigureを実行する90Configureを選択インスタンスが選択されていることを確認
configureの成功を確認91
PHP App Serverレイヤーのインスタンス上でStack JSONを確認する以下のコマンドを実行出力結果は以下92[ec2-user@php-app1 ~]$ sudo su[root@php-app1 ec2-user]# opsworks-agent-cli get_jsonOpsWorksインスタンス上で実行(途中省略)"deploy": {"wordpress": {“wp_admin_email”: “(ご自身のEメールアドレス)"}},(以下省略)Stackの構成情報が含まれているJSONデータを確認可能
WordPress初期構成用のChefレシピを作成するGitクライアント用のインスタンスにSSHでログインwp-cliインストール用のレシピファイルを作成するdefault.rbファイルの中身は次頁93$ cd ~/site-cookbooks/$ mkdir -p wp-cli/recipes/$ vi wp-cli/recipes/default.rbGitクライアント上で実行
wp-cliインストール用のレシピdefault.rbファイルの中身上記を直接コピー&ペーストすると一部文字が全角になってしまうため、以下リンクにあるコードをコピー&ペーストするようにしてください。リンク• http://opsworks-bootcamp-jp.s3.amazonaws.com/CLI.txt94wpdir = "/usr/bin/"remote_file "#{wpdir}/wp" dosource "http://opsworks-bootcamp-jp.s3.amazonaws.com/wordpress/wp-cli.phar"owner "root"group "root"mode 00755checksum "80e2e3a229392db6784f3be5b440e3e36a97ab57a94bdcdf7d9713003ca7b6a0"endGitクライアント上で実行
default.rbの中で実行する内容の説明default.rbの中で実行するコマンドの内容は以下※レシピで実行するため、以下は実行する必要はありません。• remote_file "#{wpdir}/wp" do• リモートにあるファイルをwpdirディレクトリ直下にwpファイルとして配置する• source http://opsworks-bootcamp-jp.s3.amazonaws.com/wordpress/wp-cli.phar• リモートのファイルのソースを指定• mode 00755• アクセス権限を755にする95
wp-cliによるWordPress初期設定用のレシピを作成するdeploy.rbファイルを作成するdeploy.rbファイルの中身は次頁deploy.rbの内容は以下からもダウンロード可能• http://opsworks-bootcamp-jp.s3.amazonaws.com/CLI.txt96$ vi ./wp-cli/recipes/deploy.rb
deploy.rbファイルの中身97require "net/http"require "uri"wpdir = "/srv/www/wordpress/current"dbname = node[:deploy][:wordpress][:database][:database]dbuser = node[:deploy][:wordpress][:database][:username]dbpass = node[:deploy][:wordpress][:database][:password]dbhost = node[:deploy][:wordpress][:database][:host]wp_admin_email = node[:deploy][:wordpress][:wp_admin_email]execute "wp configure" docommand "wp core config --dbname=#{dbname} --dbuser=#{dbuser} --dbpass=#{dbpass} --dbhost=#{dbhost}"cwd "#{wpdir}"user "deploy"not_if { File.exists?("#{wpdir}/wp-config.php") }action :runend次頁へ続く
deploy.rbファイルの中身(つづき)98uri = URI.parse("http://169.254.169.254/latest/meta-data/public-hostname")http = Net::HTTP.new(uri.host, uri.port)request = Net::HTTP::Get.new(uri.request_uri)response = http.request(request)public_hostname = response.bodyexecute "db create" docommand "wp db create"cwd "#{wpdir}"user "deploy"action :runignore_failure trueend次頁へ続く
deploy.rbファイルの中身(つづき)99execute "wp deploy" docommand "wp core install --url=#{public_hostname} --title=Test --admin_name=admin --admin_password=admin --admin_email=#{wp_admin_email}"cwd "#{wpdir}"user "deploy"action :runnot_if "sudo -u deploy wp core is-installed --path=#{wpdir}"end
deploy.rbの中で実行する内容の説明dbuser / dbpass / dbname /dbhostをStackのJSONから取得• WordPress AppをStackに追加する時に、data sourceをRDSとして設定、そのユーザー名やパスワード、リモートホスト名を以下のように指定することで取得可能node[:deploy][:wordpress][:database][:username]/srv/www/wordpress/currentにwp-config.phpが存在しない場合は以下を実行• wp core config –dbname=<dbname> --dbuser-<dbuser> --dbpass=<dbpass> --dbhost=<dbhost>上記コマンドのパラメータはOpsWorksのCustom Chef JSONから取得する100
deploy.rbの中で実行する内容の説明(つづき)Public hostnameを取得して、WordPressの初期設定に利用するRDS MySQL上にwp db createコマンドでデータベースを作成101
deploy.rbの中で実行する内容の説明(つづき)以下のコマンドを実行して、指定したディレクトリにwp coreがインストールされているかをチェック。• wp core is-installed –path=<wp directory>未インストールであれば、以下を実行• wp core install --url=<public hostname> --title=Test –admin_name=admin –admin_password=admin –admin_email=<自分のメールアドレス>102
作成したレシピをマスターにpushする作成した2つのレシピをgitでcommitしてマスターにpushするgitのユーザー名、パスワードを入力103$ cd ~/site-cookbooks$ git add .$ git commit –m “create wp-cli recipe”$ git push origin masterUsername for 'https://github.com': xxxxxxxxPassword for ‘https://xxxxxxxxxx@github.com’: xxxxxxxxxxxxxGitクライアント上で実行
wp-cliのdefault.rbとdeploy.rbをGitHubにpushした後の流れ1.Custom Cookbookをアップデート• インスタンスに最新のChefレシピを展開する2.wp-cliのdefaultレシピを実行• レシピでwpコマンドをインストール3.WordPressのアプリケーションをデプロイする4.wp-cliのdeployレシピを実行• wpコマンドにより、WordPressの初期設定を行う5.WordPressの動作確認6.default.rbとdeploy.rbをOpsWorksのライフサイクルイベントに登録する• イベント実行時に自動実行されるようにする104
Custom Cookbookをアップデートする105Update Custom Cookbooksを選択作成したChefレシピをPHP App Serverインスタンスに展開させるために行う処理
update custom cookbooks成功を確認106Repeatを選択して、再度RunCommand画面に移動する
wp-cliのdefault.rbレシピを実行する107wp-cli::defaultと入力(Cookbook名::レシピ名の形式。defaultの場合は「::レシピ名」を省略可能)Execute Recipesを選択
wp-cliのdefaultレシピ実行の成功を確認108
AppをデプロイするためにApps画面に移動109
Add an appを選択110
WordPress用Appを作成する111https://github.com/WordPress/WordPress.gitを入力Gitを選択Name: WordPressType: PHPData source type: RDSDatabase instance: CloudFormationで作成したインスタンスを選択Database name: wordpress (新規にDatabaseを作成する)
WordPress用Appをデプロイする112
WordPress用Appをデプロイする113該当インスタンスにチェックが入っていることを確認advancedをクリック
デプロイ成功を確認114
PHP App Serverレイヤーのインスタンス上でStack JSONを確認する以下のコマンドを実行出力結果は以下115[ec2-user@php-app1 ~]$ sudo su[root@php-app1 ec2-user]# opsworks-agent-cli get_jsonOpsWorksインスタンス上で実行"deploy": {"wordpress": {"deploy_to": "/srv/www/wordpress",(途中省略)"database": {"host": "or18gd1om9fxcgo.cyibkvmwlgp2.ap-northeast-1.rds.amazonaws.com","database": "wordpress","port": 3306,"username": "wpuser","password": "wppassword",RDSへの接続に必要なパラメータを確認。(これらを作成したChefレシピで活用する)
Stack画面に移動する116
Run Commandを選択117
deploy.rbレシピを実行する118wp-cli::deployと入力Execute Recipesを選択
deployレシピが成功したことを確認119
インスタンスの画面に移動する120
インスタンスにWebブラウザからアクセスしてみる121
WordPressサイトの動作を確認する122http://<インスタンスのPublic DNS nameまたはIP>へアクセスする
OpsWorksのライフサイクルイベントによるChefレシピの自動実行123
レイヤーの画面に移動、Recipesを選択124
PHP App ServerのCustom ChefRecipesでeditを選択125
Setupイベントにwp-cli::defaultを、Deployイベントにwp-cli::deployを登録126Deployイベントにwp-cli::deployを入力後、「+」ボタンをクリックSetupイベントにwp-cli::defaultを入力後、「+」ボタンをクリックそれぞれのイベントにChefレシピを登録することで、イベント実行時にレシピが自動で実行される。
(ご参考)SetupイベントにおけるChefレシピの実行順127AWSOpsWorkssetuprecipesYour setuprecipesAWSOpsWorksdeployrecipesYour deployrecipes
もう1つインスタンスを起動して、登録したレシピが正しく動作するか確認するPHP App Serverレイヤーにインスタンスをもう1つ追加、起動インスタンスが問題なく起動して、同様にWordPressのサイトが表示されるかを確認する128
以上で終了です。おつかれさまでした!129
環境の片付け方法OpsWorksで起動したインスタンスを停止・削除• OpsWorksのマネージメントコンソールまたはCLIで実行する必要あり• EC2のマネージメントコンソール等で停止・削除しても、OpsWorksのAuto Healingが有効な場合は、再度新規インスタンスが起動されるためOpsWorksのApp, レイヤー、スタックの順に削除CloudFormationのスタックを削除• Gitクライアント用EC2インスタンス、RDSインスタンスを削除• 手動での削除も可能130
OpsWorksトラブルシューティングカスタムレシピ実行時のログファイル• /var/lib/aws/opsworks/chefにChefのログ• /var/log/aws/opsworksにOpsWorksのログSSHでインスタンスに接続して、agent CLIのrun_commandを実行すると、過去に実行したコマンドを再実行可能。(Cacaheに残っているコマンドのみ)トラブルシューティング時の切り分けに有効• APPENDIX参照
APPENDIX132
OpsWorksのライフサイクルイベントの動作133
CloudFormationでOpsWorksのリソースを自動生成可能134{"AWSTemplateFormatVersion": "2010-09-09","Resources": {"myStack": {"Type": "AWS::OpsWorks::Stack","Properties": {(略)}},"myLayer": {"Type": "AWS::OpsWorks::Layer","DependsOn": "myApp"(略)},"myInstance1": {"Type": "AWS::OpsWorks::Instance","Properties": {"StackId": {"Ref": "myStack"},“LayerIds”: [{ “Ref”: “myLayer” }],"InstanceType": "m1.small"}CloudFormationテンプレート例myStackmyLayermyinstance1
OpsWorksがもたらすものアプリケーションのライフサイクル管理• リソースプロビジョニング• スタック全体の構成管理• アプリケーションのデプロイ• ソフトウェアアップデート• 監視• アクセスコントロール
リソースプロビジョニングスケーリングタイプごとに異なる方式でインスタンス起動可能• 24/7 インスタンス• 手動で起動・終了• 負荷ベースのインスタンス• 時間ベースのインスタンス
リソースプロビジョニングAuto Healing• 起動されたインスタンス上ではagentがOpsWorksへpollingしている。• レイヤーでAuto Healingが有効になっている場合• レイヤーの1つのインスタンスが、およそ3-5分間接続できない場合に、OpsWorksは新規インスタンスを立ち上げるagent agent新規インスタンス・EIP利用時は同じEIPをアタッチ・外付けEBS利用時は同じEBSを同じマウントポイントで利用Volume古いインスタンスElastic IP Elastic IP
構成管理スタックの構成情報の例→(JSON形式)ライフサイクルコマンドが実行されると、そのインスタンスに送られる。下記コマンドでも取得可能{"opsworks": {"layers": {"php-app": {"id": "4a2a56c8-f909-4b39-81f8-556536d20648","instances": {"php-app2": {"elastic_ip": null,"region": "us-west-2","booted_at": "2013-02-26T20:41:10+00:00","ip": "192.112.235.192","aws_instance_id": "i-34037f06","availability_zone": "us-west-2a","instance_type": "c1.medium","private_dns_name": "ip-10-252-0-203.us-west-2.com"private_ip": "10.252.0.203","created_at": "2013-02-26T20:39:39+00:00","status": "online","backends": 8,"public_dns_name": "ec2-192-112-235-192.us-west-2.compute.amazonaws.com"},"php-app1": {...}},"name": "PHP Application Server"},"lb": {$ opsworks-agent-cli get-json
アプリケーションデプロイライフサイクルイベントのデプロイにより実行手動デプロイも可能アプリケーションリポジトリに以下も利用可能• プライベートネットワーク内にあるリポジトリ• SSH key認証が必要なプライベートリポジトリ• 例– GitHub Enterprise• SSH認証でのパスワードは利用不可
ソフトウェアアップデートライフサイクルイベントによるアップデート• Setup / Configure / Deploy個別にコマンドを実行することによるアップデートも可能• Install Dependencies• 全てのパッケージまたはRuby gemsをインストール• Update Dependencies• 全てのパッケージまたはRuby gemsをアップデート• Update Cookbooks• アップデートされたcookbookをそれぞれのインスタンスのキャッシュにデプロイ• Execute Recipes• 指定したレシピを実行
監視CloudWatchメトリクスを利用可能• CPU / Memory / Load / Processesスタック全体レイヤー単体インスタンス単体
アクセスコントロールAWS OpsWorksが必要とする権限をスタック作成時に割り当てるOpsWorksを利用する上で不自由なく使う場合は以下のポリシーを活用{"Version": "2012-10-17","Statement": [ {"Effect": "Allow","Action": [ "ec2:*", "s3:*", "opsworks:*", "iam:PassRole"],"Resource": "*"}]}
OpsWorks Agent CLI利用時の注意事項OpsWorksで起動されたインスタンスにSSHログインして、OpsWorks Agent CLIを実行することが可能OpsWorksで起動されたインスタンス上で、最近実行されたコマンドをキャッシュしている。以下その例上記のように出力されたコマンドを、再度OpsWorks AgentCLIで再度実行が可能• ※インスタンスに対して1度も実行されていないコマンドは、実行不可。その場合はOpsWorks Stack Commandで実行する必要がある。• 主にトラブルシュートやデバッグ等での利用に最適143$ opsworks-agent-cli list_commands2014-04-07T02:55:09 setup2014-04-07T02:58:55 configure2014-04-07T04:38:12 execute_recipesOpsWorksインスタンス上で実行
OpsWorks Agent CLIを使ってCookbooksを再度アップデートOpsWorks Agent CLIでコマンド実行履歴を確認既にCustom Cookbooksをアップデート• インスタンスに最新のChef Cookbooks、レシピをダウンロードさせる• OpsWorksで起動されたインスタンスにSSHログインして実行• アップデートされたChef Cookbooks, レシピは/opt/aws/opsworks/current/site-cookbooks以下に配置される144$ sudo opsworks-agent-cli run_command update_custom_cookbooksOpsWorksインスタンス上で実行$ sudo opsworks-agent-cli list_commands$ sudo opsworks-agent-cli run_command<update_custom_cookbooksを実行したときのtime stamp>または
OpsWorks Agent CLIを使ってChefレシピを実行opsworks-agent-cli list_commandsでレシピ実行された履歴があれば、同様に再度レシピ実行が可能Chefレシピ単体を実行するレシピの指定の仕方は<cookbook名>::<レシピ名>• .rb拡張子は不要• レシピ名がdefaultの場合は省略可能作成したレシピを単体で動作テストする時に使うと良いOpsWorksのライフサイクルイベント内で登録されていなくても、指定したリポジトリにレシピがあれば、Update CustomCookbooksを実行後に、レシピを実行可能145$ sudo opsworks-agent-cli run_command execute_recipes helloOpsWorksインスタンス上で実行または$ sudo opsworks-agent-cli run_command <レシピ実行時のタイムスタンプ>
146

Recommended

PDF
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
PDF
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
PDF
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
PDF
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
PDF
20190522 AWS Black Belt Online Seminar AWS Step Functions
PDF
20190821 AWS Black Belt Online Seminar AWS AppSync
PDF
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
PDF
20200630 AWS Black Belt Online Seminar Amazon Cognito
PDF
20200617 AWS Black Belt Online Seminar Amazon Athena
PDF
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
PDF
AWS Black Belt Online Seminar AWS Direct Connect
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
PDF
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
PPTX
AWSで作る分析基盤
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
PDF
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
PDF
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
PDF
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
PDF
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
PDF
AWS Black Belt Online Seminar 2017 Auto Scaling
PDF
20190806 AWS Black Belt Online Seminar AWS Glue
PDF
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
PDF
20200212 AWS Black Belt Online Seminar AWS Systems Manager
PDF
20200526 AWS Black Belt Online Seminar AWS X-Ray
PDF
20191023 AWS Black Belt Online Seminar Amazon EMR
PDF
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
PDF
Chef社内勉強会(第1回)

More Related Content

PDF
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
PDF
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
PDF
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
PDF
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
PDF
20190522 AWS Black Belt Online Seminar AWS Step Functions
PDF
20190821 AWS Black Belt Online Seminar AWS AppSync
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon Kinesis
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190522 AWS Black Belt Online Seminar AWS Step Functions
20190821 AWS Black Belt Online Seminar AWS AppSync

What's hot

PDF
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
PDF
20200630 AWS Black Belt Online Seminar Amazon Cognito
PDF
20200617 AWS Black Belt Online Seminar Amazon Athena
PDF
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
PDF
AWS Black Belt Online Seminar AWS Direct Connect
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
PDF
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
PPTX
AWSで作る分析基盤
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
PDF
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
PDF
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
PDF
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
PDF
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
PDF
AWS Black Belt Online Seminar 2017 Auto Scaling
PDF
20190806 AWS Black Belt Online Seminar AWS Glue
PDF
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
PDF
20200212 AWS Black Belt Online Seminar AWS Systems Manager
PDF
20200526 AWS Black Belt Online Seminar AWS X-Ray
PDF
20191023 AWS Black Belt Online Seminar Amazon EMR
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200617 AWS Black Belt Online Seminar Amazon Athena
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
AWS Black Belt Online Seminar AWS Direct Connect
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
AWSで作る分析基盤
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
AWS Black Belt Online Seminar 2017 Auto Scaling
20190806 AWS Black Belt Online Seminar AWS Glue
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200526 AWS Black Belt Online Seminar AWS X-Ray
20191023 AWS Black Belt Online Seminar Amazon EMR

Similar to AWS OpsWorksハンズオン

PDF
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
PDF
Chef社内勉強会(第1回)
PDF
JAWSUG初心者向けトラック 【Deploy&Ops】
PDF
DevOpsを実現する為のChef実践テクニック Chef12対応版
PDF
よくわかるAWS OpsWorks: AWS OpsWorksの概要&アップデート紹介
PPTX
Cloudstack user group meeting in osaka
PDF
[AWSマイスターシリーズ] AWS OpsWorks
PDF
AWS OpsWorksのご紹介
PDF
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
PDF
AWS Black Belt Online Seminar 2017 AWS OpsWorks
PDF
OpsWorks aws-cli#11
PDF
Chef(Server)と AWS OpsWorks(tm)の比較
PDF
DevOpsを実現するChef活用テクニック
PDF
opsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadan
PDF
DevOpsを実現する為のChef活用テクニック
PDF
3分でわかる(気になれる) AWS OpsWorks
PDF
Openstack chef-repo
PDF
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
PDF
ChefとOpsWorksで EC2 楽チンクッキング!
PPTX
古い?ダサい?まだまだイケルChef!
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
Chef社内勉強会(第1回)
JAWSUG初心者向けトラック 【Deploy&Ops】
DevOpsを実現する為のChef実践テクニック Chef12対応版
よくわかるAWS OpsWorks: AWS OpsWorksの概要&アップデート紹介
Cloudstack user group meeting in osaka
[AWSマイスターシリーズ] AWS OpsWorks
AWS OpsWorksのご紹介
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
AWS Black Belt Online Seminar 2017 AWS OpsWorks
OpsWorks aws-cli#11
Chef(Server)と AWS OpsWorks(tm)の比較
DevOpsを実現するChef活用テクニック
opsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadan
DevOpsを実現する為のChef活用テクニック
3分でわかる(気になれる) AWS OpsWorks
Openstack chef-repo
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
ChefとOpsWorksで EC2 楽チンクッキング!
古い?ダサい?まだまだイケルChef!

More from Amazon Web Services Japan

PDF
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
PDF
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
PPTX
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
PDF
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
PDF
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
PDF
Infrastructure as Code (IaC) 談義 2022
PDF
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
PDF
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
PDF
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
PDF
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
PDF
Amazon QuickSight の組み込み方法をちょっぴりDD
PDF
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
PDF
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
PDF
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
PDF
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
PDF
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
PDF
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
20220409 AWS BLEA 開発にあたって検討したこと
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
マルチテナント化で知っておきたいデータベースのこと
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Infrastructure as Code (IaC) 談義 2022
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Amazon QuickSight の組み込み方法をちょっぴりDD
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介

AWS OpsWorksハンズオン


[8]ページ先頭

©2009-2025 Movatter.jp