Maneira correta de adicionar comandos ao rc.local acima de “exit 0” com o fantoche?

4

Um novato de marionetes, estou atualmente trabalhando em um script de implantação que iniciará alguns serviços foreverjs de rc.local no momento da inicialização.

Minha preocupação é que, no Ubuntu, rc.local vem com um exit 0 na parte inferior do arquivo.

Eu não vejo uma maneira de usar A diretiva file_line do stdlib para garantir que minhas linhas apareçam acima do comando de saída (ou em qualquer outro lugar em particular, caso seja necessário).

Eu posso fazer isso com um bloco exec e algum sed feio, mas deve haver uma maneira mais padronizada e elegante no fantoche?

    
por msanford 27.03.2014 / 18:44

2 respostas

5

Você pode usar o módulo PuppetLabs Concat para inserir partes dinamicamente no arquivo rc.local , assim: p>

Defina o arquivo como um arquivo de concat e adicione um cabeçalho (comentário hash-bang, "gerenciado por Puppet", etc.) - observe o abaixo pode não funcionar, não tenho certeza se o tratamento de nova linha do Puppet está no topo do meu cabeça!

concat { '/etc/rc.local':
  ensure => present,
}

concat::fragment { '00_rc.local_header':
  target  => '/etc/rc.local'
  content => '#!/bin/bash\n# This file is manageed by Puppet, do not modify!',
  order   => '01'
}

Adicione suas peças personalizadas, certificando-se de especificar o valor correto de target e um valor de order maior do que o cabeçalho:

concat::fragment { '05_rc.local_custom':
  target  => '/etc/rc.local',
  content => template('path/to/template.erb'),
  order   => '05'
}

concat::fragment { '15_rc.local_custom_2':
  target  => '/etc/rc.local',
  source  => 'puppet:///modules/mymodule/myfile.txt',
  order   => '06'
}

Adicione o rodapé exit 0 :

concat::fragment { '99_rc.local_footer':
  target  => '/etc/rc.local',
  content => 'exit 0\n',
  order   => '99'
}

Et fin!

Você pode usar concat::fragment em várias subclasses (e também vários módulos, embora isso realmente não seja recomendado!), desde que você defina o valor correto de target e tenha esse arquivo declarado como um recurso concat . O parâmetro order permite posicionar elementos dentro do arquivo.

Verifique o leiame de uso do módulo para saber mais.

    
por 10.04.2014 / 23:48
1

Se você tiver o serviço cron instalado, poderá usá-lo para essa finalidade usando a especificação de tempo @reboot. O que torna isso mais fácil de gerenciar com o fantoche é que você pode simplesmente criar um arquivo separado em /etc/cron.d em vez de tentar editar um único arquivo monolítico.

Eu testei que os seguintes trabalhos:

file { "/etc/cron.d/at_startup_myscript":
    content => "@reboot root /usr/local/bin/myscript.sh \n",
}
    
por 16.06.2016 / 15:21

Tags