puppet:IT基础设施自动化管理工具:
puppet服务器,给域内每一个主机定义其应该处于的目标角色,支持比ansible更大的规模,也有着更多功能,通常情况下任务不需要手动触发,官方站点www.puppetlabs.org
运维工具层次:
1.OS provisioning(PXE,Cobber)确保安装操作系统
2.OS Configuration(ansible,puppet,saltstack,chef,cfengine)安装相应的软件程序
3.Command and contorl(func(很重,需要每一个节点有agent),ansible(无agent),fabric)任务执行
整个生命周期:
provisioning 设置
configuration 配置(puppet最强大功能)
orchestration 业务流程(按照编排好的去完成)
reporting 报告
puppet:agent
master/agent
master:puppet server
agent:真正执行相关管理的核心部件:周期性的去master去请求自己的相关配置,有agent时,可以进行密钥认证或证书等等,相对来说更加安全,部署sudo可比。
puppet的工作模式:
声明性、基于模型:有自己的配置编程语言,基于Ruby开发。我们用这种语言来制定规则,比如哪个主机http必须装上,或必须运行。
定义:使用puppet语言定义基础配置信息,这里的资源是模块。
模拟:在模拟测试运行。
强制:比对定义端状态是否与定义状态相符,不相符则强制执行。
报告:通过puppet api将执行结果发送给接收者。
pupppet三个层次:
1.资源抽象层:把每一个被管控对象抽象成为资源,把实现方式与目标分离(例如:创建用户,同时告诉linux和windows去创建用户,不用告诉他们再怎么做,只要告诉其目的是创建用户即可)
资源类型:例如用户、组、文件、服务、cron任务等等;
属性及状态与其实现方式是分离的;
期望状态决定了对应资源是否存在;
2.事务层:保证资源可以顺利完成
3.配置语言:
puppet核心组件就是资源:
资源清单:manifests每一个清单使用一个或多个资源组成。
模块:资源清单及清单中资源所定义的所依赖文件、模板等数据按特定组织组织起来的叫模块,对应ansible的角色。
交互过程如下图所示: