文章目录
一、ansible的确很强,要入门,需要注意以下几点
主要使用场景,是一台安装ansible的主机,控制其他节点机,但是节点机不需要安装客户端,这个是天生具有非常大的优势
Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook:
-
ad-hoc模式(点对点模式)
使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。 -
playbook模式(剧本模式)
是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。
1.1、ad-hoc模式(点对点模式)
就是一条命令一条命令执行
可以执行的命令有:
- ping 进行主机连通性测试
- command 远程主机上执行命令,并将结果返回本主机
- shell 调用shell解释器运行命令,支持shell的各种功能,例如管道等
- copy 用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等
- file 用于设置文件的属性,比如创建文件、创建链接文件、删除文件等
- fetch 于从远程某主机获取(复制)文件到本地
- cron 该模块适用于管理cron计划任务的
- yum 该模块主要用于软件的安装
- service 该模块用于服务程序的管理
- user 该模块主要是用来管理用户账号
- group 该模块主要用于添加或删除组
- script 该模块用于将本机的脚本在被管理端的机器上运行
例如:查询 节点1 主机上的文件执行 ls 命令 (简单执行 shell 命令)
1.2、playbook模式(剧本模式)
playbook是由一个或多个play组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓的task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联合起来按事先编排的机制完成某一任务
把所有命令集齐在一起,就是 playbook模式(剧本模式)
简单来说,
--- #固定格式
- hosts: group #定义需要执行主机组,应该事先配置好
remote_user: root #远程用户
vars: ##定义变量
jar_data_dir: /usr/local/cancan/numberingspecification #变量
tasks: #定义一个任务的开始
- name: 创建jar的数据目录 #定义任务的名称
file: path={
{
jar_data_dir }} state=directory #调用模块,具体要做的事情
以上就是具体的案例的
二、实战,通过ansible-playbook使用jar包进行部署
2.1 步骤
- 在节点创建jar的数据目录,方便主节点移动过去的jar包有地方放置
- 移动jar到固定位置,也就是创建好的位置
- 删除现有的java进程
- 运行java进程
2.2 具体的yml
java_install.yml
---
- hosts: group
remote_user: root
vars:
jar_data_dir: /usr/local/cancan/numberingspecification
tasks:
- name: 创建jar的数据目录
file: path={
{
jar_data_dir }} state=directory
- name: 移动jar到固定位置
copy: src=./java_install/numberingspecification-0.0.1-SNAPSHOT.jar dest={
{
jar_data_dir }}
- name: 删除现有的进程
shell: "kill -9 `ps -ef|grep numberingspecification|grep -v grep|awk '{printf $2}'`"
- name: 部署进程
shell: "nohup java -jar -Dserver.port=7777 -Dspring.datasource.password=123456 {
{ jar_data_dir }}/numberingspecification-0.0.1-SNAPSHOT.jar > {
{ jar_data_dir }}/log.file 2>&1 &"
2.3 文件具体放置位置
[root@localhost roles]# pwd
/etc/ansible/roles
[root@localhost roles]# tree
.
├── java_install
│ └── numberingspecification-0.0.1-SNAPSHOT.jar
├── java_install.yml
2.4 执行
ansible-playbook java_install.yml
PLAY [group] ******************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************
ok: [172.25.10.70]
TASK [创建jar的数据目录] *************************************************************************************************************************************************
ok: [172.25.10.70]
TASK [移动jar到固定位置] *************************************************************************************************************************************************
ok: [172.25.10.70]
TASK [删除现有的进程] ****************************************************************************************************************************************************
changed: [172.25.10.70]
TASK [部署进程] *******************************************************************************************************************************************************
changed: [172.25.10.70]
PLAY RECAP ********************************************************************************************************************************************************
172.25.10.70 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
三、结尾
Jenkins是使用Java编程语言编写的最受欢迎的开源自动化服务器。它促进了软件开发过程中持续集成和持续交付(CI / CD)的自动化过程。
Ansible是一种IT自动化工具。它可以部署软件, 配置系统, 并编排更高级的IT任务, 例如CD(连续部署)或零停机滚动更新。
Jenkins | Ansible |
---|---|
易于安装。 | 难以安装。 |
Jenkins提供了许多插件。 | 它支持更少的插件。 |
它支持C, C ++, Java, Perl, Python, Ruby和其他语言。 | 它支持C, Python, JavaScript和Ruby语言。 |
Jenkins是免费的。 | Ansible不是免费的, 但是有免费的试用版。 |
它支持Windows, Mac OS X, Linux等。 | 它还支持Windows, Mac OS X等。但是Windows可能会很痛苦。 |
重量不轻。 | 重量很轻。 |
Jenkins的设置和配置并不容易。 | Ansible易于使用, 配置和设置安装。 |
它是根据MIT许可获得许可的。 | 它是根据专有商业许可获得许可的。 |
它是基于服务器的工具。 | 它是基于云的工具。 |
3.1 简单来说
jenkins做为打包服务器,Web控制服务器
ansible把war包,发布到远程机器