Database

使用 Puppet 安裝、initdb 和啟動 Postgres 數據庫

  • May 31, 2013

我們正在嘗試編寫一個 Puppet 來配置虛擬機。其中一項任務是使用數據安裝和填充 Postgres 數據庫。

我們可以把這個任務分解成幾個更小的任務:

  1. 安裝
  2. 初始化數據庫
  3. 開始
  4. 用數據填充數據庫(來自生產數據庫的 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是否已經存在符合您要求的程式碼。

引用自:https://serverfault.com/questions/512179