日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Puppet 之 模板和模块

發布時間:2023/11/29 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Puppet 之 模板和模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1? 概述


模板文件是在puppet模塊下面templates目錄中以”.erb”結尾的文件,puppet模板主要用于文件,例如各種服務的配置文件,相同的服務,不同的配置就可以考慮使用模板文件。

模塊是Puppet自包含的代碼和數據集合。絕大多數的清單都可以放到模塊中,唯一的例外是manifests下的主清單site.pp,包含站點級和節點級的代碼。

本文將結合例子介紹如何使用模板和模塊


2? 模板


2.1 概念介紹


puppet模板是采用erb模板語言,embedded ruby來創建

puppet兼容的erb語法鏈接:https://docs.puppet.com/puppet/latest/reference/lang_template_erb.html

定義模板文件放置的路徑

file{'title': ensure?=>?file, path?????=>? content????=>?template('/PATH/TO/ERB_FILE'), }

#注意,content要根據template來處理

文本文件/PATH/TO/ERB_FILE中內嵌變量替換機制:這個格式要注意,如下:


<%=?@VARIABLE_NAME?%>

2.2 例子?


例1??配置nginx模板

準備nginx配置模板,修改nginx配置的work_processes為變量

vim??nginx.conf.erb worker_processes?<%=?@processorcount?%>;

定義類

vim?nginx.pp class?nginx?{package{'nginx':ensure?=>?latest;}?->file{'/etc/nginx/nginx.conf':ensure?=>?file,content?=>?template('/root/nginx.conf.erb'),}?~>service{'nginx':ensure?=>?running,}??? } include?nginx

執行腳本


puppet?apply?nginx.pp

例2??配置redis從節點

修改從的redis配置文件為模板文件,注意,用class來傳遞變量,調用類

vim?redis_slave.pp class?redis?{package{'redis':ensure?=>?latest,}???service{'redis':ensure?=>?running,enable?=>?true,hasrestart?=>?true,restart?=>?'service?redis?restart',require?=>?Package['redis'],}??? } class?redis::slave($masterip,$masterport='6379')?inherits?redis?{file{'/etc/redis.conf':ensure?=>?file,content?=>?template('/root/puppet/redis.module/redis-slave.conf.erb'),owner?=>?redis,group?=>?root,require?=>?Package['redis'],}???Service['redis']?{restart?=>?'systemctl?restart?redis.service',subscribe?=>?File['/etc/redis.conf'],}??? } class{'redis::slave':masterip?=>?'172.18.50.73'; }

修改配置文件為模板

vim?redis-slave.conf.erb slaveof?<%=?@masterip?%>?<%=?@masterport?%>

執行該腳本

puppet?apply?redis_slave.pp

3? 模塊


3.1? 概念介紹


模塊就是一個按約定的、預定義的層級結構存放了多個文件或子目錄的目錄,目錄里的這些文件或子目錄必須遵循一定格式的命名規范;?

puppet會在配置的路徑下查找所需要的模塊;

MODULES_NAME:

manifests/

init.pp

files/

templates/

lib/

spec/

tests/

模塊名只能以小寫字母開頭,可以包含小寫字母、數字和下劃線;但不能使用”main"和"settings“;

manifests/

init.pp:必須一個類定義,類名稱必須與模塊名稱相同;

files/:靜態文件;

puppet URL:

puppet:///modules/MODULE_NAME/FILE_NAME #這里不需要指定絕對路徑,因為路徑是固定的

templates/:

tempate('MOD_NAME/TEMPLATE_FILE_NAME')

lib/:插件目錄,常用于存儲自定義的facts以及自定義類型;

spec/:類似于tests目錄,存儲lib/目錄下插件的使用幫助和范例;

tests/:當前模塊的使用幫助或使用范例文件;

注意:

1、puppet 3.8及以后的版本中,資源清單文件的文件名要與文件子類名保持一致,例如某子類名為“base_class::child_class”,其文件名應該為child_class.pp;

2、無需在資源清單文件中使用import語句;

3、manifests目錄下可存在多個清單文件,每個清單文件包含一個類,其文件名同類名;

puppet config命令:

獲取或設定puppet配置參數;

puppet config print [argument]

puppet查找模塊文件的路徑:modulepath

puppet config print modulepath

set更改參數的值,以下命令更改后直接保存在配置文件里

例子

puppet config set server master.sunny.com

查看配置文件/etc/puppet/puppet.conf ,[main]段多了如下一行

server = master.sunny.com

模塊放置路徑:/etc/puppet/modules

要共享自己編寫的模塊,可以放到puppet? forge上,這個網站:https://forgeapi.puppetlabs.com是用來存放模塊

如在Puppet Forge中搜索redis模塊

????puppet module search redis


3.2? 例子??開發redis模塊


參加模塊相關目錄,注意路徑結構

mkdir -pv /etc/puppet/modules/redis/{manifests,files,templates,lib,spec,tests}

建議先在其他路徑下,如/root下創建一個modules模塊,等模板都編輯完成后在拷貝到/etc/puppet/modules下。

mkdir -pv /root/modules/redis/{manifests,files,templates,lib,spec,tests}

把靜態文件放到files里,模板文件(erb格式)放到templates里

cp /root/puppet/redis.module/redis-master.conf /root/modules/redis/files/

cp /root/puppet/redis.module/redis-slave.conf.erb /root/modules/redis/templates/

在manifests下定義和模塊名同名的類,在init.pp里,同時定義master.pp和slave.pp的子類,模塊方式注意文件的路徑的定義有簡化的

格式 和絕對路徑兩種,因為在模塊下,文件放置的路徑是固定的,所以,用相對路徑就可以查找到配置文件模板的路徑

source 定義模板的路徑

source?=>?'puppet:///modules/MOD_NAME/FILE_NAME',

例子

source?=>?'puppet:///modules/redis/redis-master.conf',

等價于寫絕對路徑

source?=>?'/etc/puppet/modules/redis/files/redis-master.conf',

content定義模板的路徑

格式 content? =>? template('MOD_NAME/ERB_FILE')

例子

content?=>?template('redis/redis-slave.conf.erb'),

等價于寫絕對路徑

content?=>?template('/etc/puppet/modules/redis/templates/redis-slave.conf.erb'),vim?/root/modules/redis/manifests/init.pp class?redis?{package{'redis':ensure?=>?latest,}???service?{'redis':ensure?=>?running,enable?=>?true,hasrestart?=>?true,restart?=>?'service?redis?restart',require?=>?Package['redis'],}??? }vim?/root/modules/redis/manifests/master.pp class?redis::master?inherits?redis?{file{'/etc/redis.conf':ensure?=>?file,source?=>?'/etc/puppet/modules/redis/files/redis-master.conf',owner?=>?redis,group?=>?root,require?=>?Package['redis'],}???Service['redis']{restart?=>?'systemctl?restart?redis',subscribe?=>?File['/etc/redis.conf'],}??? }

#slave配置文件,這里利用變量來傳遞參數

vim?/root/modules/redis/manifests/slave.pp class?redis::slave($masterip,$masterport='6379')?inherits?redis?{file{'/etc/redis.conf':ensure?=>?file,content?=>?template('/etc/puppet/modules/redis/templates/redis-slave.conf.erb'),owner?=>?redis,group?=>?root,require?=>?Package['redis'],}???Service['redis']{restart?=>?'systemctl?restart?redis',subscribe?=>?File['/etc/redis.conf'],}??? }

#注意修改配置文件如下

vim??/root/modules/redis/templates/redis-slave.conf.erb slaveof?<%=?@masterip?%>?<%=?@masterport?%>

#目前目錄結構如下

[root@CentOS7C modules]#tree

.

└── redis

? ? ├── files

? ? │? ?└── redis-master.conf

? ? ├── lib

? ? ├── manifests

? ? │? ?├── init.pp

? ? │? ?├── master.pp

? ? │? ?└── slave.pp

? ? ├── spec

? ? ├── templates

? ? │? ?└── redis-slave.conf.erb

? ? └── tests


文件都準備完成后,把redis整個模塊放到對應的軟件指定的目錄/etc/puppet/modules/下

cp?-r?/root/modules/redis/?/etc/puppet/modules/

測試

查看模塊

[root@CentOS7C?~]#puppet?module?list /etc/puppet/modules └──?redis?(???) /usr/share/puppet/modules?(no?modules?installed)

redis模塊后面顯示為???,為redis的相關元數據信息,用來描述模塊的,但是顯示異常,忽略該情況

聲明類

為哪個主機調用這個類,這里演示為當前主機調用,沒有跨主機

注意,調用是指明類名,而不是指明模塊

測試調用基類

puppet?apply?-v?--noop?-d?--test?-e?"include?redis"

測試調用子類,注意slave子類有變量,需要傳遞值

puppet?apply?-v?--noop?-d?--test?-e?"include?redis::master" puppet?apply?-v?--noop?-d?--test?-e?"class?{'redis::slave':?masterip?=>?'172.18.50.73',?masterport?=>?'6379',}"

執行

puppet?apply??-e?"include?redis::master" puppet?apply??-e?"class?{'redis::slave':?masterip?=>?'172.18.50.73',?masterport?=>?'6379',}"


轉載于:https://blog.51cto.com/ghbsunny/2046212

總結

以上是生活随笔為你收集整理的Puppet 之 模板和模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 张柏芝亚洲一区二区三区 | 欧美人日b | 亚洲综合网址 | 欧美日韩国产在线观看 | 久久盗摄| 亚洲成人中文字幕 | 欧美少妇精品 | 国产制服91一区二区三区制服 | 亚欧精品视频一区二区三区 | chinese中国性按摩hd | 91久久中文字幕 | www成年人| 久久黄色精品视频 | 69堂免费视频 | 日韩中文字幕在线播放 | 色网导航站| 国产在线啪 | 免费看国产视频 | 国产在线视频一区 | 欧美色图30p| 嫩草嫩草嫩草嫩草 | 高级家教课程在线观看 | 国产高清中文字幕 | 国产欧美日韩中文字幕 | 国产xxx69麻豆国语对白 | 波多野结衣在线免费视频 | 亚洲精品国产成人av在线 | 经典av在线| 成人av电影免费观看 | 美女张开双腿让男人捅 | 亚洲第九十九页 | 二区三区av | 麻豆传媒网站入口 | 亚洲一区二区三区久久久 | 明日花绮罗高潮无打码 | 亚洲午夜精品福利 | 噼里啪啦免费高清看 | www.爱色av.com | 亚洲欧美黄 | 理论片一级 | 日日碰日日操 | 日韩av男人的天堂 | 999免费视频| 亚洲综合欧美日韩 | 人妻 日韩精品 中文字幕 | 天堂av2014 | 成年精品| 亚洲第一精品在线 | 精品欧美一区二区久久久 | 亚洲第一视频 | 亚洲六月婷婷 | 98久久 | 精品久久国产视频 | 欧美乱论视频 | 日韩在线不卡av | 国产一区二区三区在线看 | 亚洲性生活视频 | 国产黄a| 国产精品黄色网 | 人妖被c到高潮欧美gay | 一区二区三区国产精品 | 欧美一区二区三区在线观看视频 | 91精品国产欧美一区二区 | 别揉我奶头一区二区三区 | 51吃瓜网今日 | 欧美福利在线观看 | 久色视频在线播放 | 日皮毛片 | 黄色小电影网址 | 欧美射| 五月婷婷天堂 | 美女屁股无遮挡 | 欧美做受高潮中文字幕 | 日韩资源| www.四色| 在线免费看mv的网站入口 | 1000部啪啪未满十八勿入 | 毛片免费全部无码播放 | 天天看av| 日韩Av无码精品 | 欧美日韩一区二区三区视频 | 国产亚洲天堂 | 久久情趣视频 | 中文字幕黄色 | 91大神小宝寻花在线观看 | 91在线观看免费高清完整版在线观看 | 国产精欧美一区二区三区白种人 | 91精品国产乱码在线观看 | 美女网站视频在线观看 | 国产黄色影院 | 青青毛片 | 综合伊人久久 | 久久国产激情视频 | 国产精品一区二区黑人巨大 | 色妞网 | 日本高清无吗 | 正在播放adn156松下纱荣子 | 韩日少妇 | 免费播放毛片 |