Puppet - como posso copiar um arquivo para várias pastas de usuários?

2

Bem, eu estava usando as informações sobre isso:

Puppet - Qualquer maneira de copiar arquivos de configuração personalizados predefinidos para software em clientes do mestre de marionetes (host)?

Mas eu preciso de um pouco mais elaborado, porque eu tenho vários desktops e estão em uso por 2 ou 3 usuários cada um, então eu quero fazer uma classe para copiar um atalho em seus desktops.

Os computadores são unidos a um domínio, portanto, qualquer usuário pode fazer login em qualquer área de trabalho e seu perfil é criado em todas as áreas de trabalho.

Eu tentei com isso:

class applink {

  file { "/home/installer/Escritorio/Workdesktop.desktop":
       owner => installer,
       group => root,
       mode => 770,
       source => "puppet://$server/files/Workdesktop.desktop"            
 }

Isso é apenas para um usuário chamado "instalador", como fazer isso para vários usuários?

Posso usar $USER para fazer isso? Quaisquer pensamentos?

Obrigado!

    
por Eliot Rocha 10.11.2010 / 00:44

2 respostas

4

Existem duas maneiras de fazer isso: uma definição ou um recurso virtual. Eu sei mais sobre definições, então essa é a abordagem que descreverei. Leia sobre os recursos virtuais aqui , mas esteja pronto para ficar confuso antes de obter entendimento.

Para fazer isso em uma definição, crie um manifesto em sua estrutura de módulo para contê-la; no seu exemplo, seria em _modulepath_/applink/manifests/desktoplinks.pp

define applink::desktoplinks {
  file { "/home/$title/Escritorio/Workdesktop.desktop":
    owner => $title,
    group => root,
    source => "puppet://$server/files/Workdesktop.desktop",
  }
  # you could have others here if you wanted
}

Em seguida, para usá-lo, você o chamaria com o nome de cada usuário, talvez de uma só vez em uma matriz:

applink::desktoplinks { [ "user1", "user2", "user3" ]: }

O truque é que o nome de usuário é o "título" do recurso definido, portanto, ele está disponível dentro da definição como $title . Leia mais sobre tipos definidos aqui .

HTH

    
por 30.01.2011 / 05:48
1

Acabei de aprender outra maneira de fazer isso. É mais uma peculiaridade de sintaxe do que qualquer coisa, mas aqui está:

file { ["/home/installer/Escritorio/Workdesktop.desktop",
        "/home/user/Escritorio/Workdesktop.desktop"]:
  owner => installer,
  group => root,
  mode => 770,
  source => "puppet://$server/files/Workdesktop.desktop"            
}

A chave está especificando o title como uma matriz em vez de uma string; Puppet vai analisar isso como se você tivesse escrito o seguinte:

file { "/home/installer/Escritorio/Workdesktop.desktop":
  owner => installer,
  group => root,
  mode => 770,
  source => "puppet://$server/files/Workdesktop.desktop"            
}
file { "/home/user/Escritorio/Workdesktop.desktop":
  owner => installer,
  group => root,
  mode => 770,
  source => "puppet://$server/files/Workdesktop.desktop"            
}

, por exemplo, você recebe os dois File["/home/installer/Escritorio/Workdesktop.desktop"] e File["/home/user/Escritorio/Workdesktop.desktop"] ligados em sua configuração.

Eu suspeito que isso funcionaria para muitos tipos de recursos, mas eu não testei nada além de file .

    
por 08.09.2011 / 21:32