AWS MarketPlaceのCentOS公式イメージをいつものインスタンスっぽくしてPackerで保存
Amazon EC2でCentOSを使いたい場合、CentOSコミュニティがAWS MarketPlaceに公開しているイメージが一応ある。
かなり素の状態で置いてあり、例えば次のような点でAmazon Linuxなどと異なっている。
- ログインユーザがroot
- ついでにランダムパスワード
- Iptables, Selinuxが有効
-
ec2metadata
やaws
コマンドがない (curlで取るのはOK) - cloud-initが入ってない
Packerで調整して保存
詳しくはこちら。
https://github.com/OpsRockin/centos6_ami_from_official
これにより、次のように調整したAMIを作れる。
- - Iptables, Selinux無効
- ログインユーザは
cloud-user
に、sudo対応Please login as the user "cloud-user" rather than the user "root".
-
aws
コマンド標準装備、Roleも対応
PackerのShell-Provisionerはこんな感じ。
#!/usr/bin/env bash
set -ex
# Disable Selinux and Iptables
sed s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config -i
chkconfig iptables off
chkconfig ip6tables off
yum update -y
## Install AWS Tools and Git
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y cloud-init git jq cloud-utils python-pip
pip install awscli
## Remove Password from root
passwd -d root
sed -e '9,$d' /etc/rc.local -i
## Set sudo rule for cloud-user
cat <<EOL > cloud-init
cloud-user ALL = NOPASSWD: ALL
# User rules for cloud-user
cloud-user ALL=(ALL) NOPASSWD:ALL
Defaults:cloud-user !requiretty
EOL
install -o root -g root -m 0440 cloud-init /etc/sudoers.d/cloud-init
rm -f cloud-init
これで作っておいたAMIに対しては、通常のAmazon公式イメージとほぼ同様の扱いが可能になる。
$ ssh [email protected] sudo echo 'hogehoge'
hogehoge
元がAWS MarketPlaceのイメージなので、これを更にPublicにする事はできないけど。
Author And Source
この問題について(AWS MarketPlaceのCentOS公式イメージをいつものインスタンスっぽくしてPackerで保存), 我々は、より多くの情報をここで見つけました https://qiita.com/sawanoboly/items/14787c2e84d84697121b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .