一、简介
puppet是什么?它能做什么?
puppet是一个IT基础设施自动化运维工具,它能够帮助系统管理员管理基础设施的整个生命周期;比如,安装服务,提供配置文件,启动服务等等一系列操作;基于puppet,可实现自动化重复任务、快速部署关键性应用以及在本地或云端完成主动变更和快速扩展架构规模等;它遵循GPL协议(2.7.0以前),基于ruby语言开发,2.7.0以后使用apache 2.0协议;
puppet架构
提示:puppet是master/agent架构,master和agent使用https通信;puppet有两种工作方式,第一种是standalone模式,这种方式通常运行在单机之上;另一种则是master/agent模式,这种模式master和agent运行在不同的服务器之上;
puppet工作流程
提示:puppet工作流程分4个步骤,第一个步骤是定义manifast,这个步骤由管理员完成,主要通过过puppet的声明性配置语言定义基础设施配置的目标状态;第二个步骤是模拟,所谓模拟就是把我们定义的manifest,在目标主机上试着运行一遍,但不真正的应用(不改变目标主机的状态);这一步主要用来检查我们定义的manifest是否有语法错误等等;第三步是强制,所谓强制就是把目标主机状态强制改变为我们在manifest中定义的状态;最后一步就是报告,报告就是指我们当前目标主机的状态和manifest中定义的状态的不同,以及达成目标状态所进行的改变信息;
puppet standalone模式工作过程
提示:在单机模式下,puppet的执行过程如上图;首先puppet会把我们写的manifest文件进行编译,编译成为代码这个为代码有点类似java中的字节码;然后puppet把编译的结果应用到对应的目标主机上;在应用之前它首先要对比目标主机当前状态和我们定义的目标状态是否一样,如果一样则跳过不更改其状态,如果不一样则强制让目标主机当前状态和我们定义的目标状态一样,最后将执行的过程报告给管理员;这里值得注意的是,在单机模型下,puppet应用manifest时,是我们人工手动指定来应用;
puppet master/agent模式工作过程
https://github.com/users/zenglvnieki2/projects/555
https://github.com/users/hhcarm7521/projects/543
https://github.com/users/zenglvnieki2/projects/556
https://github.com/users/hhcarm7521/projects/544
https://github.com/users/zenglvnieki2/projects/557
https://github.com/users/hhcarm7521/projects/545
https://github.com/users/zenglvnieki2/projects/558
https://github.com/users/zenglvnieki2/projects/559
https://github.com/users/hhcarm7521/projects/546
https://github.com/users/zenglvnieki2/projects/560
https://github.com/users/hhcarm7521/projects/547
https://github.com/users/zenglvnieki2/projects/561
https://github.com/users/hhcarm7521/projects/548
https://github.com/users/zenglvnieki2/projects/562
https://github.com/users/hhcarm7521/projects/549
https://github.com/users/zenglvnieki2/projects/563
https://github.com/users/hhcarm7521/projects/550
https://github.com/users/zenglvnieki2/projects/564
https://github.com/users/hhcarm7521/projects/551
https://github.com/users/zenglvnieki2/projects/565
https://github.com/users/zenglvnieki2/projects/566
https://github.com/users/hhcarm7521/projects/552
https://github.com/users/zenglvnieki2/projects/567
https://github.com/users/hhcarm7521/projects/553
https://github.com/users/zenglvnieki2/projects/568
https://github.com/users/hhcarm7521/projects/554
https://github.com/users/zenglvnieki2/projects/569
https://github.com/users/hhcarm7521/projects/555
https://github.com/users/zenglvnieki2/projects/570
https://github.com/users/hhcarm7521/projects/556
https://github.com/users/zenglvnieki2/projects/571
https://github.com/users/hhcarm7521/projects/557
https://github.com/users/hhcarm7521/projects/558
https://github.com/users/zenglvnieki2/projects/572
https://github.com/users/zenglvnieki2/projects/573
https://github.com/users/hhcarm7521/projects/559
https://github.com/users/hhcarm7521/projects/560
https://github.com/users/zenglvnieki2/projects/574
https://github.com/users/hhcarm7521/projects/561
https://github.com/users/hhcarm7521/projects/562
https://github.com/users/zenglvnieki2/projects/576
https://github.com/users/hhcarm7521/projects/563
https://github.com/users/zenglvnieki2/projects/577
https://github.com/users/hhcarm7521/projects/564
https://github.com/users/zenglvnieki2/projects/578
https://github.com/users/hhcarm7521/projects/565
https://github.com/users/zenglvnieki2/projects/579
https://github.com/users/hhcarm7521/projects/566
https://github.com/users/zenglvnieki2/projects/580
https://github.com/users/hhcarm7521/projects/567
https://github.com/users/zenglvnieki2/projects/581
https://github.com/users/hhcarm7521/projects/568
https://github.com/users/zenglvnieki2/projects/582
https://github.com/users/hhcarm7521/projects/569
https://github.com/users/zenglvnieki2/projects/583
https://github.com/users/zenglvnieki2/projects/584
https://github.com/users/hhcarm7521/projects/570
https://github.com/users/hhcarm7521/projects/571
https://github.com/users/zenglvnieki2/projects/586
https://github.com/users/hhcarm7521/projects/572
https://github.com/users/hhcarm7521/projects/573
https://github.com/users/zenglvnieki2/projects/587
https://github.com/users/hhcarm7521/projects/574
https://github.com/users/hhcarm7521/projects/575
https://github.com/users/zenglvnieki2/projects/588
https://github.com/users/hhcarm7521/projects/576
https://github.com/users/zenglvnieki2/projects/589
https://github.com/users/hhcarm7521/projects/577
https://github.com