Database
使用 Puppet 安裝、initdb 和啟動 Postgres 數據庫
我們正在嘗試編寫一個 Puppet 來配置虛擬機。其中一項任務是使用數據安裝和填充 Postgres 數據庫。
我們可以把這個任務分解成幾個更小的任務:
- 安裝
- 初始化數據庫
- 開始
- 用數據填充數據庫(來自生產數據庫的 pg_dump)
看來 Puppet 將負責第 1 步:安裝。
我們是否也應該使用 Puppet 來執行步驟 2、3、4?
使用 puppet 時的常見模式是管理包的安裝、配置和服務狀態。只要確保冪等性,您的最後一步也可以實現。用於此類任務的(非常)簡單的骨架:
class foo ( $some_param_in_hiera, ){ package { 'foo_pkg': ensure => installed, } service { 'foo_svc': ensure => running, enable => true, hasstatus => true, require => Package['foo_pkg']; } file { '/etc/foo/some.conf': mode => '0644', owner => root, group => root, source => 'puppet:///modules/foo/some.conf', #content => template('foo/some.conf.erb'), require => Package['foo_pkg'], notify => Service['foo_svc']; } exec { 'some_task': command => 'echo 'foo bar baz'', refreshonly => true, creates => '/some/file/to/ensure/idempotency' } }
此外,檢查Puppet Forge是否已經存在符合您要求的程式碼。