自动化运维之Puppet

系统自动安装工具 PXE 一个PXE只能安装同一种系统

灰度发布 旧版本不删除 出现问题回滚

puppet 有agent ansible 无agent,ansible没有angent 基于ssh传输 不安全,ansible定义角色 和 puppet定义模块是一样的 相当于函数 实现代码重用,puppet的agent 接收server端指令 并完成相应的管理功能 并把执行结果返回给server

模块是由资源清单组成

#列出Puppet支持的所有资源类型
[root@bogon ~]#  puppet describe -l
#查看某资源详细描述 
[root@bogon ~]#  puppet describe package
# <user group>
[root@bogon mainfests]# mkdir mainfests
[root@bogon mainfests]# vim test1.pp 
    group {'disto':
            gid     => 2000,
            ensure  => present
    }

    user {'cent':
            uid     => 2000,
            gid     => 2000,
            shell   => '/bin/bash',
            home    => '/home/cent',
            ensure  => 'present'
    }
[root@bogon mainfests]# puppet apply -v test1.pp 

[root@bogon mainfests]# tail /etc/group
[root@bogon mainfests]# tail /etc/passwd
# <file>
[root@bogon mainfests]# vim test2.pp
    file {'/tmp/mydir':
            ensure  => directory

    }
    file {'/tmp/puppet.file':
            content => 'haha,woshipuppet',
            ensure  => file,
            owner   => 'cent',
            group   => 'disto',
            mode    => '0400'
    }
    file {'/tmp/puppet.link':
            target  => '/tmp/puppet.file',
            ensure  => link
    }
    file {'/tmp/fstab.puppet':
            source  => '/etc/fstab',
            ensure  => file
[root@bogon mainfests]# puppet apply -v test2.pp
[root@bogon mainfests]# ll /tmp
# <exec>
[root@bogon mainfests]# vim test3.pp
    exec {'/usr/sbin/modprobe ext4':
            user    => root,
            group   => root,
            refresh => '/usr/sbin/modprobe -r ext4 && /usr/sbin/modprobe ext4',
            timeout => 5,
            tries   => 2
    }
    exec {'/bin/echo "xuuxe" > /tmp/xuxue.txt':
            user    => root,
            group   => root,
            creates => '/tmp/xuxue.txt' #该路径文件不存在时 则执行echo命令
    }
    exec {'/bin/echo chun > /tmp/chun.txt':
            user    => root,
            group   => root,
            unless  => '/usr/bin/test -e /tmp/heh.txt'#该命令执行失败 则执行echo命令

    }
[root@bogon mainfests]# puppet apply -v test3.pp
# <notify>
[root@bogon mainfests]# vim test4.pp
    notify{'hi notify':
    }
[root@bogon mainfests]# puppet apply -v test4.pp
# <cron>
[root@bogon mainfests]# vim test5.pp
    cron {'sync time':
            command => '/usr/sbin/ntpdate 192.168.1.17 &> /dev/null',
            minute  => '*/2'
    }
[root@bogon mainfests]# puppet apply -v test5.pp
[root@bogon mainfests]# crontab -l
# <package>
[root@bogon mainfests]# vim test6.pp
package {'zsh':
        ensure  => latest
}
package {'jdk':
        ensure  => installed,
        source  => '/usr/local/src/jdk-8u25-linux-x64.rpm',
        provider        => rpm

}
[root@bogon mainfests]# puppet apply -v test6.pp
# <service>
[root@bogon mainfests]# vim test7.pp
    package {'nginx':
            ensure  => latest
    }
    service {'nginx':
            ensure  => running,
            enable  => true,
            hasrestart      => true,
            hasstatus       => true,
            restart => 'systemtctl reload nginx.service'
    }
[root@bogon mainfests]# puppet apply -v test7.pp
#依赖关系
    资源引用
        Type['title']
    依赖关系
        被依赖资源中使用:before
        依赖其它资源的资源:require
        ->:链式依赖

[root@bogon mainfests]# vim test8.pp
    group {'linux':
            gid     => 3000,
            ensure  => present,
            #before         => User['suse']
    }#->

    user {'suse':
            uid     => 3000,
            gid     => 3000,
            shell   => '/bin/bash',
            home    => '/home/suse',
            ensure  => 'present',
            #require        => Group['linux']
    }
    #  依赖关系  before  => User['suse']等同于->等同于require => Group['linux']
[root@bogon mainfests]# puppet apply -v test8.pp
#通知关系
    资源引用
        Type['title']
    依赖关系
        被依赖资源中使用:notify
        监听其它资源的资源:subscribe
        ~>:链式通知


[root@bogon mainfests]# setenforce 0
[root@bogon mainfests]# mkdir /root/modules/nginx/files -pv
[root@bogon mainfests]# cp /etc/nginx/nginx.conf /root/modules/nginx/files
[root@bogon mainfests]# vim /root/modules/nginx/files/nginx.conf 
        #修改端39行口号测试   listen       808 default_server;

[root@bogon mainfests]# vim test9.pp
    package {'nginx':
            ensure  => latest
    }
    file {'/etc/nginx/nginx.conf':
            ensure  => file,
            source  => '/root/modules/nginx/files/nginx.conf',
            require => Package['nginx'],
            notify  => Service['nginx']
    }

    service {'nginx':
            ensure  => running,
            enable  => true,
            hasrestart      => true,
            hasstatus       => true,
            require => [ Package['nginx'],File['/etc/nginx/nginx.conf'] ]
    }

[root@bogon mainfests]# puppet apply -v test9.pp
[root@bogon mainfests]# ss -tnl
#条件判断
[root@bogon mainfests]# vim test11.pp
    if $processorcount>1 {
            notice ('SMP HOST')
    }else {
            notice ('poor guy')
    }
[root@bogon mainfests]# puppet apply -v test11.pp

[root@bogon mainfests]# vim test12.pp
    if $operatingsystem =~/^(?i-mx:(centos|redhat|fedora|ubuntu))/ {
            notice("welcome $1 hahhah")
    }
[root@bogon mainfests]# puppet apply -v test12.pp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值