iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 15
0
DevOps

Ops 的轉職之路 - Puppet 從入門就放棄系列 第 15

Day 15 - Puppet 內建的檔案系統

本系列文資料可參考以下:


今天要廢話的是 Puppet 內建使用的檔案系統,這邊講的檔案系統是指拿來 deploy 到 Node 的檔案方式,各種方式都有優缺點,在以下會開始詳述該怎麼用這些資源。

講到檔案系統,其實就是在講 file 這個 Resource,提供兩種類型 sourcecontent

file 的 source

顧名思義就是這個檔案的來源,那麼可以簡單分為三種 puppet:filehttp:

puppet: 從 Puppet Server 上抓 source

puppet: 是很常用用來 deploy file 的方式,puppet: 可以幫你把 Puppet Server 上的檔案丟到 Node 上面,是拿來做大量佈署很常見的一種方式。

  • Example

ntp.conf 放在 <MODULES DIRECTORY>/ntp/files/ntp.conf 下來讓 file 取得。

file { '/etc/ntp.conf':
  source => [
    "puppet:///modules/ntp/ntp.conf"
  ]
}

或是可以用多個來源 puppet: 合併成一個檔案。

file { '/etc/nfs.conf':
  source => [
    "puppet:///modules/nfs/conf.${host}",
    "puppet:///modules/nfs/conf.${operatingsystem}",
    'puppet:///modules/nfs/conf'
  ]
}

優點:最簡單佈署檔案的方式,無腦。
缺點:設定檔必須放在 module 裡面,會利用多個檔案來合併成一個 file。


file: 從 Node 上抓 source

這算是一個 hard code 的方式,file: 是從 Node 上既有的檔案上取得,這種情況通常比較少。

  • Example

Node/tmp/ntp-example.conf 有既有的檔案提供存取。

file { '/etc/ntp.conf':
  source => 'file:/tmp/ntp-example.conf',
}

優點:沒有優點。
缺點:要確保 Node 上已有檔案,否則會 deploy 失敗。


http: 從 HTTP 上抓 source

這是一個較少人用,但是超好用的 source 取得方式,讓你從 http:// 協議來抓檔案。

  • Example
file { '/etc/ntp.conf':
  source => 'http://website/config/ntp.conf',
}

優點:不適合放在 Puppet 上的檔案可以透過 Web Server 的形式來提供,像是 *.so 這類型的東西。
缺點:要另外維護 Web Server。


file 的 content

content 是用來決定檔案內容,通常會有三種方式。

直接 input 的 content

直接塞檔案內容。

  • Example
file { '/etc/motd':
  content => "The site $fqdn is managed by Puppet.",
}

優點:很直覺,適合簡短的內容。
缺點:不適合有比較多內容的檔案。


file 從 Puppet Server 上抓 content

source 一樣直接指定路徑,只是這邊的路徑是以 Puppet Server 為主。

  • Example

在 Puppet Server 的 /tmp/motd-example 有既有的檔案提供存取。

file { '/etc/motd':
  content => file("/tmp/motd-example"),
}

優點:適合不放在 Puppet Server repository 底下的檔案。
缺點:版控不好做,可能要從 CD 把這類型的檔案 deploy 到 Puppet Server。


templates 從 Puppet Server 上的範本取得

Puppet 要用的好 templates 不能少,利用模版的方式讓所有設定可以參數化。

  • Example

放在 Puppet Server 的 <MODULES DIRECTORY>/motd/templates/motd.erb 這個範本來參考。

file { '/etc/motd':
  content => templates("motd/motd.erb"),
}

優點:要寫一個彈性的設定檔的話非 templates 莫屬。
缺點:要多學習 erb 或 epp 模版語言。

sourcecontent 只能擇一使用,又以 content 搭配 templates 能夠建立非常彈性的 config,templates 將在下篇介紹。


上一篇
Day 14 - 用 eyaml-hiera 來處理機敏資料
下一篇
Day 16 - 手把手系列 - 用 templates 來處理檔案內容
系列文
Ops 的轉職之路 - Puppet 從入門就放棄30

尚未有邦友留言

立即登入留言