Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
AWSで構築したのだよ 
「ec2起動時にホスト名を変更したい」
お品書き 
 ユーザのコンソール操作をログに残したい 
 ec2で自分のインスタンスIDが知りたい 
 ec2で自分についているタグを読み取りたい 
 ec2起動時にホスト名を変更したい 
 ec2起動時にクラウドウォッチに追加したい...
ec2起動時にホスト名を 
変更したい(1/3) 
 デフォルトのホスト名を確認する 
$ hostname -a 
localhost.localdomain ip-10-0-0-41 
$ cat /etc/hosts 
127.0.0....
ec2起動時にホスト名を 
変更したい(2/3) 
 ホスト名を変更するためのスクリプトをコーディ 
ングします。ホスト名はタグに書いた名前を使い 
ます。 
①変更対象のインスタンスIDを取得する。 
②タグの名前の取得 
③/etc/ho...
$ vi setHostName.rb 
#!/usr/bin/env ruby 
# encoding: utf-8 
# 1.hostsファイルを書き換える 
# 2.networkファイルを書き換える 
# 3.hostnameを書き換え...
tag_set = get_tag_set(@ec2, @instanceID) 
tag_set.each do |tag| 
p tag[:key] 
if /name/i =~ tag[:key] 
@name = tag[:value]...
作成したスクリプトを実行します。 
# ruby setHostName.rb 
# cat /etc/hosts 
127.0.0.1 localhost localhost.localdomain LogicApp01 
起動時に作成したス...
CloudInit でもできますよ….
Upcoming SlideShare
Loading in …5
×

Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更

AWSでサービスを構築した際のノウハウ集04
ec2インスタンス起動時に自分のホスト名を変更する

  • Login to see the comments

  • Be the first to like this

Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更

  1. 1. AWSで構築したのだよ 「ec2起動時にホスト名を変更したい」
  2. 2. お品書き  ユーザのコンソール操作をログに残したい  ec2で自分のインスタンスIDが知りたい  ec2で自分についているタグを読み取りたい  ec2起動時にホスト名を変更したい  ec2起動時にクラウドウォッチに追加したい  Amazon LinuxのsshをユーザID/PWに変更し たい。  VPNのプライベートネットワークでNTPを使いたい  プライベートネットワークのRDSにssh経由で接続したい  夜間にec2を落としたい  サーバーのシャットダウン時にログを退避したい  プロセス監視、メモリ残、ディスク使用率をCloudwatc hに追加したい  nginxで名前解決を都度行いたい
  3. 3. ec2起動時にホスト名を 変更したい(1/3)  デフォルトのホスト名を確認する $ hostname -a localhost.localdomain ip-10-0-0-41 $ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain ip-10-0-0-41
  4. 4. ec2起動時にホスト名を 変更したい(2/3)  ホスト名を変更するためのスクリプトをコーディ ングします。ホスト名はタグに書いた名前を使い ます。 ①変更対象のインスタンスIDを取得する。 ②タグの名前の取得 ③/etc/hostsと/etc/sysconfig/networkの書き換え ④hostnameコマンドの実行
  5. 5. $ vi setHostName.rb #!/usr/bin/env ruby # encoding: utf-8 # 1.hostsファイルを書き換える # 2.networkファイルを書き換える # 3.hostnameを書き換える require 'rubygems' require 'aws-sdk' def get_tag_set(ec2, instance_id) tag_set = ec2.describe_instances(:instance_ids => [instance_id])[:instance_index][instance_id][:tag_set] return tag_set end AWS.config(YAML.load(File.read("./aws.yml"))) @instanceID = `wget --no-proxy -q -O - http://169.254.169.254/latest/meta-data/instance-id` @ec2 = AWS::EC2.new().client
  6. 6. tag_set = get_tag_set(@ec2, @instanceID) tag_set.each do |tag| p tag[:key] if /name/i =~ tag[:key] @name = tag[:value] if @name.length > 0 `sed -i -e "/^127.0.0.1/d" /etc/hosts` `echo "127.0.0.1 localhost localhost.localdomain #{@name}" >> /etc/hosts` `sed -i -e "/^HOSTNAME/d" /etc/sysconfig/network` `echo "HOSTNAME=#{@name}" >> /etc/sysconfig/network` `hostname #{@name}` end end end
  7. 7. 作成したスクリプトを実行します。 # ruby setHostName.rb # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain LogicApp01 起動時に作成したスクリプトが毎回実行されるように、/etc/rc.d/rc.localに記載 します。 # vi /etc/rc.d/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local /usr/bin/ruby /opt/aws/setHostName.rb
  8. 8. CloudInit でもできますよ….

×