2016-05-06 189 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

我建议使用Puppet Forge的Nginx模块,模块的主要优点是您不必重新发明轮子,您可以重新使用模块或使其适应您的需求。

这仍然允许你有一个默认的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根据您选择的环境/主机进行启动。

这会对您的代码做最少的更改。

尽管IMO长期使用正确的社区模块将为您和我们的团队带来更好的回报。

+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的支持...