Как записать допускающие повторное использование марионеточные определения?

Когда у меня есть действительно противные сетевые проблемы, я склонен разжигать wireshark. Для меня нет никакого лучшего сетевого инструмента диагностики, когда я должен перейти к деталям основных элементов. И не волнуйтесь, не можете ли Вы установить его или на источнике или на целевом поле; можно работать tcpdump -w записать пакетные данные в файл на запуске и/или конечной точке, и файл канала к wireshark на другом поле когда Вам будет удобно.

2
задан 3 December 2012 в 17:12
2 ответа

Разбейте всю функциональность на отдельных файлов внутри модуля, каждый файл содержит один класс или определенный тип. Используйте ресурс упорядочивание для управления ресурсами в правильном порядке.

В определении вашего узла:

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'],
  }
}
2
ответ дан 3 December 2019 в 10:52

Лучше всего, если вы можете извлечь каталог 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
1
ответ дан 3 December 2019 в 10:52

Теги

Похожие вопросы