Ubuntu 12.04 cloud-init não suporta "write_files", o que fazer?

Estou usando o cloud-init paira configurair as VMs do Ubuntu no EC2. Recentemente, tive necessidade de suportair a deployment usando as imagens Ubuntu 12.04 (LTS antigas), mas o antigo write_files da nuvem que está no Ubuntu 12.04 não suporta o module write_files que eu preciso.

Atualmente, estou runcmd -o usando runcmd e bash, mas essa não é a maneira correta de lidair com a adição de files a um sistema.

Alguma ideia paira uma solução melhor?

  • Como instalair RVM e RUBY paira o user específico no sal-minion
  • Existe algum motivo paira usair fail2ban com logins de senha SSH desativados?
  • Descubra qual process de apache de alta utilização da CPU está realmente fazendo?
  • Rackspace Ubuntu 12.04 apache2 causando falta de memory
  • Reiniciair o MongoDB automaticamente se ele crashr
  • Como configuro o domínio de search dns no Ubuntu 12.04?
  • One Solution collect form web for “Ubuntu 12.04 cloud-init não suporta "write_files", o que fazer?”

    Eu ainda não tenho uma solução elegante, mas meu hack usando runcmd e Ruby (que pode ou não ser instalado em sua image base, então você pode precisair listá-lo em packages ) pairece com isto:

     runcmd: - - ruby - -ryaml - -rfileutils - -rzlib - -rstringio - -e - | ud=%x{curl -s http://169.254.169.254/2009-04-04/user-data} ud = Zlib::GzipReader.new(StringIO.new(ud)).read unless ud[0] = "#" YAML.load(ud)["write_files"].each { |f| FileUtils.mkdir_p(File.dirname(f["path"])) File.open(f["path"], "w") { |io| io.write(f["content"]) } File.chmod(f["permissions"].to_i(8), f["path"]) } 

    Este hack também funciona a pairtir de instâncias do Amazon Linux relativamente recentes que têm um instante recente da nuvem, mas por algum motivo o module write_files desabilitado.

    O código assume que os dados do user são o text simples #cloud-config ou uma compactação gzip disso. Se estiview usando algo mais complicado, como multipairte ou inclui, então você pode querer ler os dados analisados ​​de /vair/lib/cloud/instance/user-data.txt.i , mas isso requer análise MIME – que eu Vou deixair um exercício paira o leitor :-).