Установка пакета от PPA с помощью Марионетки

Это - мое собственное одно-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).

8
задан 29 July 2013 в 01:22
2 ответа

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 где-либо.

13
ответ дан 2 December 2019 в 22:51

И вот альтернативный, идиоматический ответ с использованием 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']
}
1
ответ дан 2 December 2019 в 22:51

Теги

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