CentOS 7
Sponsored Link

Puppet : 利用方法 [file リソース]
2015/07/22
 
マニフェストで宣言できるリソースタイプのうち、ここでは「file」リソースを例にします。
[1] /home/testfile.txt を オーナー:グループ が root:root, パーミッションが 644, content が以下の内容で維持管理する。
クライアント上で /home/testfile.txt が存在しなければ作成されます。
存在する場合、以下で指定しているオーナー:グループやパーミッションやファイルの内容は維持されます。
たとえクライアント上で指定の値が変更されたとしても、クライアントがサーバーに30分毎に問い合わせるタイミングで指定の内容に戻されます。
[root@dlp ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testfile.txt':
    ensure  => file,
    owner   => 'root',
    group   => 'root',
    mode    => 644,
    content => 'This is the puppet test file.',
}
[2] ファイルの内容を変数で指定する。
[root@dlp ~]#
vi /etc/puppet/manifests/site.pp
$contents = 'This is the test Puppet manifest.
Sample contents
Test contents
'

file { '/home/testfile.txt':
    ensure  => file,
    owner   => 'root',
    group   => 'root',
    mode    => 644,
    content => "$contents",
}
[3] Puppet サーバー上に配置したテンプレートファイルをソースファイルとして指定する。
[root@dlp ~]#
vi /etc/puppet/fileserver.conf
# 最終行に追記:テンプレートファイルを格納するディレクトリを指定

[extra_files]
    path /etc/puppet/files
    allow *

extra_files  ⇒  任意の名前
path         ⇒  ファイルを格納した任意のディレクトリへのパス
allow        ⇒  許可するクライアント
                 上記例では全て許可
                 特定のクライアントのみ許可する場合は 
                「allow 192.168.0.0/24」や「*.srv.world」等と記述

[root@dlp ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testfile.txt':
    ensure => file,
    owner  => 'root',
    group  => 'root',
    mode   => 644,
    source => 'puppet://dlp.srv.world/extra_files/test.txt',
}

[root@dlp ~]#
mkdir /etc/puppet/files

[root@dlp ~]#
echo "Puppet test file" > /etc/puppet/files/test.txt

[4] リンクを維持管理する。
例として /home/testfile.txt のリンクを /home/testfile.link として維持管理する。
[root@dlp ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testfile.link':
    ensure => link,
    target => '/home/testfile.txt',
}
[5] ファイルが存在しないことを維持管理する。もし指定のファイルがあれば削除する。
[root@dlp ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testfile.link': ensure => absent }
[6] サーバー上に配置したディレクトリをソースとして、再帰的に維持管理する。
mode を 644 と指定していますが、ディレクトリについては自動的に「x」が付与されます。
また purge や force を true としていることで、 ソース側に存在しない不要なファイルやサブディレクトリがあった場合は削除されます。
[root@dlp ~]#
vi /etc/puppet/fileserver.conf
# 最終行に追記:テンプレートファイルを格納するディレクトリを指定

[extra_dir]
    path /etc/puppet/dirs
    allow *

[root@dlp ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testdir':
    ensure  => directory,
    recurse => true,
    purge   => true,
    force   => true,
    owner   => 'root',
    group   => 'root',
    mode    => 644,
    source  => 'puppet://dlp.srv.world/extra_dir/testdir',
}

[root@dlp ~]#
mkdir -p /etc/puppet/dirs/testdir

 
Tweet