Qual é a melhor maneira do Puppet adicionar um pedaço de texto ao arquivo / etc / hosts?

8

Eu também gostaria de manter a capacidade de editar manualmente o arquivo hosts, pelo menos as 10 primeiras linhas.

#Public IP's - eth0
192.168.1.103   front-01
192.168.1.106   front-02

#Private IP's - eth1
192.169.40.201  priv0-0
192.169.40.202  priv0-1
192.169.40.207  priv1-0
192.169.40.208  priv1-1

#Virtual IP's - eth0:1
192.169.50.202  vip-01
192.169.50.205  vip-02

Ter essas entradas de hosts na parte inferior do / etc / hosts seria perfeito. Qual é a melhor maneira de fazer isso? Existe uma maneira melhor do que escrever 8 manifestações de linhas de hosts?

# create a simple hostname and ip host entry
host { 'front-01':
    ip => '192.168.1.103',
}

Pode haver grupos de servidores que precisam de IPs / hostnames diferentes em seus / etc / hosts. Eu usaria um modelo, mas isso significa que as pessoas não podem mais fazer alterações manuais em seus / etc / hosts, pois seriam substituídas pelo modelo.

    
por ujjain 28.05.2013 / 13:21

4 respostas

14

Honestamente, usar o recurso host é a maneira mais simples de fazer isso. Você só tem que definir os hosts que você quer controlar pelo fantoche, e você ainda pode editar o resto do arquivo manualmente (mesmo que o Puppet caia no cabeçalho que diz para você não fazer isso).

O módulo augeas é um exagero para um arquivo de hosts, porque apenas duplica a funcionalidade do recurso host (embora não adicione o cabeçalho "não edite este arquivo").

Se você realmente deseja algo mais complicado ou deseja ter um bom controle sobre o posicionamento das linhas no arquivo, use o módulo de concatenar com uma fonte local para um dos fragmentos. Há um exemplo para esse tipo de coisa (usando o arquivo motd) na documentação concat .

Mas, na verdade, basta usar o recurso host para os hosts que você deseja definir no Puppet e editar os arquivos dos hosts locais para qualquer outra coisa que você precisar.

Observe também que você pode escrever as definições do host de maneira bastante compacta no Puppet:

host {
  # Public IPs - eth0
  'front-01': ip => '192.168.1.103';
  'front-02': ip => '192.168.1.106';

  # Private IPs - eth1
  'priv0-0': ip => '192.169.40.201';
  'priv0-1': ip => '192.169.40.202';
  'priv1-0': ip => '192.169.40.207';
  'priv1-1': ip => '192.169.40.208';

  # Virtual IPs - eth0:1
  'vip-01': ip => '192.169.50.202';
  'vip-02': ip => '192.169.50.205';
}
    
por 28.05.2013 / 15:37
1

Use a funcionalidade augeaus incorporada ao fantoche. Você quer algo como

augeas {
  context => "files/etc/hosts"
  changes => [
    "set <ip address> <name>",
  ],
}
    
por 28.05.2013 / 13:55
0

Um caso em que você pode optar por usar augeas para o arquivo / etc / hosts, além dos tipos de recurso de hosts - é para linhas de endereço IP duplicadas.

hosts tipo de recurso muito feliz permite linhas com os mesmos endereços IP. (Google, onde são casos extremamente obscuros, quando pode ser uma boa idéia.)

Mas se você não quiser endereços IP duplicados em seu arquivo / etc / hosts - então o augeas pode ajudá-lo. hosts não é de ajuda para isso.

    
por 29.11.2018 / 01:43
-1

Apenas um método, sem código:

Use modelos ou qualquer coisa que atualize um arquivo /etc/hosts.puppet com linhas iniciais e finais claras

###PUPPETSTART###
## Users: Lines between START and END will be deleted, put your own entries below 

192.168.0.1 host1
###PUPPETEND###

e ter um script de shell como dependência que corta esse segmento de /etc/hosts e o substitui pelo conteúdo de /etc/hosts.puppet .

Tenha em atenção que isto tem uma condição de corrida quando os utilizadores editam o ficheiro e a execução do fantoche o altera. Como alternativa, instrua seus usuários a editar um arquivo /etc/hosts.user e construa /etc/hosts dos dois arquivos sempre que um for alterado.

    
por 28.05.2013 / 13:41

Tags