Hieraファイルにこの構造があり、smb.confにいくつかのルールを作成します。
samba::shares:
PDF:
- comment = "PDF"
- path = /home/smb/pdf
- browseable = yes
- hide dot files = yes
- read only = no
- public = yes
- writable = yes
- create mode = 0775
- printable = no
Partage:
- comment= "Partage"
- path = /home/smb/Partage
- browseable = yes
- hide dot files = yes
- read only = no
- public = yes
- writable = yes
- create mode = 0775
- printable = no
各共有のパスにアクセスして、適切な権限を持つフォルダーを自動的に作成したいと思います。
Hiera_hash()で多くの解決策を試しましたが、正しい設定が見つかりません。 :
define create_folder{
# I want to loop on PDF, Partage, etc. and extract path
# for each one (/home/smb/pdf, /home/smb/Partage, etc.).
$path = hiera_hash('path')
file{"$path":
path => $path,
ensure => diretory,
owner => "smb",
group => "smb",
require => File["/home/smb/"],
mode => '775',
}
}
手伝ってくれませんか?
よろしく。
これは create_resources
メソッドのアプリケーションです。
あなたの場合、リソースの内部からではなく、外部からハッシュをフェッチします。
# puppet/site.pp
create_resources(create_folder, hiera_hash('samba::shares', {}))
# puppet/modules/...
define create_folder(
$comment,
$path,
$browseable,
$hide_dot_files,
$read_only,
$public,
$writable,
$create mode,
$printable,
){
file{"$path":
path => $path,
ensure => diretory,
owner => "smb",
group => "smb",
require => File["/home/smb/"],
mode => '775',
}
}
2ndhiera_hash
の引数はデフォルト値です。特定のマシンだけに値が定義されている場合でも、すべてのマシンにリソースをロードできるようにするために、常に空のハッシュをそこに保持することを好みます。
最後に、puppetが実行されるたびに実行されるスクリプトを1つ追加します。
#!/bin/bash
folders=($(cat /etc/samba/smb.conf | grep path | cut -d" " -f3))
for folder in "${folders[@]}" ; do
if [ ! -d "$folder" ]; then
mkdir -p "$dossier"
chown -R smb:smb "$folder"
chmod -R 775 "$folder"
fi
done
よろしく。