puppet 有兩種將節點資訊儲存在外部的方法:
1.使用外部節點分類器 (enc)
2.使用ldap伺服器分類
主要學習使用enc(外部節點分類器)。enc是一種提供puppet 查詢節點資料的基於指令碼(shell、ruby、perl等)整合系統,這個指令碼返回類、繼承、變數和環境設定,puppet可用來定義乙個節點和配置主機。
ldap:是允許你查詢ldap(輕型目錄訪問協議)的目錄來獲取節點的資訊。這種整合方式用得沒有enc那麼多。列如你的資產管理資料庫或者乙個ldap的dns後端來提供節點資料
使用外部節點,無論是通過enc還是ldap,都是在大規模主機中擴充套件puppet實現的推薦方式。
使用enc的根本原因之一是在於我們的nodes全部定義在/etc/puppet/manifests/site.pp檔案中,如果我們有太多的nodes的話,會使site.pp檔案變得很大!
一般的操作都是在/etc/puppet/manifests/ 目錄下根據每個node的定義不同,建立多個nodes檔案,之後在site.pp中import所有的nodes定義檔案
import 『nodes*.pp』
這樣就包含了所有的node,但是隨著你node的增多,你需要手工管理太多的檔案
要使用enc,首先需要更改master的配置檔案:
cd /etc/puppet/
[root@mobim-kvm puppet]# vi puppet.conf
######檔案最後面追加##
[master]
node_terminus = exec
external_nodes = /etc/puppet/puppet_node_classifer.pl
需要重啟puppetmaster 服務
[root@mobim-kvm puppet]# service puppetmaster restart
停止 puppetmaster: [確定]
啟動 puppetmaster: [確定]
修改這個配置設定,就是說:
1. puppet master接收到乙個node的請求的時候,如果 node_terminus 配置為exec,將輸出node的fqdn給external_nodes
2.external_nodes接收到agent的主機名,並將主機名傳遞給/etc/puppet/puppet_node_classifer.pl
指令碼的配置:
[root@mobim-kvm puppet]# cat puppet_node_classifer.pl
#!/usr/bin/perl -w
use strict;
use yaml qw(dump);
my $hostname = shift || die "no hostname passed";
$hostname =~ /^([\w-]+)\_vm(\d[0-9]?)/i or die "invalid hostname :$hostname";
my @classes = ('rsync','rsync_svn_up');
my %parameters = (
puppetserver => "mobim-kvm"
);print dump();
[root@mobim-kvm puppet]# perl puppet_node_classifer.pl mobim_vm1
---classes:
- rsync
- rsync_svn_up
parameters:
puppetserver: mobim-kvm
這個是乙個yaml的格式,相當於
node mobim_vm1
rsync rsync_svn_up 是定義的類
以上的配置檔案的修改和指令碼都是在master上進行的,在client上請求master進行資料同步
[root@mobim_vm1 /]# puppet agent --server=mobim-kvm --test -v
info: caching catalog for mobim_vm1
notice: /stage[main]/rsync_svn_up/file[svn_up_file]/ensure: defined content as '4221d002ceb5d3c9e9137e495ceaa647'
info: /stage[main]/rsync_svn_up/file[svn_up_file]: scheduling refresh of exec[echo file]
notice: /stage[main]/rsync_svn_up/exec[echo file]: triggered 'refresh' from 1 events
notice: finished catalog run in 0.60 second
ok,一切正常的,這個是簡單的enc的應用例項,
error
err: could not retrieve catalog from remote server: error 400 on server: could not find class svn for mobim_vm1 on node mobim_vm1
warning: not using cache on failed catalog
err: could not retrieve catalog; skipping run
配置好enc時,有遇到上面的error資訊,提示我在master上找不到node ssl證書
解決辦法:
給指令碼附加可執行的許可權
chmod -r 775 /etc/puppet/puppet_node_classifer.pl
ISpace學習筆亡記一
idbcommand 表示連線到資料來源時執行的 sql 語句,並且是由訪問關聯式資料庫的 net framework 資料提供 程式實現的。實現 idbcommand 的類 類 說明 odbccommand 表示要對資料來源執行的 sql 語句或儲存過程。不能繼承此類。oledbcommand 表...
C語言程式學習(三)筆記
實現變數的需要 1.有地方放輸入的數字 2.有辦法輸入數字 3.輸入的數字能參與計算。輸入行為是以行為單位進行的,按下回車鍵就是行的結束,按下回車鍵時,程式不會讀到任何東西 int price 0 變數的名字是price,型別是int,初始值是0 變數是乙個儲存資料的地方 變數定義一般形式 型別名稱...
C語言程式學習(四)筆記
乙個表示式是一系列運算子和運算元的組合,用來計算乙個值 運算子 operator 是指進行運算的動作,比如加法運算子 減法運算子 運算元 operand 是指參與運算的值,這個值可能是常數,也可能是變數,還可能是乙個方法的返回值。只有乙個運算元的運算子 優先順序比乘除高。int a 10 int b...