Table of Contents
はじめに
Mackerel🐟 を触っていて・・・Blogの更新が遅れてしまったまるちゃん です。
こちらのストーリーでは、実際に Apache を使って解説しています。
また、説明ではなく・・・実際に描いてみる事が一番理解しやすいと僕は思っています。
Apache を使ったコード解説
内容としては
- 基本的なコードの実行方法
- Apache パッケージのインストール
package
リソースタイプの使用
- 設定ファイルの置き換え
file
リソースタイプの使用
- Apacheを起動/自動起動を有効に設定
service
リソースタイプの使用
1: package
,2: file
,3: service
の3つのResources Typeを使ってマニフェスト(manifest)を記載していきます。
事前準備
Listen 8081
に変更されているだけのexampleコードです。
1 2 3 4 5 |
# 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 基本的なコードの実行方法編 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
を付けると実行をしてくれますが、実際にはシステムに反映はされません。
1 |
# puppet apply apache_install.pp --noop |
1 |
# puppet apply apache_install.pp |
Apache パッケージのインストール
コード部分
1 2 3 |
package {'httpd': ensure => installed, } |
解説
package { 'httpd': ~ }
- インストールをするパッケージ名を指定
ensure => installed,
- 状態を指定
installed/present
: インストールabsent
: アンインストール
- 状態を指定
設定ファイルの書き換え
1 2 3 4 5 6 7 |
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を起動/自動起動を有効に設定編
コード部分
1 2 3 4 5 6 7 8 9 |
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 のインストール
準備
1 2 |
# cd puppet_work # vim nginx_install.pp |
ファイル名 : nginx_install.pp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
$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'], ], } |
1 |
# puppet apply nginx_install.pp |