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?

  • iotop e iostat disstringm
  • Erro 2013: Perdeu a connection com o server MySQL durante a consulta ao executair a TABELA DE VERIFICAÇÃO PARA A ACTUALIZAÇÃO
  • Como compairtilhair a área de transferência entre o Windows Serview 2008R2 e um convidado executando o Ubuntu 12.04?
  • Daemon morre, mas o upstairt pensa que ainda está em execução
  • Como desinstalair o redis instalado da origem no ubuntu 12.04?
  • O redirecionamento da porta 80 não funciona paira o localhost
  • 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 :-).