Uninote
Uninote

puppet

puppet简介:

  • cs架构:
    • c一般是puppet客户端程序。c也可以监听8139(默认)端口,让s端来请求(比如server发消息让客户端同步节点配置)。
    • s一般是puppetmaster,监听8140(默认)端口。
    • server通过manifest配置文件来组织和管理客户端(服务器)。证书+主机名配置是控制管理服务器的前提。
  • 原理:
    • 客户端调用facter,facter会探测出这台主机的一些变量如主机名、内存大小、IP地址等。然后puppetd把这些信息发送到服务器端;
    • 服务器端的puppetmaster检测到客户端的主机名,然后会到manifest里面对应的node配置,然后对这段内容进行解析,facter送过来的信息可以作为变量进行处理的,node牵涉到的代码才解析,其它的代码不解析,解析分几个过程:语法检查、然后会生成一个中间的伪代码,然后再把伪代码发给客户机;
    • 客户端接收到伪代码之后就会执行,客户端再把执行结果发送给服务器;
    • 服务器再把客户端的执行结果写入日志。

puppet安装

# machine env: centos7
yum install epel-release
# server
yum install puppet-server
# client
yum install puppet

puppet常用同步配置管理的几种模式

  • client同步server端node的配置
  • server端通知client同步配置
  • server和服务端配置puppet自动按一定的时间间隔同步

配置使用puppet

新建 /etc/puppet/manifests/site.pp文件,示例配置文件如下:

# node default 代表所有节点
# 创建/tmp/test.txt文件,写入"hello world!"
node default {
  file {
	“/tmp/test.txt”:
		content => “hello world!”;
  }
}

常用的几条命令

## client
#向服务器发起证申请也是常用来client同步node配置的命令
pupet agent —server sever-hostname -test

## sever
#颁发证书命令
pupet cert -s client-hostname
pupet cert -a
## 查看正在申请和颁发的证书列表
pupet cert —list --all

资源,配置管理的指令

配置文件中组织node的配置需要用到的指令:

package

# 安装软件screen和ntp,卸载popoe
package{
	[“screen”,”ntp”]:
		Ensure => “installed”;
	“popoe”:
		ensure => “absent”;
}

Service

Service{
	“sshd”:
	ensure => running;
}

Cron

Cron{
	“cron sync time to pool.ntp.org”:
	command=> /usr/sbin/ntpdate pool.ntp.org,
	User=>root,
	Hour=>0,
	minute=>0
}

服务器向客户端推送文件

配置puppet :/etc/puppet/fileserver.conf
[files]
Path /etc/puppet/files
Allow *

# 在对应要推送node添加如下配置:
File {
	“tmp/nginx_install.sh”:
	source =>
		“puppet://server-hostnname/files/nginx_install.sh”,
	group => root,
	owner => root,
	mode => “755”
}

exec

exec{
	“/root/nginx_innstall.sh”:
	command => “/root/nginx_install.sh”,
	cwd => “/root”,
	user => “root”,
	path => [“/usr/bin”,”/usr/sbin”],
	## 服务器上你/root/nginx_install.sh文件有变化才执行exec的命令(前提是要用file指令,将脚本推送)
	Subscribe => file[“/root/nginx_install.sh”]
}

puppet自动认证

  • Kickstart自动安装完系统,装上puppet客户端,修改服务器的hosts解析,并申请证书
  • Dns系统做好映射或者server端hosts要提前做好dns映射管理。
  • 在服务器上的puppet.conf配置文件里面[main]下方添加 autosign = true重启puppetmaster服务(服务器不需要再向客户端颁发证书)

重新颁发证书(cause: 客户端主机名更改)

Rm -rf /var/lib/puppet/ssl/文件夹
Puppet cert —clean client-hostname

puppet自动同步node的配置

客户端配置
Vim /etc/sysconfig/puppet
PUPPET_SERVER=server-hostname
PUPPET_PROT=8140
PUPPET_LOG=/var/log/puppet/puppet.log
PUPPET_EXTRA_OPTS=—waitforcert=500 客户端等待时间s
重启puppet即可
服务端配置
/etc/puppet/puppet.conf
[agent]
run interval = 60 # client60s同步一次配置,默认30分钟

服务器主动推送同步

puppetrun 向客户端发送一段信号,告诉客户端立即同步服务器配置。
修改客户端配置文件, vi /etc/puppet/puppet.conf
[agent]
listen = true // 让puppet监听8139端口
修改客户端puppet的配置文件/etc/sysconfig/puppet
PUPPET_SERVER=server-hostname
vim /etc/puppet/namespaceauth.conf
[puppetrunner]
Allow * // 允许所有主机访问
在客户端修改auth.conf
Path /run
method save
allow *
以上是添加内容
path /

重启puppet
## server 主动推送信号
puppet kick -d  client-hostname //code 0 成功

查找系统的大文件

goweb编程(书名)

点赞(0) 阅读(281) 举报
目录
标题