Help us understand the problem. What is going on with this article?

packerでhvmでもresize2fsをできるようにしてrebootを回避する

More than 5 years have passed since last update.

packerでhvmでもresize2fsをできるようにしてrebootを回避するというのをやってみました。

おなじことがcloud-initを用いてもできるような気がしています。
http://dev.classmethod.jp/cloud/centos-6-x86_64-with-updates-hvm-cloud-init/
ただしpackerつかってるのでそっちでやったほうがラクというか。
何も設定せずにcloud-initいれただけのamiつくったらログインできなかったですorz
設定ファイルに書いた内容と具体的に裏で何してくれちゃうのかちゃんと理解できないとやりたくないけど調べるのが手間だったので。
軟弱ものですみません。

・事の発端
CentOS6.5のオレ俺AMIをもとにhvmのインスタンス作ったところ、
chefレシピで流して自動でresize2fsがrootボリュームに対して実施されたはずが
サイズ変わらず。
10から50GBになるはずだったけど10GBのままになっていた

・とりあえずぐぐる
以下URL先で同様の現象と対策を知る
http://hack.aipo.com/archives/6940/
fdiskで拡張するほかにこんなやり方もあったんだーと目からうろこ。
でもreboot必須とか詰んだー!と思いました。(手間と自動化的に)

・問題提起というか相談してみた
(ぎじゅつ的に)とんがり系のおかたに、
パーティションテーブルの問題なら以下URLのようなのをpackerに仕込んだらどうか
 と提案いただいたというか教えていただきました
http://dev.classmethod.jp/etc/centos-on-ec2-disksize-change/

・実際やってみたら成功した

packerに仕込んでるシェルスクリプトに以下を追加

+# growroot等をepelからインストール
+yum -y --enablerepo=epel install dracut-modules-growroot cloud-utils
+
+# rootパーティションテーブルをリサイズ
+dracut --force --add growroot /boot/initramfs-$(uname -r).img

で、packerでAMIをビルド、
そのAMIから作成したインスタンスにchefレシピを流してみると、
dfしてみたところディスクが拡張されてました。
rebootしなくて済んだ!!わーい!
めでたしめでたし。

・packerで俺オレAMIをビルドする方法について
インストールはhttp://www.packer.io/intro/getting-started/setup.htmlで確認できます。
テンプレートは以下のような感じ(vpcつかってるとvpc_idも必要です。今時はvpcつかわないのあんまりないかも。)

{
  "variables": {
    "aws_access_key": "AKI**********",
    "aws_secret_key": "Pca4**********",
    "aws_source_ami": "ami-54**********",
    "aws_region_name": "ap-so**********",
    "aws_instance_type": "m3.medium",
    "aws_vpc_id": "vpc-0a**********",
    "aws_subnet_id": "subnet-0**********",
    "aws_create_date": ""
  },
  "builders": [{
    "type": "amazon-ebs",
    "access_key": "{{user `aws_access_key`}}",
    "secret_key": "{{user `aws_secret_key`}}",
    "region": "{{user `aws_region_name`}}",
    "source_ami": "{{user `aws_source_ami`}}",
    "instance_type": "{{user `aws_instance_type`}}",
    "ssh_username": "root",
    "ssh_timeout": "10m",
    "subnet_id": "{{user `aws_subnet_id`}}",
    "vpc_id": "{{user `aws_vpc_id`}}",
    "associate_public_ip_address": true,
    "ami_name": "AMI_standard_{{user `aws_create_date`}}",
    "tags": {
      "Name": "AMI_standard_{{user `aws_create_date`}}"
    }
  }],
  "provisioners": [{
    "type": "shell",
    "execute_command": "sh {{ .Path }} {{user `aws_region_name`}}",
    "script": "ami-deploy.sh"
  }]
}

※provisionersに実行するスクリプトについて指定します
こちらのページにも解説が↓
http://www.ryuzee.com/contents/blog/6697
 スクリプトには自作AMI作るときとかにやるような基本的なベースの設定を仕込んどくとよいです。
 cloud-initで仕込むっぽい内容というかchefながす手前のセッティングなど。
 たとえば、
  一般的なリポジトリや全部に絶対入れるやつ入れとくとか、sshまわりや最小限のユーザや自動起動設定などなど
※そもそもテンプレートで指定するAMIはhvmのが要ります。つくりかた⇒http://devlab.isao.co.jp/hvm_instance/

ビルドコマンドは以下のように実行します。
(標準出力に実行状況が色々出るのでバックグラウンドに渡さないほうがいいでしょう)

CREATE_DATE=`date +'%Y%m%d'`
packer build -var aws_create_date=${CREATE_DATE} templatefile.json

※20~30分くらいかかる感じでした
windowsからも実行できるらしいけど、linuxでいけるlinuxのほうが得意っぽい処理をよりによって私がwinでやると詰みそう。心理的な障壁が高めでやる気がおきない。

とりあえず個人的にやりやすい方法で目的が達せられたのでこんなところで。
cloud-initもそのうち調べてやってみたいとは思ってます。脳内積みタスク優先順位低(強制的な機会がないとわすれそう)。

smallpalace
プログラミングはしょしんしゃです。サーバインフラはだいたい10年ちょっと。 閲覧ありがとうございます:-)
http://smallpalace.hatenablog.com/
Colorkrew
東京・秋葉原にあるIT企業、株式会社Colorkrew。 ”世界のシゴトをたのしくするビジョナリーカンパニー”をビジョンに掲げています。 管理職0(ゼロ)、階層0(ナシ)、 チーム力∞(無限大)の組織運営、バリフラットモデルを策定・導入。OpenWork(旧Vorkers)が選ぶ自由主義で個性を活かす企業、性格のいい会社に上位ランクイン!
https://www.colorkrew.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした