То, что Вы должны сделать для создания этой работы, является маршрутизацией политики использования. Я понятия не имею, как сделать эту работу над Windows, но можно использовать iproute2 на Linux для установки политики отослать ответы в том же интерфейсе, на котором это вошло.
Сайт Расширенной маршрутизации И Управления трафиком Linux имеет хорошую информацию о том, как сделать это.
Если Вы не будете использовать Linux, то надо надеяться, "маршрутизация политики" и "многосетевой" даст Вам достаточно google-fu для нахождения ответов.
Я на самом деле решил пойти с cpanminus по cpan, и использую:
# perl/manifests/init.pp
class perl {
define installCPAN () {
exec { "cpanLoad${title}":
command => "cpanm $name",
path => "/usr/bin:/usr/sbin:/bin:/sbin",
unless => "perl -I.cpan -M$title -e 1",
timeout => 600,
require => Exec["initCPAN"],
}
}
package { "perl": ensure => installed, require => Class["common"] }
exec { "initCPAN":
command => "wget -O - http://cpanmin.us | perl - --self-upgrade",
path => "/usr/bin:/usr/sbin:/bin:/sbin",
creates => "/bin/cpanm",
require => [ Class["common"], Package["perl"] ],
}
# E.g.
installCPAN { "JSON": }
installCPAN { "JSON::XS": }
}
Главная ошибка, кажется, "-" на имя "установка-cpan". Следующее действительно работает, хотя, и команда INIT_CPAN может быть найден в том, Как я автоматизирую конфигурацию CPAN?.
# perl/manifests/init.pp
class perl {
define installCPAN () {
exec { "cpanLoad${title}":
command => "perl -MCPAN -e 'install(q[$name])'",
cwd => "/root",
path => "/usr/bin:/usr/sbin:/bin:/sbin",
unless => "perl -I.cpan -M$name -e 1",
timeout => 600,
environment => [
"PERL_MM_USE_DEFAULT=1",
"PERL_MM_NONINTERACTIVE=1",
"AUTOMATED_TESTING=1",
],
}
}
package { "perl": ensure => installed, require => Class["common"] }
file { "initCPANcmd":
source => "puppet://puppet/perl/INIT_CPAN",
path => "/root/INIT_CPAN",
owner => "root",
mode => 700,
}
exec { "initCPAN":
command => "/root/INIT_CPAN",
cwd => "/root",
path => "/usr/bin:/usr/sbin:/bin:/sbin",
creates => "/root/.cpan/CPAN/MyConfig.pm",
require => [ File["initCPANcmd"], Package["perl"] ],
}
perl::installCPAN { "Bundle::CPAN": require => Exec["initCPAN"] }
}