APP下载

使用Puppet实现自动化

2017-03-09

网络安全和信息化 2017年9期
关键词:客户机服务器端命令

Puppet是其基于C/S架构,在Puppet的服务器端存储着所有对客户端服务器的配置代码,这在Puppet中称为Manifest(清单)。清单存放在PupppetMaster服务器上,当Puppet客户端下载了Manifest之后,可以根据清单对服务器进行配置。根据以上介绍可以看出,Puppet的主要功能就是实现自动化运维。

安装Puppet服务器和客户端程序

在 本 例 中,Puppet服 务 器 端 的IP为192.168.1.100,名 称 为“server1.com”,Puppet客户端 的 IP为192.168.1.101,名称为“client1.com”。

在服务器端以Root账户登录,执行“hostname”命令查看主机名信息。

执行“cat/etc/hosts”命令,查看IP和域名的对应信息。

执 行“scp /etc/hosts 192.168.1.101:/etc/”命令,输入客户端的Root密码后,将Hosts文件复制到客户机上。

在另一个控制台界面中执 行“ssh 192.168.1.101”命令,输入客户端的Root密码,登录到客户机上。

执行“cat/etc/hosts”命令,查看复制过去的Hosts文件信息。

执行“cat/etc/ntp.conf”命令,查看其中保存的时间服务器信息,选择某台时间服务器。

执行“ntpdate 0.rhel.pool.ntp.org”之类的指令,实现时间同步操作。

也可以执行“crontab-e */5 * * * * /usr/sbin/ntpdate 0.rhel.pool.ntp.org&”命令,让时间同步每隔5分钟进行一次。按照上述方法,保证服务器端和客户端时间同步。

执行“cat/etc/sysconfig/network”命令,在其中编写“NETWORKING=yes”,“HOSTNAME=server1.com”语句,让主机名永久生效。在客户端上执行同样的操作。

在服务器上执行“yum install ruby -y”命令,安装Ruby开发环境。

执行“yum install openssl openssl-devel”命令,安装OpenSSL组件。

执行“tar zxvf facter-1.6.7.tar.gz” 命令,对Facter包进行解压,进入“facter-1.6.7”目录,执行“ruby install.rb”命令,安装Factor组件。

执行“tarzxvf puppet-2.7.13.tar.gz”命令,对Puppet包进行解压。

进入“puppet-2.7.13”目录,执行“ruby install.rb”命令,安装Puppet软件。在客户端上也执行同样的安装操作。

执行“cp conf/auth.conf /etc/puppet/auth.conf”命令,生成Puppet的权限控制文件,该是用于客户端访问Puppet服务器的ACL文件,用于判断允许哪些客户端拥有访问的权限。

执行“cp conf/redhat/fileserver.conf/etc/puppet/”,“cp conf/redhat/puppet.conf /etc/puppet/”命令,复制所需的文件。前者作为文件服务器的ACL文件,后者是Puppet服务器的配置文件。

执行“mkdir /etc/puppet/manifests” 命令,创建存储清单的目录,这是Puppet脚本的主目录,应该包含诸如“site.pp”,“site.pppuppet”等文件,所有要在服务器上执行的操作都保存在以“.pp”为后缀的文件中。

例如,执 行“cp conf/redhat/server.init/etc/init.d/puppetmaster”,“chmod+x/etc/init.d/puppetmaster”命令,复制所需的文件并为其配置权限。

执行“chkconfig puppetmaster on”命令,设置开机自启动脚本。

为了顺利的运行Puppet,需要为其配置合适的账户。执行“puppetmasterd--mkusers”命令,创建对应的账户。

执行“grep puppet/etc/passwd”命令,显 示名 为“puppet”的账户信息。当准备好各种条件后,就可执行“/etc/init.d/puppetmaster start”命令,来启动PuppetMaster服务。

执行“netstat-antup |grep 8140”命令,显示关联的网络连接处于监听状态。

执行“lsof-i:8140”命令,显示是Puppetmas进程打开了该端口。

在客户端上执行同样的安装操作,来安装Ruby,Facter和 Puppet。

注意,客户端准备的是Puppetd的配置文件。

在Puppet安装路径中进入“conf”目录,将其中的“auth.conf”,“namespaceauth.conf”文件复制到“/etc/puppet”目录中,进入“conf/redhat”目录,将其中的“pupet.conf”文件也复制过去,同时将“client.init”文件复制到“/etc/init”目录中,将其更名为“puppet”。

执行“chmod +x/etc/init.d/puppet”命令,为其设置执行权限。

执行“chkconfig puppetd on”命令,将其设置wield开启启动状态。

为了让客户端准确找到Puppet服务器,需要执行“vim /etc/puppet/puppet.conf”命令,在该配置文件中的“[agent]”段中添加“server = server1.com”,“certname = server1.com”两行,告诉客户端服务器的名称以及证书的名称。

同样地,在客户端也需要执行“puppetmasterd--mkusers”命令,创建名为“puppet”的账户。

执行“/etc/init.d/pupet start”命令,启 动Puppet客户端程序。

为了保证双方的通讯安全,客户端需要先向服务器发送签名请求,在客户端 执 行“rm-rf/var/lib/puppet/ssl/*”命令,将无关的认证文件删除。

执行“puppetd--test--server server.com”命令,生成证书请求文件。

在服务器上执行“puppetca--list”命令,查看证书请求信息。

执行“puppetca-s client.com”命名,对指定客户端请求进行签名处理。

进入“/var/lib/puppet/ssl/ca/signed”目录,看到生成的指定客户端的证书文 件,例如“client1.com.pem”。

当然,如果想对所有客户端请求进行签名,可以执行“puppet-a-s”命令来实现。执行“puppetca-a--list”命令,在列表中出现“+”符号的证书表示签署成功。

在客户端执行“/etc/init.d/pupetd restart”命令,重启Pupper服务。

然后可以自动从服务器上下载证书,执行“ls /var/lib/puppet/ssl/certs”命令,可以看到从服务器上得到的证书文件,然后就可以使用新的CA证书进而服务器进行通讯了。

实例讲解Puppet运维功能

下面使用简单的例子,来说明使用Puppet实现自动化操作的方法。例如在客户端的“/tmp”目录下创建名为“test.txt”的文件,在其中写入一些文本。

在服务器端进入“/etc/puppet/manifests”目 录,执行“vim site.pp”命令,在该入口文件中逐行写入:“node default{”,“file{"/temp/test.txt":”,“content=>"hello,World!";”,“}”,“}”等内容。

其中的“default”表示针对所有的客户端,当然也可以输入特定的客户端名称,表示仅仅针对该客户端有效。

服务器之所以可以找到客户端信息,是因为Factor组件在发挥作用。在“file”部分设置需要写入的文件信息。

执行“/etc/init.d/pupetmaster restart”命令,重启Pupper服务,让上述配置信息生效。在默认情况下,每隔30分钟,客户端可以和服务器进行一次同步。

当然,您可以根据实际需要,来修改默认的同步时间。

在客户机上执行“vim/etc/puppet/puppet.conf”命令,在该配置文件中的“[agent]”段中添加“runinterval=60”行,表示将间隔时间设置为60秒。根据上述配置信息,在客户端上创建预设的文件。

也可以在客户端上执行执 行“/etc/init.d/puppet restart”命令,重启Puppet服务,让其立即和服务器端进行同步。然后进入“/tmp”目录,就会发现名为“test.txt”的文件。

当 然,执行“puppet--test --server server1.com”命令,也可以实现同样的效果。

接下来举例说明如何分发文件,例如,将服务器上“/opt”目录下的“test.c”文件分发到客户端的“/opt”目录下。

当然,不要发布“/root”目录下的文件,避免权限问题的干扰。该例子主要模拟软件包的更新操作。

在服务器上执行“vim/etc/puppet/fileserver.conf”命令,在其中添加“[files]”,“path /opt/”,“allow 192.168.1.0/24”行,即允许指定网段的主机同步“/opt”目录下的内容。

执 行“vim/etc/puppet/manifests/pp.site”命令,在其中添加“file { "/opt/test.c":”,“source =>"puppet://$puppetserver/files/test.c",”,“owner=> "puppet",”,“group=> "puppet",”,“mode =>777,”,“}”行,其 中 的“/opt/test.c”为同步到客户端的路径,“$puppetserver”表示服务器的IP。这里的“files”必须和上述配置文件中的小节名一致。

注意,因为在“site.pp”文件中已经存在内容,所以上述部分应该插入到最后两个“}”之间。在其中设置了权限信息,即针对该文件为“Puppet”账户设置了指定的权限。

然后直接在客户端上执行“puppet--test--server server1.com”命令,可以立即实现文件分发操作。

如果想在客户机上执行脚本,可以按照上述方法,对服务器上“site.pp”文件进行编辑,在其中 添 加“file{ "/opt/test.sh":”,“source=>"puppet://$puppetserver/files/test.sh",”,“owner=>"puppet",”,“group=>"puppet",”,“mode=>755,”,“}”,“exec { "execmkdir":”,“cwd =>"/opt",”,“command =>"sh /opt/test.sh",”,“user =>"puppet",”,“path =>"/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"”,“}”行。

其作用是先将服务器上的“/opt”目录下的“test.sh”脚本文件同步到客户端上的“/opt”目录下,并为其设置针对“Puppet”账户的执行权限,之后在客户机上执行该脚本文件。

其中的“cwd”参数表示进入指定的路径,“command”参数表示执行目标脚本文件,“path”参数指明环境变量信息。

然后直接在客户端上执行“puppetd--test--server server1.com”命令,可以立即同步并执行该脚本文件。

在Linux中存在很多服务,如果想对客户机上的服务进行控制(例如启动或关闭等),也可以利用Puppet来实现。

例如,可以按照上述方法,对服务器上“site.pp”文件进行编辑,在其中添加“service {”,“"vsftpd":”,“ensure => stopped;”,“"nfs":”,“ensure =>running;”,“}”行,可 以 将“vsftp”服务关闭,将“NFS”服务重启。

直接在客户端上执行“puppet --test --server server1.com”命令,可以立即对指定的服务的状态进行调整了。

猜你喜欢

客户机服务器端命令
Reducing the global cancer burden with gastrointestinal screening: China’s 30 years practice
只听主人的命令
移防命令下达后
浅析异步通信层的架构在ASP.NET 程序中的应用
这是人民的命令
在Windows中安装OpenVPN
蓝色命令
网页防篡改中分布式文件同步复制系统
瘦客户机:安全与便捷的选择
基于Web数据提高访问速度的方法