今後ともよろしくお願いします。
2012年1月16日月曜日
2012年1月3日火曜日
Amazon Linuxで使われてるcloud-initをCentOS6で使ってみる
新年あけましておめでとうございます。
年明け最初の更新をこんなに早くするとは自分でも驚きですが、今年もブログをゆるく継続していきたいと思います。
年明け最初の更新をこんなに早くするとは自分でも驚きですが、今年もブログをゆるく継続していきたいと思います。
さて、AWSを使用している方はAmazon Linuxに興味を持った事があると思います。
Redhat系のディストリビューションを使用していた方は操作感も近くてスイッチしやすいのではないでしょうか?
私も何度かAmazon Linuxを使用しましたが、その中でcloud-initってとても便利だなと思いました。
cloud-initはもともとUbuntuに搭載されたクラウド環境でのセットアップツールみたいですが、Amazon Linuxではこの機能が標準で移植されております。
個人的にはChefとかよりもチャラく使えるようなイメージでしょうか。。。
AWSで提供されているUbuntuやAmazon Linuxはcloud-initを使って、指定したSSH公開鍵の設置や、セキュリティアップデートなどが行われているようです。
自前でCentOSなどのAMIを作成した経験がある方はSSHの公開鍵を設置するスクリプトを使った事があると思いますが、Amazon Linuxではcloud-init経由でec2-userに公開鍵を設置しているのですね。
『なるほどー、これはCentOSでも使ってみたいですよねー』というネタです。
Redhat系のディストリビューションを使用していた方は操作感も近くてスイッチしやすいのではないでしょうか?
私も何度かAmazon Linuxを使用しましたが、その中でcloud-initってとても便利だなと思いました。
cloud-initはもともとUbuntuに搭載されたクラウド環境でのセットアップツールみたいですが、Amazon Linuxではこの機能が標準で移植されております。
個人的にはChefとかよりもチャラく使えるようなイメージでしょうか。。。
AWSで提供されているUbuntuやAmazon Linuxはcloud-initを使って、指定したSSH公開鍵の設置や、セキュリティアップデートなどが行われているようです。
自前でCentOSなどのAMIを作成した経験がある方はSSHの公開鍵を設置するスクリプトを使った事があると思いますが、Amazon Linuxではcloud-init経由でec2-userに公開鍵を設置しているのですね。
『なるほどー、これはCentOSでも使ってみたいですよねー』というネタです。
■AmazonLinuxで使用されているcloud-initのsrpmを取得する
Amazon Linuxで以下のようにコマンドを実行すると/usr/src/srpm/debug/以下にsrpmが保存されるので、これをCentOSでビルドします。
Amazon Linuxで以下のようにコマンドを実行すると/usr/src/srpm/debug/以下にsrpmが保存されるので、これをCentOSでビルドします。
# get_reference_source -p cloud-init Requested package: cloud-init Found package from local RPM database: cloud-init-0.5.15-20.amzn1 Corresponding source RPM to found package : cloud-init-0.5.15-20.amzn1.src.rpm Are these parameters correct? Please type 'yes' to continue: yes Source RPM downloaded to: /usr/src/srpm/debug/cloud-init-0.5.15-20.amzn1.src.rpm
■CentOSでcloud-initのrpmを作成する
ビルドに必要なライブラリをインストールします。
epelをyumのリポジトリに追加している方はPyYAMLとlibyamlもyumでインストールが出来ると思います。
一部specファイルを以下のように編集しています。
ビルドに必要なライブラリをインストールします。
epelをyumのリポジトリに追加している方はPyYAMLとlibyamlもyumでインストールが出来ると思います。
# yum -y groupinstall "Development Tools" "Development Libraries" && yum -y update # yum install python-devel python-configobj python-cheetah # cd /usr/local/src/ # wget ftp://ftp.iij.ad.jp/pub/linux/fedora/epel/6/i386/PyYAML-3.09-5.el6.i686.rpm # wget ftp://ftp.iij.ad.jp/pub/linux/fedora/epel/6/i386/libyaml-0.1.3-1.el6.i686.rpm # rpm -ivh libyaml-0.1.3-1.el6.i686.rpm PyYAML-3.09-5.el6.i686.rpm次に事前に転送しておいたcloud-initのsrpmをビルドします。
一部specファイルを以下のように編集しています。
# rpm -ivh --nomd5 cloud-init-0.5.15-20.amzn1.src.rpm # cd /root/rpmbuild/ # grep ^BuildRequire ./SPECS/cloud-init.spec BuildRequires: python-devel-abi # grep ^Require ./SPECS/cloud-init.spec Requires: sudo Requires: rpm Requires: yum Requires: python-configobj Requires: python-cheetah Requires: python-yaml # vi ./cloud-init.spec 21 #BuildRequires: python-devel-abi 22 BuildRequires: python-devel 25 #Requires: python-yaml 26 Requires: PyYAML # grep ^Source ./SPECS/cloud-init.spec Source0: cloud-init-%{version}.tar.gz # cd ./SPECS/ # time rpmbuild -bb --clean ./cloud-init.spec real 0m0.061s user 0m0.043s sys 0m0.017s
■インストール
作成されたcloud-initのrpmをインストールします。
specファイルを見ると分かりますが、インストールするとec2-userやsudoの設定が追加されます。
作成されたcloud-initのrpmをインストールします。
specファイルを見ると分かりますが、インストールするとec2-userやsudoの設定が追加されます。
# rpm -ivh /root/rpmbuild/RPMS/noarch/cloud-init-0.5.15-20.el6.noarch.rpm 準備中... ########################################### [100%] 1:cloud-init ########################################### [100%]
■動作確認
インストールしたインスタンスからAMIを作成し、以下のようなUserDataを指定して起動してみました。
無事にec2-userへの公開鍵登録と 指定したパッケージがインストールされていましたよ:)
インストールしたインスタンスからAMIを作成し、以下のようなUserDataを指定して起動してみました。
無事にec2-userへの公開鍵登録と 指定したパッケージがインストールされていましたよ:)
#cloud-config packages: - httpd - postfix
こんな事するならAmazon Linux使った方が(ryという突っ込みはご勘弁下さい:D
ラベル:
AWS,
CentOS,
cloud-init,
Linux
登録:
投稿 (Atom)