Augeas 與 Puppet 管理設定檔

栏目: 服务器 · 发布时间: 5年前

内容简介:這篇的主角是原生 Puppet 管理檔案使用 File 管理的是整個檔案內容,但是在某種情況下僅需要管理單一行設定,之前其實有介紹過file_line 這個由 Puppet 官方開發的 Module,除此之外 Puppet 就是利用 Augeas 這個工具來管理「單行設定」。Augesa 的核心有一部分是使用

這篇的主角是 Augesa 這個工具,Puppet 只是配角,原因是 Puppet 管理設定檔有一部分採用了 Augeas 這個強大的工具。

原生 Puppet 管理檔案使用 File 管理的是整個檔案內容,但是在某種情況下僅需要管理單一行設定,之前其實有介紹過file_line 這個由 Puppet 官方開發的 Module,除此之外 Puppet 就是利用 Augeas 這個 工具 來管理「單行設定」。

Augesa 的核心有一部分是使用 Stock lenses 來參考設定檔的資訊,大部分在 Linux 上的設定檔都可以在 Stock lenses 找到,自定義的 xml、JSON、ini 也都可以管理。

安裝 Augeas 參考 官方文件 ,一般需要兩個套件

  • augeas-tools
  • augeas-lenses

在這篇提供幾種使用情境

使用 ag command line 管理 json 檔案

$ augtool -A
 
augtool> set /augeas/load/Json/lens Json.lns
augtool> set /augeas/load/Json/incl /var/lib/transmission/.config/settings.json
augtool> load
  • 使用 Set 先把 Json 的 lenses 和要管理的 settings.json 讀進來
  • augeas print 測試讀 setting.json 是否正常

使用 ag command line 管理 /etc/yum.repo.d/epel.repo 檔案

$ augtool -A
 
augtool> set /augeas/load/Yum/lens Yum.lns
augtool> set /augeas/load/Yum/incl /etc/yum.repos.d/epel.repo
augtool> load
augtool> print /files
 
/files
/files/etc
/files/etc/yum.repos.d
/files/etc/yum.repos.d/epel.repo
/files/etc/yum.repos.d/epel.repo/epel
/files/etc/yum.repos.d/epel.repo/epel/name = "Extra Packages for Enterprise Linux 7 - $basearch"
/files/etc/yum.repos.d/epel.repo/epel/mirrorlist = "http://mirrors.fedoraproject.org/mirrorlist?repo=epel-7&arch=$basearch"
/files/etc/yum.repos.d/epel.repo/epel/enabled = "1"
/files/etc/yum.repos.d/epel.repo/epel/gpgcheck = "1"
/files/etc/yum.repos.d/epel.repo/epel/gpgkey = "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"
/files/etc/yum.repos.d/epel.repo/epel/failovermethod = "priority"
/files/etc/yum.repos.d/epel.repo/epel/exclude[1] = "puppet*"
/files/etc/yum.repos.d/epel.repo/epel/exclude[2] = "*augeas*"
  • 因為 agueas 剛好有支援 Yum.lns 格式就直接 Set 讀進來
  • augeas print 測試讀 epel.repo 是否正常

在 EPEL 這個 yum repository 加一筆 includepkgs=ossec-hids*

augtool> set /files/etc/yum.repos.d/epel.repo/epel/includepkgs "ossec-hids*"
augtool> print /files
/files
/files/etc
/files/etc/yum.repos.d
/files/etc/yum.repos.d/epel.repo
/files/etc/yum.repos.d/epel.repo/epel
/files/etc/yum.repos.d/epel.repo/epel/name = "Extra Packages for Enterprise Linux 7 - $basearch"
/files/etc/yum.repos.d/epel.repo/epel/mirrorlist = "http://mirrors.fedoraproject.org/mirrorlist?repo=epel-7&arch=$basearch"
/files/etc/yum.repos.d/epel.repo/epel/enabled = "1"
/files/etc/yum.repos.d/epel.repo/epel/gpgcheck = "1"
/files/etc/yum.repos.d/epel.repo/epel/gpgkey = "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"
/files/etc/yum.repos.d/epel.repo/epel/failovermethod = "priority"
/files/etc/yum.repos.d/epel.repo/epel/exclude[1] = "puppet*"
/files/etc/yum.repos.d/epel.repo/epel/exclude[2] = "*augeas*"
/files/etc/yum.repos.d/epel.repo/epel/includepkgs = "ossec-hids*"
/files/etc/yum.repos.d/epel.repo/includepkg = "ossec-hids*"
augtool> save
Saved 1 file(s)

augease save 後就會寫入檔案。

使用 Puppet augeas 移除 /opt/tomcat/conf/server.xml 內建的 Value 參數。

augeas { 'absent-default-config-server-valve':
  lens    => 'Xml.lns',
  incl    => '/opt/tomcat/conf/server.xml',
  changes => 'rm Server/Service/Engine/Host/Valve',
}

結論

augeas 更好用的地方是在 Shell Script,不需要利用 sed、egrep 等工具 filter

如果是 Puppet 來說,file_line、augeas 兩者的選擇需要照情境來選擇。

參考:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

海星模式

海星模式

奥瑞·布莱福曼、罗德·贝克斯特朗 / 李江波 / 中信出版社 / 2008-1 / 36.00元

如果砍掉一只蜘蛛的脑袋,毫无疑问它会死掉;但是砍掉海星的一条手臂,它却会长出一只新的来,就连那只砍掉的手臂也会长成一个完整的新海星。传统意义上自上而下的组织模式就像蜘蛛,然而现在正在改变着企业和世界面貌的却是海星型组织。 维基百科、craigslist和Skype的成功下面隐藏着什么样的力量?易趣公司和通用电气公司与废奴和女权运动又有什么共同之处?到底是什么样的重大选择使得通用汽车公司与丰田......一起来看看 《海星模式》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码