Puppet - Servidor de Arquivos
O Puppet segue o conceito de cliente e servidor, onde uma máquina em uma configuração funciona como a máquina do servidor com o software do servidor Puppet em execução e o restante funciona como o cliente com o software do agente Puppet em execução. Este recurso do servidor de arquivos ajuda a copiar os arquivos em várias máquinas. Este recurso de função de serviço de arquivo no Puppet vem como parte do daemon central do Puppet. O Puppetmasterd e a função do cliente desempenham um papel fundamental no fornecimento de atributos de arquivo como o objeto de arquivo.
class { 'java':
package => 'jdk-8u25-linux-x64',
java_alternative => 'jdk1.8.0_25',
java_alternative_path => '/usr/java/jdk1.8.0_25/jre/bin/java'
}
Como no trecho de código acima, as funções de serviço de arquivo do Puppet abstraem a topologia do sistema de arquivos local suportando o módulo de serviço de arquivo. Especificaremos o módulo de serviço de arquivo da seguinte maneira.
“puppet://server/modules/module_name/sudoers”
Formato de arquivo
Na estrutura de diretórios do Puppet, por padrão, a configuração do servidor de arquivos está localizada em /etc/puppet/fileserver.config diretório, se o usuário deseja alterar este caminho do arquivo de configuração padrão, isso pode ser feito usando o novo sinalizador de configuração para puppetmasterd. O arquivo de configuração se parece com os arquivos INI, mas não é exatamente o mesmo.
[module]
path /path/to/files
allow *.domain.com
deny *.wireless.domain.com
Conforme mostrado no trecho de código acima, todas as três opções são representadas no arquivo de configuração. O nome do módulo fica entre colchetes. O caminho é a única opção necessária. A opção de segurança padrão é negar todo o acesso, então se nenhuma linha permitir for especificada, o módulo que será configurado estará disponível para qualquer pessoa.
O caminho pode conter qualquer um ou todos os% d,% h e% H que são substituídos dinamicamente por seu nome de domínio, seu nome de host e nome de host totalmente qualificado. Todos são obtidos do certificado SSL do cliente (portanto, tome cuidado se houver uma incompatibilidade no nome do host e no nome do certificado). Isso é útil para criar módulos onde os arquivos de cada cliente são mantidos completamente separados. Exemplo, para chaves privadas de host.
[private]
path /data/private/%h
allow *
No snippet de código acima, o código está tentando pesquisar o arquivo /private/file.txt do cliente client1.vipin.com. Ele irá procurá-lo em /data/private/client1/file.txt, enquanto a mesma solicitação para client2.vipin.com tentará recuperar o arquivo /data/private/client2/file.txt no servidor de arquivos.
Segurança
O Puppet suporta os dois conceitos básicos de proteção de arquivos no servidor de arquivos Puppet. Isso é feito permitindo o acesso a arquivos específicos e negando o acesso aos que não são necessários. Por padrão, o Puppet não permite acesso a nenhum dos arquivos. Ele precisa ser definido explicitamente. O formato que pode ser usado nos arquivos para permitir ou negar acesso é usando endereço IP, nome ou permissão global.
Se o cliente não estiver conectado diretamente ao servidor de arquivos Puppet, por exemplo usando um proxy reverso e Mongrel, o servidor de arquivos verá todas as conexões como provenientes do servidor proxy e não do cliente Puppet. Nos casos acima, restringir o nome do host com base no nome do host é a melhor prática.
Um ponto importante a ser observado ao definir a estrutura do arquivo é que todas as instruções de negação são analisadas antes da instrução de permissão. Portanto, se qualquer instrução de negação corresponder a um host, esse host será negado e, se nenhuma instrução de permissão for gravada nos próximos arquivos, o host será negado. Este recurso ajuda a definir a prioridade de qualquer site específico.
Nome de anfitrião
Em qualquer configuração de servidor de arquivos, o nome do host do arquivo pode ser especificado de duas maneiras, usando um nome de host completo ou especificando um nome de domínio inteiro usando o caractere curinga *, conforme mostrado no exemplo a seguir.
[export]
path /usr
allow brcleprod001.brcl.com
allow *.brcl.com
deny brcleprod002.brcl.com
Endereço de IP
Em qualquer configuração de servidor de arquivos, o endereço do arquivo pode ser especificado como semelhante aos nomes do host, usando o endereço IP completo ou o endereço curinga. Também é possível usar a notação do sistema CIDR.
[export]
path /usr
allow 127.0.0.1
allow 172.223.30.*
allow 172.223.30.0/24
Permissão Global
A permissão global é usada quando o usuário deseja que todos possam acessar um módulo específico. Para fazer isso, um único curinga ajuda a permitir que todos acessem o módulo.
[export]
path /export
allow *