ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架,被redhat收购。
特点:
部署简单,只需要在主控端部署ansible环境,被控端无需做任何操作。
默认使用SSH协议对设备进行管理。
运维模块较多,可实现日常绝大部分操作。
配置简单,功能强大,扩展性强。
支持API及自定义模块,可通过python自动扩展。
Playbooks定制强大配置,状态管理。
轻量级,无需客户端安装agent,更新时,只需在操作机进行一次更新即可。
REST API—AWX平台。
主要模块:
Ansible:核心程序。
HostInventory:记录管理的主机信息,包括端口、密码、ip等。
Playbooks:yaml格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成功能。
Coremodules:核心模块,调用核心模块来完成管理任务。
CustomModules:自定义模块,完成核心模块无法完成的功能,支持多语言。
ConnectionPlugins:连接插件,Ansible和Host通信使用。
Ansible任务执行模式:
Ad-hoc模式(点对点模式)使用单个模板,支持批量执行单条命令。
Playbook模式(剧本模式)ansible主要管理方式,playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件
命令执行过程:
- 加载自己的配置文件,默认/etc/ansible/ansible.cfg;
- 查找对应的主机配置文件,找到要执行的主机或者组;
- 加载自己对应的模块文件,如 command;
- 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;
- 对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
- 给文件 +x 执行权限;
- 执行并返回结果;
- 删除临时py文件,sleep 0退出;
PS:补充
在开发的过程中,有时候想要在pom.xml里配置个性化的服务,但又不想提交到代码库,方便起见,我们可以自定义pom_own.xml . 这个时候,在mvn启动的时候,用 mvn -f pom_own.xml启动就行了。
Mvn –t 线程数,可以并行地构建那些相互间没有依赖关系的模块,充分利用多核CPU资源。
Jenkins node: 在Jenkins环境中分配一个执行器和工作空间。
声明性Pipeline中有效的基本语句和表达式遵循与Groovy语法相同的规则 ,但有以下例外:
• Pipeline的顶层必须是块,具体来说是:pipeline { }
• 没有分号作为语句分隔符。每个声明必须在自己的一行
• 块只能包含章节, 指令,步骤或赋值语句。
• 属性引用语句被视为无参数方法调用。所以例如,输入被视为input()
网友评论