Когда у меня есть действительно противные сетевые проблемы, я склонен разжигать wireshark. Для меня нет никакого лучшего сетевого инструмента диагностики, когда я должен перейти к деталям основных элементов. И не волнуйтесь, не можете ли Вы установить его или на источнике или на целевом поле; можно работать tcpdump -w
записать пакетные данные в файл на запуске и/или конечной точке, и файл канала к wireshark на другом поле когда Вам будет удобно.
Разбейте всю функциональность на отдельных файлов внутри модуля, каждый файл содержит один класс или определенный тип. Используйте ресурс упорядочивание для управления ресурсами в правильном порядке.
В определении вашего узла:
class {'mymodule':
conffile => 'file_name',
}
В каталоге манифеста вашего модуля:
init.pp:
# This class does basic setup,
# and optionally allows you to define a config file
class mymodule ( $conffile = undef ) {
include mymodule::confdir
if $conffile {
mymodule::conffile { $conffile: }
}
}
params.pp :
# This class defines variables
class mymodule::params {
$confdir = '/path/to/dir'
}
confdir.pp:
# This class creates a conf dir
class mymodule::confdir {
include mymodule::params
file { $mymodule::params::confdir:
ensure = directory,
}
}
conffile.pp:
# This define creates a config file
define mymodule::conffile($file=$title) {
include mymodule::params
file { "${mymodule::params::confdir}/${file}":
ensure => present,
require => Class['mymodule::confdir'],
}
}
Лучше всего, если вы можете извлечь каталог config из файла define. Это пример
class def($config_dir) {
file { $config_dir:
ensure => directory
}
}
define def::template($file_location) {
file { $file_location:
path => "${def::config_dir}/${file_location}",
content => 'hi',
require => Class['def'],
}
}
if $fqdn == 'my_host' {
class { 'def':
config_dir => '/tmp/d1'
}
def::template { 'f1.txt':
file_location => "f1.txt"
}
def::template { 'f2.txt':
file_location => "f2.txt"
}
}
ls /tmp/d1/
f1.txt f2.txt