# はじめに
Mackerel🐟 を触っていて・・・Blogの更新が遅れてしまったまるちゃん です。
こちらのストーリーでは、実際に Apache を使って解説しています。
また、説明ではなく・・・実際に描いてみる事が一番理解しやすいと僕は思っています。
# ストーリー
# Apache を使ったコード解説
# 内容としては
- 基本的なコードの実行方法
- Apache パッケージのインストール
packageリソースタイプの使用
- 設定ファイルの置き換え
fileリソースタイプの使用
- Apacheを起動/自動起動を有効に設定
serviceリソースタイプの使用
1: package,2: file,3: service の3つのResources Typeを使ってマニフェスト(manifest)を記載していきます。
# 事前準備
Listen 8081 に変更されているだけのexampleコードです。
# cd ~
# mkdir puppet_work src
# wget -P src/ https://gist.githubusercontent.com/maruchan76/4e391ca1a8e076a2f99913c509ea9c6f/raw/09978bdcad9e394c9f172528e8eb644f3a889703/Apache_Default.conf
# cd puppet_work
# vim apache_install.pp
このストーリーで使うコードの例です。
- ファイル名 : apache_install.pp
# 基本的なコードの実行方法編
package {'httpd':
ensure => installed,
}
# 設定ファイルの置き換え編
file {'/etc/httpd/conf/httpd.conf':
owner => 'root',
group => 'root',
mode => '644',
source => '/root/src/Apache_Default.conf',
require => Package['httpd'],
}
# Apacheを起動/自動起動を有効に設定編
service {'httpd':
ensure => running,
enable => true,
hasrestart => true,
subscribe => [
Package['httpd'],
File['/etc/httpd/conf/httpd.conf'],
],
}
# 基本的なコードの実行方法
- ドライランによるマニフェストの実行
最後に
--noopを付けると実行をしてくれますが、実際にはシステムに反映はされません。
# puppet apply apache_install.pp --noop
- マニフェストの実行
# puppet apply apache_install.pp
# Apache パッケージのインストール
コード部分
package {'httpd':
ensure => installed,
}
解説
package { 'httpd': ~ }- インストールをするパッケージ名を指定
ensure => installed,- 状態を指定
installed/present: インストールabsent: アンインストール
- 状態を指定
# 設定ファイルの書き換え
コード部分
file {'/etc/httpd/conf/httpd.conf':
owner => 'root',
group => 'root',
mode => '644',
source => '/root/src/Apache_Default.conf',
require => Package['httpd'],
}
解説
file {'/etc/httpd/conf/httpd.conf': ~ }- 書き換え先ファイルへのパスを指定
owner,group,mode- chown,chmod
source => '/root/src/Apache_Default.conf',- フルパスでソースとなるファイルへのパスを指定
require => Package['httpd'],- 依存関係の指定
- 指定したリソースが適用されたあと、自身のリソースを実行
# Apacheを起動/自動起動を有効に設定編
コード部分
service {'httpd':
ensure => running,
enable => true,
hasrestart => true,
subscribe => [
Package['httpd'],
File['/etc/httpd/conf/httpd.conf'],
],
}
解説
service {'httpd': ~ }- サービス名を指定
ensure => running,running/true: サービスを起動stopped/false: サービスを停止
enable => true,true: 自動起動するfalse: 自動起動しない
hasrestart => true,- subscribe で指定したリソースによる動作を指定
true: 再起動を可能false: 再起動しない
subscribe => [ ~ ]- 指定したリソースに変更点が入った場合は、自身を再起動
File['/etc/httpd/conf/httpd.conf'],- どこのファイルをトリガーにするかを指定
# おまけ Nginx のインストール
- 準備
# cd puppet_work
# vim nginx_install.pp
- ファイル名 : nginx_install.pp
$template_nginx = @(END)
server {
listen 8085;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
END
yumrepo { 'nginx':
descr => 'Hello Nginx yum repository',
baseurl => 'http://nginx.org/packages/centos/7/$basearch/',
enabled => '1',
gpgcheck => '0',
}
package { 'nginx':
ensure => installed,
require => Yumrepo['nginx'],
}
file {'/etc/nginx/conf.d/default.conf':
ensure => present,
owner => 'root',
group => 'root',
mode => '644',
# source => '/root/src/nginx_Default.conf',
content => inline_template($template_nginx),
require => Package['nginx'],
}
service {'nginx':
ensure => running,
enable => true,
hasrestart => true,
subscribe => [
Package['nginx'],
File['/etc/nginx/conf.d/default.conf'],
],
}
- 実行
# puppet apply nginx_install.pp