Execute o executável do fantoche na atualização do arquivo desde o primeiro pedido

2

Eu quero executar um recurso exec fantoche com base em uma atualização de arquivo. Algo como:

File { '/tmp/foo.bar':
    audit => content,
} ~>
exec { 'deployment':
    command => 'do_something_meaningful.sh',
}

Mas isso é executado em todas as marionetes. Mesmo se o arquivo não foi alterado. Então eu tentei o atributo exec refreshonly . Mas com isso, o exec não é executado na primeira marionete. Eu acho que isso é porque ainda não há checksum md5 no state.yml . Funciona muito bem a partir da segunda corrida.

Minha solução atual é algo assim:

File { '/tmp/foo.bar':
    audit => content,
} 

exec { 'deployment_on_change':
    command     => 'do_something_meaningful.sh',
    refreshonly => true,
    subscribe   => File['/tmp/foo.bar']
}

exec {'deployment_on_first_run':
    command   => 'do_something_meaningful.sh',
    onlyif    => 'test ! -f marker.file',
    subscribe   => File['/tmp/foo.bar']
} ->
file { 'marker.file':
    ensure => present
}

Existe uma maneira mais elegante de resolver este problema?

    
por cogidoo 19.09.2016 / 15:06

1 resposta

0

Você está forçando o Puppet a fazer algo para o qual ele não foi projetado. Ao executá-lo, você só prolongaria cada corrida do Puppet. E você não quer isso.

Basta usar um trabalho cron , que verificará se algo mudou.

file{'/usr/bin/local/do_something_meaningful':
  ensure  => present,
  owner   => 'myuser',
  mode    => '0755',
  source  => 'puppet:///modules/my_module/do_something_meaningful.sh',
}

cron { 'do_something_meaningful':
  command => '/usr/bin/local/do_something_meaningful',
  user    => 'myuser',
  hour    => ['8-17'],
  minute  => '*/30',
  require => File['/usr/bin/local/do_something_meaningful'],
}

Se você estiver implantando código usando alguma outra ferramenta, você deve ligar do_something_meaningful.sh no processo de implantação. O Puppet é bom para garantir que algum recurso (arquivos, pacotes, serviços, etc.) exista.

    
por 27.10.2016 / 11:17

Tags