目的:根据环境的不同设置不同的nginx进程数:生产环境配置为auto,测试环境配置2个,开发环境为1个。
前提:确保所有节点的epel源可用,因为安装nginx需要epel源。
步骤:
1、Master端操作:
①创建如下目录结构
tree /puppet/environment/
/puppet/environment/
├── dev
│ ├── manifests
│ └── modules
├── prod
│ ├── manifests
│ └── modules
└── test
├── manifests
└── modules
mkdir -pv /puppet/environment/{prod,test,dev}/{modules,manifests}
②在puppet.conf的master段添加environmentpath:指向多环境配置的目录
puppet config --section=master set environmentpath /puppet/environments
如果不想这样指定,可以在/etc/puppet/下建一个软链接environments指向该路径,就不需要改配置文件了
③定义模块,准备相关文件
cd /puppet/environment/prod/
mkdir modules/nginx/{manifests,files -pv}
cp /etc/nginx/nginx.conf modules/nginx/files/
vim modules/nginx/files/nginx.conf
配置进程数为worker_processes auto
④编辑清单文件,定义类:
vim prod/modules/nginx/manifests/init.pp
class nginx {
package{'nginx':
ensure => latest,
} ->
file{'nginx':
ensure => file,
source => 'puppet:///modules/nginx/nginx.conf',
path => '/etc/nginx/nginx.conf',
owner => 'root',
group => 'root',
mode => '0644',
} ~>
service{'nginx':
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
restart => 'usr/sbin/nginx -s reload'
}
}
⑤编辑站点清单文件:
vim prod/manifests/site.pp
node 'server1.tingjie.com'{
include nginx
}
⑥配置testing环境和development环境的文件
cp -r modules/nginx/ /puppet/environment/test/modules/
cp -r modules/nginx/ /puppet/environment/dev/modules/
cp manifests/site.pp /puppet/environment/test/manifests/
cp manifests/site.pp /puppet/environment/dev/manifests/
vim test/modules/nginx/files/nginx.conf
worker_processes 2;
vim dev/modules/nginx/files/nginx.conf
worker_processes 1;
puppet parser validate test/modules/nginx/ 可以检查语法错误
最终的目录结构如下:
tree /puppet/environment/
/puppet/environment/
├── dev
│ ├── manifests
│ │ └── site.pp
│ └── modules
│ └── nginx
│ ├── files
│ │ └── nginx.conf
│ └── manifests
│ └── init.pp
├── prod
│ ├── manifests
│ │ └── site.pp
│ └── modules
│ └── nginx
│ ├── files
│ │ └── nginx.conf
│ └── manifests
│ └── init.pp
└── test
├── manifests
│ └── site.pp
└── modules
└── nginx
├── files
│ └── nginx.conf
└── manifests
└── init.pp
⑦重启服务:systemctl restart puppetmaster.service
2、server1端测试:
systemctl stop puppetagent.service
使用下面的命令可以看过程,当然也可以直接重启服务
puppet agent -v --noop --environment=prod --no-daemonize
puppet agent -v --noop --environment=test --no-daemonize
puppet agent -v --noop --environment=dev --no-daemonize
如果想固定一台机器使用的环境为prod,那么
vim /etc/puppet/puppet.conf
environment = prod
重启服务即可