記Puppet ENC 簡單學習筆記

2021-09-20 16:20:18 字數 2902 閱讀 6869

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...