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 文件?

4

2 回答 2

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

于 2016-05-10T10:48:03.287 回答
0

我建议使用Puppet Forge的 Nginx 模块,这些模块的主要好处是您不必重新发明轮子,您可以重用这些模块或根据您的需要调整它们。

这仍然允许您拥有默认的 nginx.conf(作为模板),并且通过使用类,您可以根据自己的喜好重新调整 nginx.conf 模板的用途。

IE:

主机_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',
  },
}

主机_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 设置为模板,并根据您选择的环境/主机填充您选择的变量。

这将对您的代码进行最少的更改。

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

于 2016-05-06T21:36:34.170 回答