apt-get
retorna 0 em sucesso e 100 em erro, como você pode ver facilmente na página apt-get
man. Então você entendeu isso de trás pra frente. Você está combinando dois comandos usando &&
, o que significa que o segundo comando só é executado quando o primeiro é concluído com êxito (retornando 0). Portanto, se apt-get update
retornasse "100", como você erroneamente espera, o segundo comando nem seria executado.
E se você ler atentamente a mensagem de log, verá que o recurso Exec aplicado é denominado "apt_update" e não "apt-update". O primeiro é definido na classe apt
e executado quando o recurso apt::ppa
é aplicado. Este último é seu próprio recurso Exec, que também apareceria na saída do log, mas como Exec[apt-update]
. Procure por isso.
Em qualquer caso, o que você construiu aqui não funciona porque você está tentando usar o Puppet como um script da Shell glorificado e fazendo errado. O Puppet ignora a ordem em que você especifica recursos no manifesto e, em vez disso, os aplica da maneira que julgar adequada. Portanto, para garantir que o pacote lxc-docker
seja instalado a partir do PPA especificado, é necessário certificar-se de que o recurso PPA seja aplicado antes do recurso do pacote.
Existem algumas maneiras de fazer isso, todas envolvendo o fato de você especificar relacionamentos ou dependências. Aqui está uma maneira, usando setas de encadeamento :
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']
Isso significa que o recurso do pacote lxc-docker
será aplicado depois que o recurso apt::ppa
do PPA "ppa: dotcloud / lxc-docker" tiver sido aplicado. Conforme explicado, o recurso apt::ppa
já cuida da atualização do cache do APT após adicionar um PPA, portanto, não há necessidade de chamar explicitamente apt-get update
em qualquer lugar.