タグ別アーカイブ: Puppet

Puppetのインストール後に自動で認証する方法

| 1件のフィードバック

以前、Puppetのインストール方法について書きましたが、今回はPuppetのクライアント側のサーバーの認証を自動で行う方法を紹介します。
http://www.infoscoop.org/blogjp/2012/03/07/puppet-install/

環境・前提条件

親サーバー

  • OS: CentOS 5.3
  • ホスト名: puppet-server.mydomain.com
  • puppet-serverをインストール済み

子サーバー

  • OS: CentOS 5.3
  • ホスト名: new-client.mydomain.com
  • puppetをインストール済み

*1. /etc/hosts に相手となるサーバーのホスト名を追加しておきます。
*2. 子サーバーのiptablesで、親サーバーに対して 8139 と 8140 ポートを開放し、ping を許可します。

子サーバーの認証

下記手順の “インストール” の次からの手順です。
http://infoscoopjp.wordpress.com/2012/03/07/puppet-install/

自動認証用のファイルの作成

自動認証用のファイルを作成します。

親サーバー

# vi /etc/puppet/autosign.conf

下記を入力して保存します。

*.mydomain.com

以上で、mydomain.comのサブドメインに割り当てたサーバーは自動認証が可能になります。

テストマニフェストの作成

テストマニフェストを用意します。

親サーバー

# vi /etc/puppet/manifests/site.pp

site.pp に、下記のようにマニフェストを記述します。

exec { 'test':
  command => '/bin/touch /root/test'
}

自動認証とテストマニフェストの実行

自動認証を行い、テストマニフェストを実行します。

親サーバー

# puppetmasterd --verbose --no-daemonize

子サーバー

# /usr/sbin/puppetd --server puppet-server.mydomain.com --verbose --no-daemonize

自動で認証が行われ、root 直下に空の test ファイルが作成されます。

まとめ

<

p>Puppetのクライアント側のサーバーの認証を自動で行う方法について書きました。
サーバーを増築する際の自動セットアップに使うと便利だと思います。

公式マニュアルはこちら。
http://docs.puppetlabs.com/guides/configuring.html#autosignconf

Puppetのインストールからpuppetrunの実行まで

| 2件の返信

システム管理ツールのPuppetのインストール手順と、puppetrunというコマンドの実行について書きます。

下図のように、一台の親サーバーから複数の子サーバーに処理命令を出す構成を想定しています。

環境

今回は、以下の親サーバーと子サーバーにインストールを行います。
Puppetのバージョンは2012年3月7日時点で、2.7.9です

親サーバー

  • OS: CentOS 5.3
  • ホスト名: puppet-server.mydomain.com

子サーバー

  • OS: CentOS 5.3
  • ホスト名: puppet-client.mydomain.com

*1. /etc/hosts に相手となるサーバーのホスト名を追加しておきます。
*2. 子サーバーのiptablesで、親サーバーに対して 8139 と 8140 ポートを開放し、ping を許可します。

インストール

リポジトリの追加

リポジトリを追加します。

親サーバー・子サーバー両方で行います。

# vi /etc/yum.repos.d/dag.repo

dag.repoを作成して、下記を記述します。

[dag]
name=DAG RPM Repository
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://ftp.riken.go.jp/pub/Linux/dag/RPM-GPG-KEY.dag.txt

インストール

親サーバー

# yum install puppet-server

子サーバー

# yum install puppet

子サーバーの認証

親サーバー

# puppetmasterd --verbose --no-daemonize

子サーバー

# /usr/sbin/puppetd --server puppet-server.mydomain.com --verbose --no-daemonize

Ctrl + Cで起動中のpuppetdを終了。

親サーバー

Ctrl + Cで起動中のpuppetmasterdを終了。

# puppetca --list

puppet-server.mydomain.com と表示されるはず。

# puppetca --sign puppet-server.mydomain.com

テスト

親サーバー

# vi /etc/puppet/manifest/site.pp

site.pp に、下記のようにマニフェスト(実行する処理)を記述します。

exec { 'test':
  command => '/bin/touch /root/test'
}
# puppetmasterd --verbose --no-daemonize

子サーバー

# /usr/sbin/puppetd --server puppet-server.mydomain.com --verbose

root 直下に空の test ファイルが作成されます。

puppetrunの設定

Puppetのインストールが終わりました。現状では、子サーバーが親サーバーに問い合わせて、処理命令を取得してから実行する、という流れです。
このままだと子サーバーが複数ある場合に手間がかかります。そこで、親サーバー側から子サーバーに対して処理命令を送ることができる puppetrun というコマンドの設定をします。

親サーバーからのアクセスを許可する

子サーバー

# vi /etc/puppet/auth.conf

auth.conf を開いて、下から2行目の “path /” の上に以下を追加します。

path /run
method save
allow puppet-server.mydomain.com

テスト

子サーバー

puppet を起動して待機状態にします。

# /usr/sbin/puppetd --server puppet-server.mydomain.com --listen --no-client --verbose --no-daemonize

親サーバー

puppetmaster を起動します。

# /etc/init.d/puppetmaster start

puppetrun を実行します。

# /usr/bin/puppetrun --host puppet-client.mydomain.com

*複数の子サーバーを指定する場合は、 –host client1 –host client2 ・・・ というようにコマンドのオプションを追加します。

子サーバー

test ファイルの最終更新時刻が更新されていることが確認できます。

まとめ

Puppetのインストール方法とpuppetrunを実行するための設定について書きました。
site.ppにマニフェストを記述することで、様々な処理命令を子サーバーに送ることができます。