Ubuntu 22.04
Sponsored Link

Puppet : 利用方法 [file リソース]2023/10/12

 

マニフェストで宣言できるリソースタイプのうち、[file] リソースを例にします。

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

file { '/home/testfile2.txt':
  ensure  => file,
  owner   => 'root',
  group   => 'root',
  mode    => '0644',
  content => "$contents",
}
[3] Puppet サーバー上に配置したテンプレートファイルをソースファイルとして指定する。
root@dlp:~#
vi /etc/puppetlabs/puppet/fileserver.conf
# 新規作成

# 任意の名称
[extra_files]
  # ファイルを格納する任意のディレクトリのパス
  path /etc/puppetlabs/puppet/files
  # アクセス許可するクライアント
  # 下例は全て許可
  # アクセス制限する場合の書式 
  # ⇒ [allow 10.0.0.0/24]
  # ⇒ [allow *.srv.world]
  allow *

root@dlp:~#
vi /etc/puppetlabs/code/environments/production/manifests/file02.pp
file { '/home/testfile3.txt':
  ensure => file,
  owner  => 'root',
  group  => 'root',
  mode   => '0644',
  source => 'puppet://dlp.srv.world/extra_files/test.txt',
}

root@dlp:~#
mkdir /etc/puppetlabs/puppet/files

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

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

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

root@dlp:~#
vi /etc/puppetlabs/code/environments/production/manifests/file05.pp
file { '/home/testdir':
  ensure  => directory,
  recurse => true,
  purge   => true,
  force   => true,
  owner   => 'root',
  group   => 'root',
  mode    => '0644',
  source  => 'puppet://dlp.srv.world/extra_dir/testdir',
}

root@dlp:~#
mkdir -p /etc/puppetlabs/puppet/dirs/testdir

root@dlp:~#
touch /etc/puppetlabs/puppet/dirs/testdir/test.txt

関連コンテンツ