8

Click here to load reader

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

AWS で構築したのだよ「ec2起動時にホスト名を変更したい」

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

ユーザのコンソール操作をログに残したい ec2で自分のインスタンスIDが知りたい ec2で自分についているタグを読み取りたい ec2起動時にホスト名を変更したい ec2起動時にクラウドウォッチに追加したい Amazon LinuxのsshをユーザID/PWに変更したい。 VPNのプライベートネットワークでNTPを使いたい プライベートネットワークのRDSにssh経由で接続したい 夜間にec2を落としたい サーバーのシャットダウン時にログを退避したい プロセス監視、メモリ残、ディスク使用率をCloudwatchに追

加したい nginxで名前解決を都度行いたい

お品書き

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

デフォルトのホスト名を確認する$ hostname -a

localhost.localdomain ip-10-0-0-41$ cat /etc/hosts

127.0.0.1 localhost localhost.localdomain ip-10-0-0-41

ec2起動時にホスト名を変更したい (1/3)

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

ホスト名を変更するためのスクリプトをコーディングします。ホスト名はタグに書いた名前を使います。

① 変更対象のインスタンス ID を取得する。② タグの名前の取得③/etc/hosts と /etc/sysconfig/network の書き換え④hostname コマンドの実行

ec2起動時にホスト名を変更したい (2/3)

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

$ 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_setend

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

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

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 endend

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

作成したスクリプトを実行します。

# 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

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

CloudInit  でもできますよ… .