Это - мое собственное одно-linner для получения времени th emost основной HTTP 1/1 запрос на моих серверах. Измените www.foo.com ServerName, и 192.168.1.15by IP сервера HTTP (используйте IP, как с настоящим именем Вам добавили бы время поиска DNS).
time printf 'GET / HTTP/1.1\nHost:www.foo.com\n\n' |nc -w 10 -q 10 192.168.1.15 80 1>/dev/null
Я обычно делаю это на очень простом Virtualhost по умолчанию со статической страницей HTML, для получения основного времени отклика (никакой cgi или php вещи, даже сессия, mod_rewrite или подлинное управление.
В течение реального времени, отслеживая я использую плагины Nagios, апачские результаты состояния (очень полезный на ударе лайнеры также wityh q=auto), и когда-то автоместо размещения (на основе httperf).
apt-get
возвращает 0 в случае успеха и 100 в случае ошибки, как вы легко можете увидеть на странице руководства apt-get
. Итак, у вас все наоборот. Вы объединяете две команды, используя &&
, что означает, что вторая команда запускается только тогда, когда первая завершается успешно (возвращается 0). Так что, если apt-get update
вернет «100», как вы ошибочно ожидаете, вторая команда даже не запустится.
И если вы внимательно прочитаете сообщение журнала, вы увидите, что Применяемый ресурс Exec называется «apt_update», а не «apt-update». Первый определен в классе apt
и запускается при применении ресурса apt :: ppa
. Последний - ваш собственный ресурс Exec, который также будет отображаться в выводе журнала, но как Exec [apt-update]
. Ищите это.
В любом случае то, что вы здесь создали, не работает, потому что вы пытаетесь использовать Puppet как прославленный сценарий Shell и делаете это неправильно. Puppet игнорирует порядок, в котором вы указываете ресурсы в манифесте, и вместо этого применяет их так, как считает нужным. Итак, чтобы убедиться, что пакет lxc-docker
установлен из указанного PPA, вам необходимо убедиться, что ресурс PPA применен до ресурса пакета.
Есть несколько способов сделать это, все из они вовлекают то, что вы указываете отношения или зависимости. Вот один из способов использования стрелок :
class { 'apt':
always_apt_update => true,
}
apt::ppa { 'ppa:dotcloud/lxc-docker':}
# Your regular packages don't know or care about the PPA
package { [
'build-essential',
'vim',
'curl',
'zsh',
'git-core',
'htop',
'wget',
'linux-image-generic-lts-raring',
'python-software-properties'
]:
ensure => 'installed',
}
# We single lxc-docker out to be able to specify
# the relationship to Apt::Ppa properly
package { 'lxc-docker':
ensure => 'installed'
}
Apt::Ppa['ppa:dotcloud/lxc-docker'] ->
Package['lxc-docker']
Это означает, что ресурс пакета lxc-docker
будет применен после ресурса apt :: ppa
для PPA "ppa: dotcloud / lxc-docker" был применен. Как объяснялось, ресурс apt :: ppa
уже заботится об обновлении кэша APT после добавления PPA, поэтому нет необходимости явно вызывать apt-get update
где-либо.
И вот альтернативный, идиоматический ответ с использованием require
:
class { 'apt':
always_apt_update => true,
}
apt::ppa { 'ppa:dotcloud/lxc-docker':}
package { [others]: }
package { 'lxc-docker':
ensure => 'installed',
require => Apt::Ppa['ppa:dotcloud/lxc-docker']
}