Puppet 用 Puppetfile (librarian-puppet) 來管理 modules

2017-05-28 Puppet

在 Puppet Enterprise 裡面有提到「Managing environment content with Puppetfiles」可以用 Puppetfile 來管理你的 module,但是 Puppetfile 官方僅有在 Enterprise 裡面才有支援,後來在 Puppet 的非官方社群「voxpupuli」提供的 librarian-puppet 工具讓 Open Source 也能享受 Puppetfile 的功能

 

在之前沒有 librarian-puppet 的時候,你必須使用 Puppet module install 來管理,或是把它加到現有的 Git repository

 

librarian-puppet 就像是 bundler,編寫 Puppetfile 後可以透過 librarian-puppet install 來安裝到 modules 目錄,

 

安裝 librarian-puppet

用 gem 來安裝 librarian-puppet

 

用 init 生成 Puppetfile

 

 

Puppetfile 的寫法

Puppetfile 能讓你寫 metadata.json 或是 modulefile 指定 dependencies

 

一個範例的 Puppetfile:

 

  • forge 指定從 https://forgeapi.puppetlabs.com 下載
  • mod 從 forge 指定 modules
  • :path 從 local 上拉 modules ,這邊範例 Role and Profile pattern 的 modules
  • :git 從 Git 上拉 modules
  • :ref 可以指定 branch (:ref => ‘feature/master/dans_refactor’ ) 或是 tag (:ref => ‘4.0.0’),要特別注意,在 r10k 裡面指定 ref 的方式是 :branch, :tag, :commit,和這裡不同

 

寫好之後就可以來安裝 Puppet modules

 

install 後會產生 .tmp、.librarian、Puppetfile.lock、modules,一般會把 .tmp、moduels 加到 .gitignore 裡面,因為用 Puppetfile 來管理 modules 了,而 .tmp 是 cache module 的檔案。

 

還有一些日常用法:

查看 modules

 

更新 dependencies

 

更新 modules

 

Done !!

 

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱