Вы соединяетесь с системой от интернет-соединения с фиксированным/статичным IP-адресом? раз так Вы могли добавить в белый список позволенные соединения и блок остальные.
Я не знаю хинду, перевозку или специфические особенности неспециалиста, и я не вижу существующих модулей в марионеточном штамповочном прессе модуля, но от беглого взгляда на некоторую хинду документацию неспециалиста похоже, что это было бы довольно просто для записи этого самостоятельно с Марионеткой:
stage { "first": before => Stage[main] } # Set up first stage, before main
class layman { # "overlays"?
package { "layman": ensure => present }
# Then everything else (file, execs, whatever) to configure layman,
# overlays, etc
# Looks to me like you need to change /etc/make.conf, /etc/layman/layman.cfg
# and write some execs that run "layman -a <overlay-name>"
# depending on output of "layman -i <overlay-name>"
# or possibly grepping /var/lib/layman/overlays.xmls
}
class{"layman": stage => "first"} # Set layman class to run in the first stage
Вместо того, чтобы использовать этапы Вы могли вместо этого иметь require => Class[layman]
на весь package
операторы, которым нужен он. Используя требуют, является более подробным; я использовал бы его, если бы мне только были нужны несколько вещей, или если я требовал определенного наложения. Я полагаю, что необходимо обычно избегать использования, требует, чтобы крест подготовил границы, однако, поскольку это и избыточно и вероятно щекотать странные ошибки.
Альтернатива, в зависимости от того, в чем Вы нуждаетесь, избегает этапов и только делает явный, требуют упорядочивания. Я действительно наполняю как это RHEL и конфеткой repos:
# In a "layman" module.
class layman {
[...]
}
define layman::overlay() {
exec {
"layman -a $name":
require => Class[layman],
creates => "/var/lib/layman/${name}",
}
}
class layman::overlay::php {
layman::overlay { "php": }
}
class layman::overlay::apache2 {
layman::overlay { "apache2": }
}
class apache {
include layman::overlay::apache2
package { "apache2":
ensure => present,
require => Class[layman::overlay::apache2];
}
file { "/etc/apache2/conf.d/whatever.conf":
source => "...",
require => Package[apache2],
notify => Service[apache2];
}
service { "apache2":
ensure => running,
enable => true,
require => [ Package[apache2], File["/etc/apache2/conf.d/whatever.conf"] ];
}
}
# "yoursite" module or "somephpapp" module
class yoursite::somephpapp {
include apache
include layman::overlay::php
package { "somephpapp":
ensure => present,
require => [ Class[apache], Class[layman::overlay::php] ];
}
file {
"/path/to/somephpapp.conf":
source => "...",
require => Package[somephpapp],
notify => Service[apache2]; # probably not actually required, example
}
}
В дополнение к ответу freiheit вот то, с чем я закончил.
class packages-layman {
Exec { path => '/usr/bin:/bin:/usr/sbin:/sbin', loglevel => 'debug' }
package { 'app-portage/layman': ensure => 'installed' }
file { '/etc/eix-sync.conf':
ensure => present,
content => '*',
}
line { 'layman-make.conf-overlay':
file => '/etc/make.conf',
line => 'source /var/lib/layman/make.conf',
}
exec { 'layman-list':
command => 'layman -o "http://dev.mycompany.com" -L',
require => [
Package['app-portage/layman'],
Service['openvpn']
],
}
exec { 'layman-my-overlay':
command => 'layman -o "http://dev.mycompany.com" -a myoverlay',
returns => [0,1],
require => Exec['layman-list'],
}
exec { 'layman-eix-sync':
command => 'eix-sync',
require => [
File['/etc/eix-sync.conf'],
Line['layman-make.conf-overlay'],
Exec['layman-my-overlay'],
],
}
}
Обратите внимание, что должностное лицо 'списка неспециалиста' там для преодоления то, что, кажется, ошибка в версии неспециалиста на хинду, который препятствует тому, чтобы оверлейные программы работали, пока они не были перечислены.
Марионетка может выбрать к командам выполнения в любом произвольном порядке, таким образом, порядок различных задач осуществляется с весь require
записи. Для проверки задача происходит после этого, используйте a require
как так:
package { 'app-misc/my-custom-package':
ensure => 'installed',
require => Exec['layman-eix-sync']
}
Этому нужно это определение line
от Марионетки Wiki, чтобы позволить Вам отредактировать одни строки большего файла:
define line($file, $line, $ensure = 'present') {
case $ensure {
default : { err ( "unknown ensure value ${ensure}" ) }
present: {
exec { "/bin/echo '${line}' >> '${file}'":
unless => "/bin/grep -qFx '${line}' '${file}'"
}
}
absent: {
exec { "/usr/bin/perl -ni -e 'print unless /^\\Q${line}\\E\$/' '${file}'":
onlyif => "/bin/grep -qFx '${line}' '${file}'"
}
}
}
}