2016-05-06 220 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的支持...