はじめまして。株式会社 paperboy&co. の宮下と申します。
この連載では、
システム管理とは
システム管理と一口に言っても、
- ハードウェアの設置
- ネットワークへの接続
- OSのインストール/設定
- ネットワークの設定
- OSへの最新パッチ適用
- ソフトウェアのインストール/設定
- OS/ソフトウェアのアップデート
- OS/ソフトウェの設定変更
細かく言えば、
システム自動管理ツールの必要性
それでは、
- システム管理に費やす時間
- 単一サーバでも手作業では時間がかかる
- ましてや数十台、
数百台ともなると… - タスク間の待ち時間
- 待ち時間中に並行して別の作業も可能だが、
作業効率は格段に落ち、 ミスも発生しやすくなる
- 実際の設定と
「あるべき状態」 との乖離 - 作業漏れ
- 人為的なミス
- 作業者のスキルのばらつき
- 手順書の更新忘れ
- 上記問題に起因するトラブルの顕在化
システム管理を自動化することによって、
もちろん、
- 使い捨てスクリプトの量産を防ぐことによる手間の軽減
- 管理タスクを誰もが同じ形で定義でき、
管理品質を均一化できる - 管理タスクを誰もが見える形で定義でき、
変更履歴の追跡や監査が可能になる - 商用製品であれば組み込みの機能により実現
- オープンソースなツールであればSubversionのようなSCM(Software Configuration Management System) 等と連携することにより実現
オープンソースなシステム自動管理ツールPuppet
システム自動管理ツールには、
![Puppet開発元のウェブサイト Puppet開発元のウェブサイト](/assets/images/admin/serial/01/puppet/0001/thumb/TH800_site.jpg)
Puppetの特徴としては以下のものが挙げられます。
- GPLに基づいたオープンソースであり、
Rubyでできている - 独自の宣言型言語によりシステムを管理
- クライアント/サーバ型アーキテクチャ
- 抽象化レイヤー
- 依存関係の処理
- LDAPサポート
- MLやIRCといったコミュニティの活動や、
開発が活発
特に重要ないくつかの項目について、
独自の宣言型言語によりシステムを管理
Puppetでは、
file { '/etc/hosts':
owner => 'root',
group => 'root',
mode => 644,
}
上の例では、
この独自言語によってシステムのあるべき状態が記述されたファイルを
クライアント/サーバ型アーキテクチャ
Puppetはクライアント/サーバ型アーキテクチャとなっており、
Puppetクライアント
また、
![Puppet のクライアント/サーバ型アーキテクチャ Puppet のクライアント/サーバ型アーキテクチャ](/assets/images/admin/serial/01/puppet/0001/thumb/TH800_puppet_cs.jpg)
抽象化レイヤー
Puppetには抽象化レイヤーと呼ばれる、
抽象化レイヤーで吸収することができる差異の例としては、
- Solaris / Linux / BSD
- yum / apt / ports
- adduser / useradd
- /etc/
passwd / NetInfo
たとえば、
user { 'miyashita':
name => 'miyashita',
password => 'password',
managehome => true,
groups => 'paperboy',
}
依存関係の処理
Puppetでは、
class ssh {
file { '/etc/ssh':
source => puppet://server/module/ssh,
recurse => true,
notify => Service[ssh]
},
service { 'ssh':
name => sshd,
ensure => running,
},
}
この例では、
以上がPuppetの概要です。Puppetがどんなツールなのか、
次回は、