歡迎您光臨本站 註冊首頁

puppet cookbook 中文翻譯節選

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

puppet cookbook 中文翻譯節選

puppet cookbook 中文翻譯節選

從puppet filebucket恢復文件
有鉛筆就有橡皮擦,因為我們都會犯錯,每當puppet檢測到客戶端文件變化時,
它會對當前版本做個備份,我們可以看到這一過程,在puppet運行實例中,
我們替換一個現有存在的文件,並且文件內容有變化,我們看示例:

root@cookbook:/etc/puppet# puppet agent --test
info: Caching catalog for cookbook
info: Applying configuration version '1293459139'
--- /etc/sudoers 2010-12-27 07:12:20.421896753 -0700
+++ /tmp/puppet-file20101227-1927-13hjvy6-0 2010-12-27
07:13:21.645702932 -0700
@@ -12,7 +12,7 @@
# User alias specification
-User_Alias SYSOPS = john
+User_Alias SYSOPS = john,bob
info: FileBucket adding /etc/sudoers as {md5}c07d0aa2d43d58ea7b5c5307
f532a0b1
info: /Stage/Admin::Sudoers/File: Filebucketed /
etc/sudoers to puppet with sum c07d0aa2d43d58ea7b5c5307f532a0b1
notice: /Stage/Admin::Sudoers/File/content:
content changed '{md5}c07d0aa2d43d58ea7b5c5307f532a0b1' to '{md5}0d218
c16bd31206e312c885884fa947d'
notice: Finished catalog run in 0.45 seconds
我們感興趣的是下面這行:

info: /Stage/Admin::Sudoers/File: Filebucketed /
etc/sudoers to puppet with sum c07d0aa2d43d58ea7b5c5307f532a0b1
puppet會根據文件內容創建一個MD5 哈希,並使用它來創建一個filebucket.
filebucket是基於哈希的前幾個字元,filebucket的作用是來保存puppet
替換下來的任何文件的副本,它存放的默認位置是 /var/lib/puppet/clientbucket:
• root@cookbook:/etc/puppet# ls /var/lib/puppet/clientbucket/c/0/7/
d/0/a/a/2/c07d0aa2d43d58ea7b5c5307f532a0b1
contents paths
你在bucket存放位置會看到兩個文件:contents和paths.contens即為原始文件內容,
paths即為原始文件的路徑。
如果你知道文件內容的哈希值(像你看到的上面的例子),可以很容易找到該文件,
如果你不知道,在整個filebucket中創建以文件內容為表,並建立索引文件將非常有用。
How to do it…
1.使用如下命令創建索引文件:
find /var/lib/puppet/clientbucket -name paths -execdir cat {} \;
-execdir pwd \; -execdir date -r {} +"%F %T" \; -exec echo \; > bucket.txt

2.在索引文件中查找文件:
cat bucket.txt
/etc/sudoers
/var/lib/puppet/clientbucket/c/0/7/d/0/a/a/2/c07d0aa2d43d58ea7b5c5
307f532a0b1
2010-12-27 07:13:21
/etc/sudoers
/var/lib/puppet/clientbucket/1/0/9/0/e/2/8/a/1090e28a70ebaae872c2e
c78894f49eb
2010-12-27 07:12:20
如果你想恢復文件,並且知道他的bucket path,那麼只需要複製文件內容到原始文件,即可。
cp /var/lib/puppet/clientbucket/1/0/9/0/e/2/8/a/1090e28a70ebaae872
c2ec78894f49eb/contents /etc/sudoers
How it works…
剛那個腳本會創建一份完整的filebucket文件列表清單,顯示原始文件的名稱,以及bucket的路徑,
以及修改日期,(在上例中你學習到了如何恢復文件到以前版本),一旦你知道bucket的路徑,那麼
你就可以複製文件到正確的位置。
There』s more
你可以指定puppet在原始目錄下創建備份文件,而不是在filebucket.要想做到這一點,你只需要在代碼
中添加backup參數:
file { "/etc/sudoers":
mode => "440",
source => "puppet:///modules/admin/sudoers",
backup => ".bak",
}
現在如果puppet要替換上面的文件,會在原始路徑(/etc)下面創建一個擴展名為.bak的備份文件,如果
你想puppet默認在替換文件前先備份這一策略,可以這樣做:

File {
backup => ".bak",
}
要完全禁用備份,可以這樣做:
backup => false,

使用自動簽名
在密碼學中,跟生活一樣,你必須小心你的簽名,一般來說,每當puppetmaster新增一個客戶端,你需要
在客戶端上生成一個證書請求,然後你要到puppetmaster給它ssl 簽名(puppetca -s hostname)。然而,
你可以使用自動簽名(autosign)跳過這一步驟。
How to do it ..
1.在puppetmaster上創建/etc/puppet/autosign.conf文件,添加如下內容:
*.example.com ##請根據實際情況,修改為你客戶機所對應的域名
How it works..
puppet 會檢查所有的證書請求是否匹配autosign.conf中任何一行,
客戶端主機名匹配*.example.com的任何證書請求,puppetmaster都會自動簽名。
重要:這是個潛在的安全問題,因為puppetmaster信任任何客戶端連接,只要主機名
匹配,出於這個原因,不建議使用autosigning,如果你真的要這樣做用,確保puppetmaster
受防火牆保護,只允許信任的客戶端或者ip段連接,一個更安全的方法是使用pre-signing.
Pre-signing certificates (預簽名)
這裡有一個剛才簽名過的例子,一般來說,如果你要自動的加入大量
客戶端,最好在puppetmaster上預先給客戶端簽名,然後推送相應ssl
證書到客戶端,這是整個過程,你可以使用puppetca –generate
生成證書。
How to do it…
1.給clietn1.example.com預先生成ssl證書。
puppetca --generate client1.example.com

puppet會生成並簽名一個證書名為clietn1.example.com.
2. 複製三個文件到新的客戶端:客戶端證書的私鑰,客戶端證書和CA證書。這三個文件所在位置為:

/etc/puppet/ssl/private_keys/client1.example.com.pem
/etc/puppet/ssl/certs/client1.example.com.pem
/etc/puppet/ssl/certs/ca.pem
複製上述三個文件到客戶端相應的目錄下,puppet 會自行進行身份驗證可以省略ssl證書請求這一步驟。

原文地址:http://www.mysqlops.com/2011/12/07/puppet-cookbook-zhongwen.html
《解決方案》

謝謝分享

[火星人 ] puppet cookbook 中文翻譯節選已經有704次圍觀

http://coctec.com/docs/service/show-post-1113.html