zoukankan      html  css  js  c++  java
  • puppet安装和配置

    一、安装puppet准备

    //安装准备 ,两台机器都要操作
    
    1. 两台机器 
    172.7.15.106 (server)
    
    172.7.15.111 (client)
    
    2. 关闭防火墙
    
    setenforce 0 
    
    iptables -F 
    
    3. 设置hostname
    
    server :  hostname(web9.lulu.com) --> vi /etc/sysconfig/network 将hostname定义进去
    
    client : hostname (web10.lulu.com) --> vi /etc/sysconfig/network 将hostname定义进去
    
    4. 编辑hosts文件
    vi /etc/hosts
    //ADD
    172.7.15.106 web9.lulu.com
    172.7.15.111 web10.lulu.com
    
    5. 两台机器都安装ntpdate
    
    yum install -y ntp
    
    6. 建立自动同步时间的任务计划
    
    crontab -e 
    //ADD
    
    */10 * * * * ntpdate time.windows.com >/dev/null 2>&1

    二 、安装puppet

    //server (106) 操作
    [root@web9 ~]# rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
    [root@web9 ~]# ls /etc/yum.repos.d/           //查看上一步是否安装成功
    puppetlabs.repo 
    [root@web9 ~]# yum install -y puppet-server
    [root@web9 ~]# service puppetmaster start
    [root@web9 ~]# chkconfig puppetmaster on
    
    
    
    //client (111)操作
    [root@web10 ~]#  rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
    [root@web10 ~]#  yum install -y puppet 
    [root@web10 ~]#  vi /etc/puppet/puppet.conf
    //末尾增加
    listen = true 
    server = web9.lulu.com
    runinterval = 30  //主动更新,每隔30s
    
    [root@web10 ~]#  service puppet start
    [root@web10 ~]#  chkconfig puppet on

    三、 配置认证

    //server 端查看客户端证书列表
    [root@web9 ~]# puppet cert list --all    //如果签发的证书,会在行首代一个+
    
    //client 端生成ssl证书
    [root@web10 ~]# puppet agent --test --server web9.lulu.com
    
    //server 端签发指定客户端证书
    [root@web9 ~]# puppet cert --sign web10.lulu.com
    
    //server 端可以删除指定客户端证书
    [root@web9 ~]# puppet cert clean web10.lulu.com
    
    //删除所有证书
    [root@web9 ~]# puppet cert clean --all

    此处遇到的错误:

    Exiting; no certificate found and waitforcert is disabled
    
    --> 
    [root@web10 ~]# /etc/init.d/puppet stop
    [root@web10 ~]# rm -rf /var/lib/puppet/ssl/*
    [root@web10 ~]# /etc/init.d/puppet start

    四、 配置自动签发证书

    //server
    [root@web9 ~]# puppet cert clean web10.lulu.com  //服务端删除客户端证书
    
    //client 
    [root@web10 ~]# rm -rf /var/lib/puppet/ssl/*    //删除客户端ssl相关文件 */
    
    //server
    [root@web9 ~]# vim /etc/puppet/autosign.conf     //创建自动签发的配置文件
    //ADD
    *.lulu.com
    [root@web9 ~]# /etc/init.d/puppetmaster restart  
    
    //client
    [root@web10 ~]# /etc/init.d/puppet restart
    
    //server
    [root@web9 ~]# puppet cert list --all 
    
    IF
    客户端不重启puppet服务,也可以通过命令来自动签发
    [root@web10 ~]# puppet agent --test --server web9.lulu.com        

    五、测试证书

    //server
    [root@web9 ~]# vi /etc/puppet/manifests/site.pp      
    /*配置了此文件,客户端才会同步数据*/
    //ADD
    node default {
                file { "/tmp/123.txt"
                    content => "test,test";
                }}
    
    //client  
    1. 稍等一会儿 ---执行 {因为设置了每隔30s执行任务}
    
    
    2. 
    [root@web10 ~]# puppet agent --test --server web9.lulu.com
    [root@web10 ~]# ls /tmp/
    123.txt 
    [root@web10 ~]# cat /tmp/123.txt
    test,test

    六、定义模块

    //server
    
    /*创建一个名为testm的模块*/
    [root@web9 ~]# mkdir /etc/puppet/modules/testm
    
    /*在模块下创建子目录*/
    [root@web9 ~]# cd /etc/puppet/modules/testm
    [root@web9 testm]# mkdir {files,mainfests,templates}
    [root@web9 testm]# ls
    files  mainfests  templates
    
    /* files 存放目录
    
        maindests 存放主配置文件
    
        templates  存放模版文件 --> 模版文件会定义一些配置
    
    */
    
    [root@web9 testm]# cd files/
    [root@web9 files]# vim lulu.txt    //与下面的init.pp的source对应
    //ADD
    ksajdksdj
    kjasdkjs
    aksdjksd
    [root@web9 files]# cd ..
    [root@web9 testm]# cd mainfests
    [root@web9 mainfests]# vim init.pp
    //ADD
    class testm{
            file { "/tmp/2.txt" :
                            owner => "root",
                            group => "root".
                            mode => 0400,
                            source => "puppet://$puppetserver/modules/testm/lulu.txt"
                }}
    //server
    [root@web9 ~]# vi /etc/puppet.manifests/site.pp
    //ADD
    $puppetserver='web9.lulu.com'
    node 'web10.lulu.com'{
            incluede testm
    }
    
    
    //client 
    [root@web10 ~]# puppet agent --test --server web9.lulu.com

    七、文件或目录资源

    //刚刚的模块只是同步了一个文件,现在需要同步一个目录
    
    /*例如,现在一台机器已经编译安装好了Apache,
    
    现在通过一个模块同步Apache目录到其他机器上*/
    
    [root@web9 testm]# cd manifests/
    [root@web9 manifests]# vi init.pp
    //ADD ,此文件可定义多个file,多个class
    class apache {
               file { "/usr/local/apache2":
                        owner => "root",
                        group => "root",
                        source => "puppet://$puppetserver/modules/apache/apache2",
                        recurse => true,
                        purge => true
                    }}
    /* recurse 递归 -- 没有这个不能同步目录
    
        purge 可保证当服务端删除某个文件,客户端跟着删除
    */
    
    [root@web9 manifests]# vi /etc/puppet/manifests/site.pp
    //ADD
    ...
    ...
    include apache     //将刚刚添加的apache这个类添加进去
    ...

    //client
    [root@web10 ~]# ls /usr/local/apache2
    /usr/local/apache2        //已存在,成功

    八、远程执行命令

    //server 
    [root@web9 puppet]# vi modules/testm/manifests/init.pp
    //ADD
    ...
    ...
    exec { "123":
               unless => "test -f /tmp/linux.txt",
                path => ["/bin", "/sbin", "/usr/bin", "/usr/sbin"],
                command => "touch /tmp/linux.txt"
    }
    
    //client 
    [root@web10 ~]# ls -lt /tmp/
    -rw-r--r--. 1 root root 0 12月 20 16:03 linux.txt

    九、配置任务计划cron

    [root@web9 puppet]# vim modules/testm/manifests/init.pp
    //ADD
    ...
    ...
    cron {"lulu1":
            command => "/sbin/ntpdate time.windows.com",
            user => "root",
            minute => "*/10",
            #ensure => "absent"
            }
    /* ensure 设置为 absent  -- 删除该任务
    
        不设置 改行则建立 
    */
    
    /* 关于时间,不设置则保持默认。
    
        包括:
                minute , hour , monthday , month ,weekday
    */
  • 相关阅读:
    【Python】python3.6中实现同一行动态输出
    【Python】将python3.6软件的py文件打包成exe程序
    【Java】分布式RPC通信框架Apache Thrift 使用总结
    【Java】加载驱动方法
    【Java】Comparable和Comparator接口的区别
    【Java】接口(interface)VS抽象类
    【Ubuntu】PHP环境安装-phpstudy for linux版
    【Ubuntu】xrdp完美实现Windows远程访问Ubuntu 16.04
    【系统设计】会议室预定系统房间预定系统设计
    jmeter场景设计:业务占比
  • 原文地址:https://www.cnblogs.com/frankielf0921/p/5453117.html
Copyright © 2011-2022 走看看