Используя Марионетку для управления командами оболочки

[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

попробуйте как это :)

0
задан 21 April 2013 в 01:32
2 ответа
  1. Если вы не предотвратите это, команды будут выполняться при каждом запуске марионетки, включая несколько записей в sources.list . Этого не должно происходить, поскольку Puppet ожидает, что вызовы exec будут идемпотентными. Один из способов обойти это - создать «проверочные» файлы и запустить exec только в том случае, если проверочный файл отсутствует. См. документ , чтобы узнать, как это сделать. Также обратите внимание, что существуют пользовательские модули для поддержки подходящих репозиториев с помощью Puppet.

  2. Я не использовал Puppet в системе на основе apt (пока), но полагаю, что Puppet или модуль apt, который я связал выше, достаточно умен, чтобы справиться с этим. Если нет, см. .

3
ответ дан 4 December 2019 в 11:29

Вы можете использовать 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"
}
2
ответ дан 4 December 2019 в 11:29

Теги

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