2016-05-06 2 views
0

У меня есть марионеточный код для nginx.conf. Файл создан source => puppet://path to file, которые содержат требуемое содержимое файла. Я не хочу нарушать этот файл, потому что он используется по умолчанию.Как добавить файл в кукольный

Я должен добавить этот файл nginx.conf, который может быть развернут на конкретном узле, где это необходимо. Итак, я написал отдельный модуль, который отвечает за новые изменения. Но этот модуль зависит от предыдущего модуля, который содержит файл nginx.conf.

if ! defined(File['/etc/nginx/nginx.conf']) { file { '/etc/nginx/nginx.conf' : ensure => present, owner => root, group => root, mode => '0644', source => 'puppet:///modules/path/to/file/nginx_default.conf', require => Package[ 'nginx' ], notify => Service[ 'nginx'], } }

Как я могу добавить файл nginx.conf, не мешая выше кода?

ответ

0

Я бы рекомендовал использовать модули Nginx от Puppet Forge. Главное преимущество модулей в том, что вам не нужно изобретать велосипед, вы можете повторно использовать модули или адаптировать их к вашим потребностям.

Это все равно позволит вам иметь nginx.conf по умолчанию (в качестве шаблона) и с помощью классов вы сможете переименовать шаблон nginx.conf по своему вкусу.

т.е.

host_1.pp:

class { 'nginx': 
    # Fix for "upstream sent too big header ..." errors 
    fastcgi_buffers  => '8 8k', 
    fastcgi_buffer_size => '8k', 
    ssl_ciphers   => 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256', 
    upstream => { 
    fpmbackend => 'server unix:/var/run/php-fpm-www.sock', 
    }, 
} 

host_2.pp:

class { 'nginx': 
    # Fix for "upstream sent too big header ..." errors 
    fastcgi_buffers  => '8 8k', 
    fastcgi_buffer_size => '36k', 
    upstream => { 
    fpmbackend => 'server unix:/var/run/php-fpm-host2.sock', 
    }, 
} 

Однако, если вы все еще хотите использовать модули, которые вы можете установить Nginx .conf как template и заселите его variables из вас c hoosing на основе среды/хоста по вашему выбору.

Это внесет наименьшее изменение в ваш код.

Хотя ИМО в долгосрочной перспективе с использованием правильных модулей сообщества будет лучше окупаться для вас и нашей команды.

+0

Спасибо за ваше предложение, но у меня есть ограничение на него. Если я использую этот модуль, мне нужно будет заменить мои существующие модули, которые используются для определения файла nginx.conf. –

+0

Да, всегда есть эта проблема. Однако, как и при любом рефакторинге кода, вам нужно подумать о том, насколько он улучшит вашу жизнь/проект и время, необходимое для внедрения нового кода.Так что, если это всего лишь несколько часов для внедрения изменений, а также простых и чистых изменений конфигурации в будущем, то это может стоить того. Или это может быть чуть более усложняющей настройкой, это ваш звонок. Если вы опубликуете новые вопросы с существующим модулем, возможно, я помогу вам его изменить. – MMT

0

Я использовал exec, чтобы добавить файл, так как существует множество ограничений, чтобы попробовать другие способы добавления нового модуля.

Я создал один файл, содержащий добавочные строки, а затем удалил его.

include existing::module if ! defined (File["/new/path/for/temp/file/nginx_append.conf"]) file{"/new/path/for/temp/file/nginx_append.conf": ensure => present, mode => 755, owner => 'root', group => 'root', source => 'puppet:///modules/module-name/nginx_append.conf', } } exec {"nginx.conf": cwd => '/new/path/for/tenter code hereemp/file', command => "/bin/cat /new/path/for/temp/file/nginx_append.conf >> /etc/nginx/nginx.conf && rm /new/path/for/temp/file/nginx_append.conf", require => [ Service["nginx"]], }

Спасибо MichalT за вашу поддержку ...

Смежные вопросы