У меня есть эта структура в моем файле 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',
}
}
2nd аргумент hiera_hash
- значение по умолчанию. Я предпочитаю всегда хранить там пустой хэш, чтобы иметь возможность загружать ресурс на всех машинах, даже если значения определены только на определенных машинах.
Наконец, я добавляю один сценарий, который запускается каждый раз при запуске марионетки:
#!/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
С уважением.