読者です 読者をやめる 読者になる 読者になる

Goldstine研究所

mosuke5's tech blog

Packerやる前にKickstartはじめよう

Linux kickstart virtualbox

1.はじめに

開発環境はVirualboxを使ったVagrantを利用しているが、
本番環境はAWSだったりKVMだったり違う仮想化機構で動作しているなんてことよくあると思います。
そういう環境下でどのように開発環境と本番環境の差分をなくしていますか?

わたしの場合、基本的にAnsibleを使ってプロビジョニングをしていますが、
そのプロビジョニング前のベースが異なってしまって困ることがよくあります。
一般に公開されているVagrantBox使ったら余計な設定が入っていたとか、すでにパッケージが入っていたとか…

そんな問題を解決しようとPackerを使おう!って考えました。
ですが、Packerも当たり前だけど魔法ではなく、Kickstartなどの自動インストールが前提なので、
Packerをやる前にKickstartを学習せよ、、、ということに気づきました。

ということでKickstartをはじめたよってことです。

2.kickstartってなに

kickstartはOSのインストールを自動化する仕組みです。
anaconda社が提供するインストールの仕組みでRedhat系のOSが採用しているものです。
ですのでUbuntuだとPreseedっていう別の仕組みだそうです。(詳しくありませんっ)

で、Kickstartでなにができるかというと...

OSのインストールをしたことがある方ならわかるかと思いますが、
普通にDVDなどからインストールすると、

  • 言語はなににしますかー?
  • ホスト名なににしますかー?
  • パッケージはなにをいれますかー?

とか、聞かれて選択していく必要があります。 この作業を自動化できるのがkickstartです。

URLのようなもの。 kajuhome.com

(おまけ)Ansible, Chef, Puppetとの違い?

kickstartにはプロビジョニング機能もついているため、
AnsibleとかChefとかPuppetとの違いは?住み分けは?と思うかもしれません。
明確に、住み分けが決まっているわけではありませんが、 個人的にはAnsibleやChefを実行する前の最低限の設定をkickstartにやらせようと思っています。
(一般的かとは思いますが…?)

Lee ThompsonのProvisioning Toolchainを参考にKiskstarのやる範囲をまとめると。 f:id:mosuke5:20150731223953j:plain

en.oreilly.com

3.Hello Kickstart!!

Virtualboxを使ってKickstartを試しました。

3-1.用意したもの

  • Virtualbox
    • 自分の環境はMacで、バージョンは5.0
  • OSのisoファイル
  • kickstartファイル
    • ネットワーク上においてhttpでアクセスできるようにしておきました

利用したkickstartファイル。自分の学習のためコメントを多く残しました。

# アップグレードするかインストールするか
install

# インストールタイプの設定
# CD-ROM経由かネットワーク経由かとか
cdrom

# 言語設定
lang ja_JP.UTF-8

# キーボード設定
keyboard jp106

# ネットワーク設定
# /etc/sysconfig/network-scripts/ifcfg-xxxx 部分
network --onboot yes --device eth0 --bootproto dhcp --noipv6

# rootのパスワード
# xxxxxx部分はopensslコマンドで作成するといい
# $openssl passwd -1
rootpw --iscrypted xxxxxxxxxxxxxxxxxxxxxxxxxxx

# iptablesの設定
# プロビジョニングで設定するのでここでは無効にしておく
firewall --disabled

# 認証オプション
authconfig --enableshadow --passalgo=sha512

# SELinuxの設定
# こちらも詳細はプロビジョニングで設定するので無効にしておく
selinux --disabled

# タイムゾーン
timezone --utc Asia/Tokyo

# ブートローダのインストール方法
bootloader --location=mbr --driveorder=sda --append="nomodeset crashkernel=auto rhgb quiet"

# 設定後にリブート
reboot

# パーティション設定
clearpart --linux --drives=sda
autopart

# インストールパッケージ選択
%packages --nobase
@core

%end

参考になったもの

Redhat社のインストールガイドがよくまとまっていた。
特にkickstartファイルについては下記あたりが役立ちます。

3-2.kickstartファイルの使い方

しかし、OSインストール前なのにどうやってファイルを使うのか…?
はじめ戸惑いました…

実は以下の方法で利用できます。

OSのisoファイルで起動するとこの画面がでるやろ。 f:id:mosuke5:20150802125544p:plain

そして、ここでTabをおすと、なにか入力できるが画面が出てきて。
そこに、kickstartファイルのパスを入力してやる。 f:id:mosuke5:20150802125630p:plain

これでKickstart完了や。

4.最後に

Kickstart入門したし、次はPackerをやりたいと思います。
が、ふと思ったのが、自分の用途だとPackerではなくKickstartで十分かもなーとか思ったり思わなかったり…