AWS management consoleのEC2 Dashboardから早速EC2インスタンスを一つ作り、これをテンプレートマシンと呼ぶことにします。
このテンプレートマシンに一通りのソフトウェア、設定を手でごりごり入れていきます。
アプリケーションサーバが1台ほしいという時になったら、このテンプレートマシンのAMIをベースに「アプリケーションサーバ」という環境変数的なものを与えてマシンを起動するとアプリケーションサーバとして立ち上がってくるというようにします。
色々調べているとChefを使って構成管理をする記事をよく見かけるので、「自分もやりたい!」と思いつつもすぐ「時間足りないかなぁ」となって、使うのは見送っていました。最近になってまた勉強する時間もできそうなのでChefにトライしたいところです。
インスタンス起動後は以下を進めます。手順詳細はここに書かずに、参考になった記事をリンクさせて頂きます。
yum updateする
/etcをgitで管理する
etckeeperを導入します。
手順参考
dateコマンド打った時に日本時間で表示されるようにする
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ruby環境準備
rbenv、ruby-build、ruby2.1(当時は2.0)を入れる
手順参考
シェルからAWSのコマンドを使えるようにする
このインスタンスのシェル上からAWSのAPIを叩けるようにします。
AWS-CLIパッケージはインストール済みだったので、与えたれたアクセスキー、シークレットアクセスキー等を設定します。
手順参考
$aws configure
AWS Access Key ID [****************]: ***
AWS Secret Access Key [****************]: ***
Default region name [ap-northeast-1]: ap-northeast-1
Default output format [text]: text
すると~/.aws/configが生成されます。
[default]
aws_access_key_id = ***
aws_secret_access_key=***
output = text
region = ap-northeast-1
awsからはじまるコマンドが使えるようになります。
as-、ec2-、rds-から始まるコマンドは昔のもので今はawsに一新されたようです。
AWS SDK for rubyはRuby2.1を入れた後gem installで入れます。
このインスタンスのAMIを定期的に作成できるようにする
任意のインスタンスのAMIを作成するスクリプトを用意します。
AWS manegement consoleからAMI削除、AMI作成をするのが手間だったので、スクリプトにしました。
インスタンスの改造作業の前にスクリプトを実行したり、cronで定時バックアップするようにしておきます。
Ruby環境な会社なので、私も見習ってRuby使っていきます!
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require "aws-sdk"
AWS.config(YAML.load(File.read("config.yml")))
machine_names = [
"template",
]
machine_names.each {|name|
AWS::EC2.new.images.filter("name", name).each{|ami|
p "deregister ami name: #{name}, ami_id: #{ami.id}"
if ami.deregister
p "success"
else
p "fail"
end
}
AWS::EC2.new.instances.tagged("Name").tagged_values(name).each{|ins|
p "create ami name: #{name}, ec2_id: #{ins.id}"
new_ami = ins.create_image(name, {:description => Time.now.to_s, :no_reboot => true})
if new_ami && new_ami.tag("template", :value => name)
p "success"
p "ami.id: #{new_ami.id}"
else
p "fail"
end
}
}
Written with StackEdit.
0 件のコメント:
コメントを投稿