Puppet部署应用简介:
puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
Puppet工作方式:
puppet既可以在单机上使用,也可以以C/S结构使用.
在大规模使用puppet的情况下,通常使用C/S结构;在这种结构中puppet客户端是只运行puppet的服务器,puppet服务器端是只运行puppetmaster的服务器.
实验一:
全部主机:
部署环境:
wget https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-12.noarch.rpm
rpm -ivh puppetlabs-release-7-12.noarch.rpm
cd /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
cat << EOF >> /etc/hosts
192.168.1.10 master.puppet.com
192.168.1.11 client01.puppet.com
192.168.1.12 client02.puppet.com
EOF
master:
安装并启动 Puppet 服务端
hostnamectl set-hostname master.puppet.com
bash
yum install -y puppet-server
systemctl start puppetmaster
systemctl enable puppetmaster
clien1和clien2:
安装 Puppet Client
hostnamectl set-hostname client01.puppet.com
hostnamectl set-hostname client02.puppet.com
bash
yum install -y puppet
修改客户端配置文件
在 /etc/puppet/puppet.conf 文 件 中 的 [main] 标 题 下 添 加 “server =
master.puppet.com”配置字段用于设置 Puppet Master 的域名
vim /etc/puppet/puppet.conf
#添加以下内容:
server = master.puppet.com
客户端申请注册
等待一会儿,可以按 Ctrl+C 结束,从服务器端查看到申请信息
puppet agent --server=master.puppet.com --no-daemonize --verbose
master:
Master 端查看申请注册的客户端
puppet cert --list
在 Master 上,将所有申请未注册的客户端进行注册
puppet cert sign --all
注册成功后,可以通过目录去查看已经注册的客户端
ll /var/lib/puppet/ssl/ca/signed/
Master 上创建需要的目录
cd /etc/puppet/
mkdir -p modules/ssh/{manifests,templates,files}
mkdir manifests/nodes
mkdir modules/ssh/files/ssh
chown -R puppet modules/
查看/etc/puppet/modules/ssh 目录下的结构
ll modules/ssh
创建模块配置文件 install.pp
vim /etc/puppet/modules/ssh/manifests/install.pp
添加以下内容:
class ssh::install{
package{ "openssh":
ensure => present,
}
}
创建模块配置文件 config.pp
vim /etc/puppet/modules/ssh/manifests/config.pp
添加以下内容:
class ssh::config{
file { "/etc/ssh/sshd_config":
ensure => present,
owner =>"root",
group =>"root",
mode =>"0600",
source =>"puppet://$puppetserver/modules/ssh/ssh/sshd_config",
require => Class["ssh::install"],
notify => Class["ssh::service"],
}
}
创建模块配置文件 service.pp
vim /etc/puppet/modules/ssh/manifests/service.pp
添加以下内容:
class ssh::service {
service {"sshd":
ensure=>running,
hasstatus=>true,
hasrestart=>true,
enable=>true,
require=>Class["ssh::config"]
}
}
创建模块主配置文件 init.pp
vim /etc/puppet/modules/ssh/manifests/init.pp
添加以下内容:
class ssh{
include ssh::install,ssh::config,ssh::service
}
此时,/etc/puppet/modules/ssh/manifests 目录下有四个文件
ll /etc/puppet/modules/ssh/manifests/
建立服务器端 ssh 统一维护文件
cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/
chown -R puppet /etc/puppet/modules/ssh/files/ssh/
创建测试节点配置文件
vim /etc/puppet/manifests/nodes/ssh.pp
添加以下内容:
node 'client01.puppet.com'{
include ssh
}
node 'client02.puppet.com'{
include ssh
}
将测试节点载入 Puppet,即修改 site.pp
vim /etc/puppet/manifests/site.pp
添加以下内容:
import "nodes/ssh.pp"
修改服务端维护的 sshd_config 配置文件
vim /etc/puppet/modules/ssh/files/ssh/sshd_config
修改Port取消注释并改为9922
Port 9922
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
重新启动 Puppet Master 服务
systemctl restart puppetmaster