Eu tenho uma situação única em que a diretiva ensure => latest
do pacote Puppet só funcionava em alguns dos meus sistemas. Dos 30 servidores, os pacotes foram atualizados corretamente em todos, menos nos 4. Estou tentando obter versões principais do pacote de software de < 9,40 a 9,50. Eu poderia especificar um nível difícil, mas eu encontrei o problema de curinga de várias arquiteturas .
Snippet de código de manifesto:
# Install packages
$spppackages = [ "hp-snmp-agents", "hpssa", "hp-health", "hp-smh-templates", "hpsmh", "hpssacli", "hponcfg", ]
package { $spppackages:
ensure => latest,
require => Yumrepo['HP-spp'],
}
Status Mcollective:
mco package hp-snmp-agents status
Summary of Ensure:
9.50-2564.40.rhel6 = 14
9.50-2564.34.rhel5 = 9
9.40-2506.37.rhel6 = 4 <== This is what I'm trying to fix!
9.50-2564.35.rhel5 = 1
Eu tentei depurar isso nos sistemas afetados com:
puppet apply --verbose --debug --execute 'package { hp-snmp-agents: ensure => latest }'
Como resultado:
Info: Applying configuration version '1393411670'
Debug: Prefetching yum resources for package
Debug: Executing '/bin/rpm --version'
Debug: Executing '/bin/rpm -qa --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n''
Error: Could not prefetch package provider 'yum': invalid byte sequence in US-ASCII
Debug: Executing '/bin/rpm -q hp-snmp-agents --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n''
Debug: Finishing transaction 11762680
Debug: Storing state
Debug: Stored state in 0.09 seconds
A execução de yum list updates hp-snmp-agents
mostra que o pacote pode ser atualizado pelo yum e há uma versão mais recente disponível:
Installed Packages
hp-snmp-agents.x86_64 9.40-2506.37.rhel6 @HP-spp
Available Packages
hp-snmp-agents.x86_64 9.50-2564.40.rhel6 HP-spp
Parece que o problema pode ser o formato de consulta da versão rpm. Correr isso manualmente gera:
# /bin/rpm -q hp-snmp-agents --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n'
hp-snmp-agents 0 9.40 2506.37.rhel6 x86_64 :DESC: Insight Management Agents(SNMP) for HP ProLiant Systems
Se eu ensure => 9.50-xxx
no pacote hp-snmp-agents
, eu posso forçar isso para trabalhar nos sistemas teimosos. Mesmo introduzindo um falso número de versão, parece haver um salto na construção do catálogo, e as execuções subseqüentes do trabalho do agente fantoche são atualizadas corretamente. Eu só estou curioso para saber por que isso funcionou perfeitamente em 26 de 30 servidores e precisava de massagear o resto.
Note que eu fiz yum clean all
via Mcollective como uma etapa inicial de solução de problemas