Configurando o dnsmasq_config_file com a instalação gerenciada pelo Puppet OpenStack

1

Nossa instalação do OpenStack é lançada com o Puppet. Usamos o excelente módulo puppetlabs-openstack para isso. Devido aos ciclos lentos de rotatividade, ainda estamos presos à versão 5.0.2 . No momento, não podemos migrar para uma versão mais recente. Portanto, essa questão está relacionada ao OpenStack 2014.2.2.

Nossa configuração de rede atual (GRE-tunneled) nos obriga a anunciar o MTU de 1454 via DHCP para as VMs convidadas em nossos nós de computação. Estamos cientes de que podemos fazer isso fornecendo a configuração relevante em /etc/neutron/dnsmasq-neutron.conf e especificando isso em /etc/neutron/dhcp_agent.ini . O problema agora é que nos falta o conhecimento Puppet adequado para configurar esses parâmetros como "Puppet-way".

A configuração atual é assim:

(1) Usamos um recurso de arquivo para criar o arquivo dnsmasq-neutron.conf no local apropriado em nosso nó de rede única. Isso obviamente funciona muito bem e acredito que podemos continuar assim.

    file { 'dnsmasq-neutron.conf':
            name => '/etc/neutron/dnsmasq-neutron.conf',
            mode => '0644',
            owner => 'root',
            group => 'neutron',
            content => template('/etc/puppet/manifests/neutron/dnsmasq-neutron.erb')
    }

(2) Atualmente usamos a seguinte maneira realmente ruim de injetar a linha de configuração no arquivo dhcp_agent.ini .

    exec { 'dnsmasq_config-file':
            command => '/usr/bin/echo "dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf" >> /etc/neutron/dhcp_agent.ini && /usr/sbin/service neutron-dhcp-agent restart',
            user => 'root',
    }

Nosso primeiro palpite foi usar Augeas, que não funcionou como pretendido. E sabemos que deve haver uma maneira de definir a propriedade dnsmasq_config_file de maneira limpa e controlada pelo Puppet. Existe, na verdade, um parâmetro para class neutron::agents::dhcp chamado dnsmasq_config_file , cujo padrão é indefinido.

A questão é: Como alguém define corretamente este parâmetro? Nossa configuração atual do nó para o nó da rede pode ser encontrada abaixo.

node 'network.lan' inherits basenode {
    class { '::openstack::role::network' :
        #dnsmasq_config_file => '/etc/neutron/dnsmasq-neutron.conf'
    }

    file { 'dnsmasq-neutron.conf':
        name => '/etc/neutron/dnsmasq-neutron.conf',
        mode => '0644',
        owner => 'root',
        group => 'neutron',
        content => template('/etc/puppet/manifests/neutron/dnsmasq-neutron.erb')
    }

    exec { 'dnsmasq_config-file':
        command => '/usr/bin/echo "dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf" >> /etc/neutron/dhcp_agent.ini && /usr/sbin/service neutron-dhcp-agent restart',
        user => 'root',
    } 
}

A solução fornecida acima funciona. No entanto, os agentes DHCP / dnsmasq são reiniciados duas vezes a cada execução do Puppet. Alguns recursos adicionais, como nossas configurações de firewall, foram retirados do código acima, porque eles apenas sobrecarregariam o exemplo.

    
por Matthias Steinbauer 02.05.2016 / 08:55

0 respostas