[root@example ~]# ping -s install.log 192.168.68.107
PING 192.168.68.107 (192.168.68.107) 0(28) bytes of data.
8 bytes from 192.168.68.107: icmp_req=1 ttl=64
8 bytes from 192.168.68.107: icmp_req=2 ttl=64
8 bytes from 192.168.68.107: icmp_req=3 ttl=64
попробуйте как это :)
Если вы не предотвратите это, команды будут выполняться при каждом запуске марионетки, включая несколько записей в sources.list
. Этого не должно происходить, поскольку Puppet ожидает, что вызовы exec
будут идемпотентными. Один из способов обойти это - создать «проверочные» файлы и запустить exec
только в том случае, если проверочный файл отсутствует. См. документ , чтобы узнать, как это сделать. Также обратите внимание, что существуют пользовательские модули для поддержки подходящих репозиториев с помощью Puppet.
Я не использовал Puppet в системе на основе apt (пока), но полагаю, что Puppet или модуль apt, который я связал выше, достаточно умен, чтобы справиться с этим. Если нет, см. .
Вы можете использовать onlyif в exec. Тест должен вернуть истину, чтобы выполнить команду, в вашем случае см. Ниже (PUBLIC_KEY_ID - это идентификатор ключа поставщика APT)
exec {'getKey':
command => "wget -qO- http://apt.opengeo.org/gpg.key | apt-key add -",
onlyif => "test `apt-key list |grep PUBLIC_KEY_ID | wc -l ` -eq 0"
}
exec {'addRepo':
command => "echo "deb http://apt.opengeo.org/suite/v3/ubuntu lucid main" /etc/apt/sources.list",
onlyif => "test `grep http://apt.opengeo.org/suite/v3/ubuntu /etc/apt/sources.list | wc -l ` -eq 0"
}