Наша установка OpenStack развернута вместе с Puppet. Мы используем отличные puppetlabs-openstack
модуль для этого. Из-за медленных циклов оборота мы все еще придерживаемся версии 5.0.2
, прямо сейчас мы не можем позволить себе перейти на более новую версию. Итак, этот вопрос относится к OpenStack 2014.2.2.
Наша текущая сетевая конфигурация (с туннелированием через GRE) вынуждает нас объявить MTU 1454 через DHCP для гостевых виртуальных машин на наших вычислительных узлах. Мы прекрасно понимаем, что можем сделать это, предоставив соответствующую конфигурацию в /etc/neutron/dnsmasq-neutron.conf
и указав это в /etc/neutron/dhcp_agent.ini
. Проблема в том, что нам не хватает необходимых знаний о Puppet, чтобы настроить эти параметры «Puppet-way».
Текущая конфигурация выглядит так:
(1) Мы используем файловый ресурс для создания 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')
}
(2) В настоящее время мы используем следующий действительно плохой способ внедрения строки конфигурации в 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',
}
Нашим первым предположением было использование Augeas, который не работал должным образом. И мы знаем, что должен быть способ просто установить dnsmasq_config_file
собственность чистым способом, управляемым Марионеткой. Фактически есть параметр для class neutron::agents::dhcp
называется dnsmasq_config_file
который по умолчанию не определен.
Вопрос в том: Как правильно установить этот параметр? Наша текущая конфигурация узла для сетевого узла может быть найдена ниже.
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',
}
}
Приведенное выше решение работает. Однако агенты DHCP / dnsmasq перезапускаются дважды при каждом запуске Puppet. Некоторые дополнительные ресурсы, такие как настройки брандмауэра, были удалены из приведенного выше кода, потому что они только загромождали бы пример.