Augeas 與 Puppet 管理設定檔

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

内容简介:這篇的主角是原生 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 兩者的選擇需要照情境來選擇。

參考:


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

查看所有标签

猜你喜欢:

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

Java学习指南(第4版)(上下册)

Java学习指南(第4版)(上下册)

Patrick Niemeyer、Daniel Leuck / 李强、王建新、吴戈 / 人民邮电出版社 / 2014-7 / 128.00元

《Java学习指南(第4版)(上、下册)》是畅销Java学习指南的最新版,详细介绍了Java 6和Java 7的语言特性和API。本书全面介绍了Java的基础知识,力图通过完备地介绍Java语言、其类库、编程技术以及术语,从而成为一本名符其实的入门级图书。 《Java学习指南(第4版)(上、下册)》加入了从Java 6和Java 7发布以后的变化,包括新的语言功能、并发工具(Fork-Joi......一起来看看 《Java学习指南(第4版)(上下册)》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具