Puppet - copie vários arquivos para o diretório

4

Gostaria de copiar vários arquivos de URLs puppet: // para um diretório em um agente. Eu não tenho certeza se estou fazendo algo errado aqui, mas parece que o boneco não gosta disso

  file { '/etc/nginx/conf.d':
    path         => '/etc/nginx/conf.d',
    ensure       => directory,
    require      => File['/etc/nginx/nginx.conf'],
    source       => ['puppet:///modules/nginx/app1.conf',
                     'puppet:///modules/nginx/app2.conf'],
    sourceselect => all,
  }

Veja o que recebo quando tento executar o agente

Error: Could not rename temporary file /etc/nginx/conf.d.puppettmp_9046 to /etc/nginx/conf.d: Is a directory

Se eu mudar um pouco as coisas criando diretórios no módulo e apontando o recurso para eles, ele funciona

  mkdir module/files/app1 module/files/app2
  mv module/files/app1.conf module/files/app1
  mv module/files/app2.conf module/files/app2

novo recurso

  file { '/etc/nginx/conf.d':
    path         => '/etc/nginx/conf.d',
    ensure       => directory,
    require      => File['/etc/nginx/nginx.conf'],
    source       => ['puppet:///modules/nginx/app1',
                     'puppet:///modules/nginx/app2'],
    sourceselect => all,
    recurse      => true,
  }

Parece um pouco bobo ter que criar diretórios para copiar uma lista de arquivos únicos.

Editar

Eu tentei adicionar uma barra no caminho , mas pulei a arma pensando que essa era a solução. O motivo foi que eu tive minha declaração de classe nginx comentada na definição do nó. Tentando embora eu recebo o mesmo erro de cima.

  file { '/etc/nginx/conf.d/':
    path         => '/etc/nginx/conf.d/',
    ensure       => directory,
    require      => File['/etc/nginx/nginx.conf'],
    source       => ['puppet:///modules/nginx/app1.conf',          
                     'puppet:///modules/nginx/app2.conf'],
    sourceselect => all,
  }
    
por quickshiftin 20.09.2013 / 17:13

2 respostas

8

falta de um rastro / no seu destino.

Bem, algumas coisas antes de tudo:

Por que você está garantindo diretório e ter conteúdo (parâmetro de origem)? Faça dois recursos, um para o diretório e outro para os dois arquivos no diretório.

Ocorre um erro porque você está obtendo um arquivo para um diretório, não fornecendo um arquivo para um diretório. Um diretório só pode ter um diretório como fonte.

Assim, você pode criar definições individuais, já que você está definindo apenas dois arquivos que deseja obter no diretório. O outro é criar um diretório em módulo / arquivos e colocar os arquivos lá. Então, quando você faz a definição de origem, você especifica o diretório e não os arquivos.

Espero que isso ajude. A execução que você já faz sozinho.

    
por 20.09.2013 / 17:47
2

o que há de errado com

file { '/etc/nginx/conf.d':
    path         => '/etc/nginx/conf.d',
    ensure       => directory,
    require      => File['/etc/nginx/nginx.conf'],
    source       => 'puppet:///modules/nginx',
    recurse      => true,

  }

esta solução mantém diretórios inteiros em sincronia

    
por 01.10.2013 / 00:07

Tags