咱們爲puppetmaster創建3個環境,它們分別是開發環境(jqdev)、測試環境(jqtest)、生產環境(jqprd).node
3.1 配置puppet.confapp
在標籤[master]中添加environments環境,其次建立對應的環境標籤及配置建立目錄測試
[root@puppetmaster1 puppet]# cd /etc/puppet/spa
[root@puppetmaster1 puppet]# mkdir -p environments/jqdevrest
[root@puppetmaster1 environments]# mkdir -p jqdev/{application/modules,environment/modules}server
[root@puppetmaster1 puppet]# mkdir -p environments/jqprdssl
[root@puppetmaster1 environments]# mkdir -p jqprd/{application/modules,environment/modules}開發
[root@puppetmaster1 puppet]# mkdir -p environments/jqtestrem
[root@puppetmaster1 environments]# mkdir -p jqtest/{application/modules,environment/modules}部署
移動默認環境modules中的配置到jqprd對應的環境中
其中puppet和yum模塊屬於基礎環境模塊,motd屬於應用環境模塊,關於此類puppet,yum,motd模塊方案,請參見kisspuppet.com。
[root@puppetmaster1 environments]# mv /etc/puppet/modules/puppet jqprd/environment/modules/
[root@puppetmaster1 environments]# mv /etc/puppet/modules/yum jqprd/environment/modules/
[root@puppetmaster1 environments]# mv /etc/puppet/modules/motd jqprd/application/modules/
複製manifests文件至jqprd環境中
[root@puppetmaster1 environments]# cp /etc/puppet/manifests jqprd/ -r
刪除掉默認環境manifests中site.pp文件內容
由於模塊已經移除,其次默認環境production已經再也不使用了。
[root@puppetmaster environments]# >/etc/puppet/manifests/site.pp
建立fileserverconfig文件
[root@puppetmaster ~]# cp /etc/puppet/fileserver.conf{,.jqdev}
[root@puppetmaster ~]# cp /etc/puppet/fileserver.conf{,.jqtest}
[root@puppetmaster ~]# cp /etc/puppet/fileserver.conf{,.jqprd}
[root@puppetmaster ~]# ll /etc/puppet/
total 88
-rw-r--r-- 1 root root 2569 Jan 7 07:51 auth.conf
-rw-r--r-- 1 root root 17 Mar 9 17:54 autosign.conf.bak
drwxr-xr-x 5 root root 4096 Mar 27 22:33 environments
-rw-r--r-- 1 root root 381 Jan 7 07:49 fileserver.conf
-rw-r--r-- 1 root root 381 Mar 27 22:46 fileserver.conf.jqdev #指向jqdev環境
-rw-r--r-- 1 root root 381 Mar 27 22:46 fileserver.conf.jqprd #指向jqmq環境
-rw-r--r-- 1 root root 381 Mar 27 22:46 fileserver.conf.jqtest #指向jqdev環境
drwxr-xr-x 2 root root 4096 Mar 25 05:23 manifests
drwxr-xr-x 2 root root 4096 Mar 27 22:40 modules
-rw-r--r-- 1 root root 1063 Mar 27 21:55 puppet.conf
-rw-r--r-- 1 root root 853 Mar 9 00:48 puppet.conf.bak
-rw-r--r-- 1 root root 42031 Mar 9 03:25 puppet.conf.out
最後配置puppetmaster配置文件
[root@puppetmaster1 puppet]# grep -v "#" ./puppet.conf
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = puppetmaster1.jq.com
certname = puppetmaster1_cert.jq.com
[master]
certname = puppetmaster1.jq.com
environments = jqdev,jqtest,jqprd
basemodulepath = /etc/puppet/modules:/usr/share/puppet/modules
[jqdev]
modulepath = $confdir/environments/jqdev/environment/modules:$confdir/environments/jqdev/application/module
manifest = $confdir/environments/jqdev/manifests/site.pp
fileserverconfig = /etc/puppet/fileserver.conf.jqdev
[jqtest]
modulepath = $confdir/environments/jqtest/environment/modules:$confdir/environments/jqtest/application/modules
manifest = $confdir/environments/jqtest/manifests/site.pp
fileserverconfig = /etc/puppet/fileserver.conf.jqtest
[jqprd]
modulepath = $confdir/environments/jqprd/environment/modules:$confdir/environments/jqprd/application/modules
manifest = $confdir/environments/jqprd/manifests/site.pp
fileserverconfig = /etc/puppet/fileserver.conf.jqprd
重啓puppetmaster服務
[root@puppetmaster1 ~]# /etc/init.d/puppetmaster restart
Stopping puppetmaster: [ OK ]
Starting puppetmaster: [ OK ]
在客戶端測試
[root@ag1 yum.repos.d]# puppet agent -t --environment=jqprd
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for ag1_cert.jq.com
Info: Applying configuration version '1419413649'
本系統puppet均根據kisspuppet的博客(http://kisspuppet.com/)進行實驗,很是感謝!!!
3.7的版本,多環境變量,配置有變動,詳情以下:
完全搞定。詳情以下: [root@pm01 jqprd]# grep -v "#" /etc/puppet/puppet.conf [main] logdir = /var/log/puppet rundir = /var/run/puppet ssldir = $vardir/ssl privatekeydir = $ssldir/private_keys { group = service } hostprivkey = $privatekeydir/$certname.pem { mode = 640 } environment_timeout = 2s environmentpath = $confdir/environments basemodulepath = $config/modules:/usr/share/puppet/modules [agent] classfile = $vardir/classes.txt localconfig = $vardir/localconfig server = pm01.jq.com certname = pm01.jq.com pluginsync = true environment = jqprd [master] certname = pm01.jq.com ssl_client_verify_header = HTTP_X_CLIENT_VERIFY ssl_client_header = HTTP_X_CLIENT_DN reports = foreman external_nodes = /etc/puppet/node.rb node_terminus = exec jqprd下的配置文件以下: [root@pm01 jqprd]# pwd /etc/puppet/environments/jqprd [root@pm01 jqprd]# cat environment.conf modulepath = $basemodulepath:/etc/puppet/environments/jqprd/environment/modules:/etc/puppet/environments/jqprd/application/modules 樹狀結構以下: [root@pm01 environments]# tree ./jqprd/ ./jqprd/ ├── application │ └── modules │ └── motd │ ├── files │ │ └── etc │ │ └── motd │ ├── manifests │ │ └── init.pp │ └── templates ├── environment │ └── modules │ ├── facts │ │ ├── files │ │ │ └── facts.d │ │ │ ├── ag01.txt │ │ │ ├── ag02.txt │ │ │ └── pm01.txt │ │ ├── lib │ │ │ └── facter │ │ │ └── hwclock.rb │ │ ├── manifests │ │ │ ├── config.pp │ │ │ ├── exec.pp │ │ │ └── init.pp │ │ └── templates │ ├── puppet │ │ ├── files │ │ ├── manifests │ │ │ ├── config.pp │ │ │ ├── init.pp │ │ │ ├── install.pp │ │ │ ├── params.pp │ │ │ ├── params.pp.bak │ │ │ └── service.pp │ │ └── templates │ │ └── puppet.conf.erb │ └── yum │ ├── files │ │ ├── etc │ │ │ └── yum.conf │ │ └── PM-GPG-KEY │ │ └── RPM-GPG-KEY-CentOS-6 │ ├── manifests │ │ ├── config.pp │ │ ├── init.pp │ │ ├── install.pp │ │ └── params.pp │ └── templates ├── environment.conf ├── hiera │ ├── ag01.yaml │ ├── ag02.yaml │ ├── ag2.yaml.bak │ ├── common.yaml │ ├── pm01.yaml │ └── RedHat.yaml └── manifests ├── site.pp └── site.pp.bak 28 directories, 31 files