puppet中如果資源比較多的話,定義模塊和類是比較方便的方式之一,在使用了模塊之後,需要在manifests文件中定義入口文件和節點的清單文件。但是如果想要實現的功能比較簡單的話,可以直接將內容定義到site.pp文件中,不過這樣會顯得site.pp文件會顯得過於的冗長。
在實際生產中,我線上的puppet只是用來同步一些文件和賬號,下面簡明介紹下puppet的設置。
cat site.pp
group {'username':
ensure => present,
}
user { 'username':
ensure => 'present',
home => '/home/username',
managehome => true,
password => ‘******’
password_max_age => '99999',
password_min_age => '0',
shell => '/bin/bash',
require => Group['username'],
}
file_line { 'username':
path => '/etc/sudoers',
line => 'username ALL=(ALL) ALL',
}
file_line這個資源實現的是保證某個配置文件中確定要包含某一行的數據。但是file_line沒有默認安裝,需要安裝一個標準庫。puppet module install puppetlabs-stdlib,安裝上之後,就可以使用了。
下面創建一個file資源
file { "/etc/yum.repos.d/epel.repo":
ensure => "present",
owner => "root",
group => "root",
source => "puppet:///soft/files/epel.repo",
mode => 755,
}
在使用file資源時,source的屬性格式爲puppet:///modules/module_name/file_name,但是現在並沒有使用模塊,這個soft是從何而來呢。
在/etc/puppet目錄下,有一個配置文件叫做fileserver.conf,我們可以通過定義這個配置文件來進行文件目錄的定義
將下面的代碼添加到配置文件中去。
[soft]
path /etc/puppet/manifests
allow *
之後在/etc/puppet/manifests這個目錄下面創建files文件,然後將我們所需的文件在此創建。我們就能使用這個路徑進行文件資源的引用了,從而不必通過模塊的方式。