インフラエンジニアはOSインストールにこだわるべし:ゼロから始める「インフラエンジニア養成所」(2)(2/2 ページ)
Webがインフラとなりつつあり、クラウドコンピューティングが普及し始めている現在、「ちゃんと仕事のできるインフラエンジニア」は圧倒的に不足している。インフラを基礎から学び直し、市場価値のある優れたインフラエンジニアを目指そう。
「道具を選ばない」という能力の重要性
インストールの方法は、CD/DVDからインストールする、ネットワークからインストールする、GUIでインストールする、CUI(text)でインストールするなど、さまざまな選択肢があります。
通常、Linuxなどのサーバはネット越しで管理することがほとんどでしょうが、OSインストールのときはコンソール(モニタやキーボード)で接続する良い機会でもあります。
以上のように、インストール時のさまざまな選択肢を知りつくして、どんなインストール方法でも自由にできるようになる、というのが、OSのインストールにこだわってほしいという理由の1つです。
例えば、モニタの種類によっては、GUIの画面がうまく表示できないことがあります。そういうときにインストールができなくなる人と、CUIに切り替えてインストールができる人とでは、どちらがより「できるインフラエンジニア」なのか、いうまでもありません。
インフラエンジニアには、「道具を選ばない」という能力が必要です。プログラマの場合は、いかに自分の環境を整備して作業の効率を上げるか、という点が重要ですが、インフラエンジニアの場合、いつも自分のやりやすい環境で作業できるとは限らないからです。キーボードで日本語配列も英語配列も自由に使えるとか、マウスがないときでもキーボードショートカットで最低限のことができるとか、(最近はほとんどありませんが)フルスクリーンエディタが使えなければラインエディタで作業できるとか、環境に左右されず作業ができるというのが、「できるインフラエンジニア」に必要な資質です。
インストールの“後”にもこだわるべし
OSのインストール時の選択は、インストールされたOSのどこかに、後からでも変更できるような形で残ります。これはLinuxやUNIX系のOSの特徴です。OSを構成する設定や起動するための仕組みなどは、すべてOSのどこかに、見て、編集ができる形で存在します。インストール時の選択のほとんどは、/etc以下に置かれることでしょう。これは非常に重要なことです。LinuxやUNIXは原則、すべてが目に見えるのです。どこかで謎の処理が行われてOSが起動するのではなく、どこかに必ずその理由となるものがあり、そしてそれは必ず確認できて、変更できる、という認識を持つことは重要です。
「どういうインストールをすると、どう変わるのかを知る」ということは、「OSの設定などを自由に操れる」ことにつながります。「OSの設定への反映を考えて、インストールの選択ができる」ようにもなります。もちろん、OSのインストール時の選択ですべてを決めることはできません。ほとんどの設定作業は、OS起動後に行います。OSのインストール画面での選択肢は、そのOSの設定に必要な数多ある作業のうち、「必要最低限の部分」をインストーラという道具を使って行っているにすぎない、ということを理解しましょう。
OSのインストール後の各種初期設定作業も、非常に重要な作業です。インストール後、やりたいことのために最低限必要な作業だけをする(例えばWebサーバを作りたい場合、Apacheだけインストールする)ようでは、「できるインフラエンジニア」とはいえません。OSのインストールは、インストーラというガイドがあるので分かりやすいですが、インストール後の初期設定は、山のようにやること(やるべきこと)があるため、インフラエンジニアとしての差が出やすいといえます。
まずはサービスの起動設定です。
パッケージの選択にもよりますが、Linuxはデフォルトだと大体、不要なサービスがたくさん起動しています(Linuxに限りませんが)。「デスクトップ用途も想定しているから」「デフォルトで少ないところに足していくよりは多いものから削る方が簡単」という理由があるのだと思いますが、サーバ用途では、そのほとんどが不要です。
「別に、起動していても邪魔じゃない」というようでは、「できるインフラエンジニア」にはなれません。筆者の知る限り、ほぼ例外なく、「できるインフラエンジニア」はOS起動時のpsの結果や、netstat -naのLISTENの数を極力、減らそうとします。
インストール直後に起動しているサービス群は、何らかの手段(chkconfigなど)を利用して、OS起動時に必要なもの以外、起動しないようにします。最低限でいえば、取りあえずsshdが動く環境をつくればよいでしょう。
CentOSの場合、OS起動時のサービスの起動設定は/etc/inittab以下と/etc/rc.d以下で制御されています。upstartを使うFedoraなどの場合は、/etc/event.d以下と/etc/rc.d以下で制御されています。このあたりを見れば、OSがどのような手順でサービスの起動を制御しているかが「すべて」分かります。また、/etc/rc.d以下のランレベルごとの起動スクリプトの実体は、/etc/init.d以下にまとめられています。つまり、/etc/init.d以下を見れば、起動するサービスについて把握できるということになります。とはいえ、/etc/init.d以下には膨大な数のスクリプトがありますし、名称だけでは何をやっているか分からないものもあります。そこで、init.d以下のスクリプトを個別に見て、必要か必要でないかを判断していきます。
コンソールで接続しているなら、試しにすべて一旦、無効にしてしまう(chkconfigで--delしたりoffしたりする)のも面白いかもしれません。取りあえずsshdを動かすだけなら、networkとsshdだけを有効にしておけば良いでしょう。もし、それよりも前にX(GUI)が起動している場合は、まずそれを停止する必要があります。インフラエンジニアであれば、サーバに使用する場合、ランレベルは3にしておきましょう。決してランレベルを5にして運用してはいけません。ランレベルを変更する方法はディストリビューションにもよりますが、CentOSであればtelinitコマンドを使用するか、/etc/inittabを編集することで変更できます。
こうして必要最小限なサービスだけ起動したら、あとは状況に応じて必要なサービスを起動していけばよいでしょう。Syslogd(rsyslog)やcrond、ntpdなどは起動することもあると思います。筆者はsshdやntpdもdaemontoolsを使ってrespawn(終了したら再起動)する環境下で動かすため、/etc/init.d以下で使用するものはほとんどありませんが、このあたりになると好みにもよると思います。
OSのインストールが自由自在になり、インストール後のサービスについてその種類と役割を把握して、必要なものだけを起動できるようになれば、そのサーバを「取りあえず使える」状態にはできます。とはいえ、ここまででも、かなりの知識と経験が必要です。「できるインフラエンジニア」として働くためには、このステップは非常に重要です。
今回はLinux管理のうち、OSのインストールとサービスの起動部分について、tech campのトレーニングの内容を抜粋して紹介しました。
次回も引き続きLinux管理について、カリキュラムの内容に沿って解説していきたいと思います。
筆者紹介
山崎徳之(やまざきのりゆき)
アスキー、So-net、オン・ザ・エッヂ(現ライブドア)などでISP、データセンターにおいて、一貫してインフラエンジニアとして設計、構築、運用に携わる。2004年、ベイエリア(シリコンバレー)にてRedSIPを創業。2006年、ゼロスタートコミュニケーションズを創業、代表取締役に就任。
Copyright © ITmedia, Inc. All Rights Reserved.