Usando o fantoche para garantir que a caixa do vagrant seja atualizada

2

Estou usando o fantoche para provisionar uma caixa vagrant (Ubuntu, neste caso). Depois de iniciar inicialmente a caixa vagrant ( vagrant up ), a execução de apt-get upgrade listará várias atualizações. Eu gostaria de executar esses upgrades na primeira inicialização, mas estou tendo problemas para fazer com que o fantoche execute o upgrade do apt-get:

# run apt-get update
exec { "apt-update":
  command => "/usr/bin/apt-get update"
}

# run apt-get upgrade
exec { "apt-upgrade":
  command => "apt-get upgrade -y",
  path => "/usr/bin:/usr/sbin:/bin:/usr/local/bin",
  require => Exec['apt-update'],
}

O seguinte falha com:

err: /Stage[main]//Exec[apt-upgrade]/returns: change from notrun to 0 failed: apt-get upgrade -y returned 100 instead of one of [0] at /tmp/vagrant-puppet-1/manifests/site.pp:34

** Pesquisa adicional: ** uma postagem do Google Groups sugeriu o seguinte, o que não ajudou:

Exec { path => [ "/usr/bin", "/usr/sbin", "/bin", "/usr/local/bin" ] }

Eu também tentei adicionar uma chamada para apt-get -f install -y antes. Nem funcionou.

Obrigado!

    
por Rob 14.03.2014 / 00:28

2 respostas

1

Assim, as configurações do caminho se mostraram no caminho certo e este post me ajudou a rastrear o último bit de como corrigir isso: link

Essencialmente, dkpg estava errando:

notice: /Stage[main]//Exec[apt-upgrade]/returns: dpkg: warning: 'ldconfig' not found in PATH or not executable.
notice: /Stage[main]//Exec[apt-upgrade]/returns: dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
notice: /Stage[main]//Exec[apt-upgrade]/returns: dpkg: error: 2 expected programs not found in PATH or not executable.
notice: /Stage[main]//Exec[apt-upgrade]/returns: Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
notice: /Stage[main]//Exec[apt-upgrade]/returns: E: Sub-process /usr/bin/dpkg returned an error code (2)

Quando adiciono /sbin ao caminho para atualização, funciona.

exec { 'apt-upgrade':
  command => "/usr/bin/apt-get --quiet --yes --fix-broken upgrade",
  logoutput => "on_failure",
  path => "/usr/bin:/usr/sbin:/bin:/usr/local/bin:/usr/local/sbin:/sbin",
  require => Exec['apt-update'],
}
    
por 14.03.2014 / 15:38
0

Altere sua solicitação inicial de atualização do apt-get para se parecer com isso:

exec { 'apt-get':
    command => "/usr/bin/apt-get update",
    onlyif => "/bin/sh -c '[ ! -f /var/cache/apt/pkgcache.bin ] || /usr/bin/find /etc/apt/* -cnewer /var/cache/apt/pkgcache.bin | /bin/grep . > /dev/null'",
}

Então você pode fazer:

# run apt-get upgrade
exec { 'apt-upgrade':
  command => "/usr/bin/apt-get upgrade -y",
  require => Exec['apt-update'],
}
    
por 14.03.2014 / 04:20