Memo/AmazonWebServices/EC2/mock-ec2-metadata

https://dexlab.net:443/pukiwiki/index.php?Memo/AmazonWebServices/EC2/mock-ec2-metadata
 

mock-ec2-metadata: ec2-metadata用のテスト

EC2では通常 http://169.254.169.254/latest/meta-data/ にアクセスすると、EC2自身の様々な情報を取得できる。
NYTimes/mock-ec2-metadata はVM等でテストする場合のモックに使える。


設定の変更と追加

  • 設定用jsonを変更した場合、mock-ec2-metadataの再起動が必要
    sudo vim /etc/mock-ec2-metadata-config.json
    --
    "hostname": "mock-hostname-test",
    --
    
    # まだ変更されない
    curl -s http://169.254.169.254/latest/meta-data/hostname
    mock-hostname
    
    # 再起動
    sudo service mock-ec2-metadata restart
    
    # 変更された
    curl -s http://169.254.169.254/latest/meta-data/hostname
    mock-hostname-test
  • /latest/meta-data/local-ipv4 を追加する場合
    sudo vim /etc/mock-ec2-metadata-config.json
    --
    ...
        "MetadataValues" : {
            "local-ipv4": "10.1.150.123",
    ...
    --
    sudo service mock-ec2-metadata restart
    
    curl -s http://169.254.169.254/latest/meta-data/local-ipv4
    10.1.150.123

インストール

  • 環境
    • CentOS 7.x
    • mock-ec2-metadata v0.3.1
# 169.254.169.254 をloopbackにaliasとして追加
sudo vim /etc/sysconfig/network-scripts/ifcfg-lo
--
IPADDR2=169.254.169.254
NETMASK2=255.255.255.255
--
sudo service network restart

# CentOS7 の場合firewalldなので停止し、iptablesをインストール
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum install iptables-services

# net.ipv4.ip_forward=1にする
sudo bash -c "echo net.ipv4.ip_forward = 1 > /etc/sysctl.d/ip_forward.conf"
sudo sysctl --system
sysctl net.ipv4.ip_forward


# iptableでルーティングする
sudo iptables -t nat -A OUTPUT -p tcp -d 169.254.169.254/32 --dport 80  -j DNAT --to-destination 169.254.169.254:8111
sudo service iptables save
sudo chkconfig iptables on
# /etc/sysconfig/iptables に保存される

# install
sudo wget -O /usr/local/bin/mock-ec2-metadata https://github.com/NYTimes/mock-ec2-metadata/releases/download/0.3.1/mock-ec2-metadata_0.3.1_linux_amd64
sudo chmod +x /usr/local/bin/mock-ec2-metadata
sudo wget -O /etc/mock-ec2-metadata-config.json https://raw.githubusercontent.com/NYTimes/mock-ec2-metadata/master/mock-ec2-metadata-config.json

# systemd
sudo wget -O /etc/systemd/system/mock-ec2-metadata.service https://raw.githubusercontent.com/NYTimes/mock-ec2-metadata/master/systemd/mock-ec2-metadata.service
sudo systemctl daemon-reload

# start
sudo service mock-ec2-metadata start
# 自動起動
sudo chkconfig mock-ec2-metadata on

# test
curl -s http://169.254.169.254/latest/meta-data/
hostname
instance-id
instance-type

curl -s http://169.254.169.254/latest/meta-data/hostname
mock-hostname

# stop
sudo service mock-ec2-metadata stop

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:37 (9d)