ansible入门案例和jenkins简单比较,通过ansible-playbook使用jar包进行部署

一、ansible的确很强,要入门,需要注意以下几点

主要使用场景,是一台安装ansible的主机,控制其他节点机,但是节点机不需要安装客户端,这个是天生具有非常大的优势

在这里插入图片描述

Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook

  • ad-hoc模式(点对点模式)
    使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。

  • playbook模式(剧本模式)
    是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。

1.1、ad-hoc模式(点对点模式)

就是一条命令一条命令执行

可以执行的命令有:

  1. ping 进行主机连通性测试
  2. command 远程主机上执行命令,并将结果返回本主机
  3. shell 调用shell解释器运行命令,支持shell的各种功能,例如管道等
  4. copy 用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等
  5. file 用于设置文件的属性,比如创建文件、创建链接文件、删除文件等
  6. fetch 于从远程某主机获取(复制)文件到本地
  7. cron 该模块适用于管理cron计划任务的
  8. yum 该模块主要用于软件的安装
  9. service 该模块用于服务程序的管理
  10. user 该模块主要是用来管理用户账号
  11. group 该模块主要用于添加或删除组
  12. 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 步骤

  1. 在节点创建jar的数据目录,方便主节点移动过去的jar包有地方放置
  2. 移动jar到固定位置,也就是创建好的位置
  3. 删除现有的java进程
  4. 运行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包,发布到远程机器

猜你喜欢

转载自blog.csdn.net/qq_34168515/article/details/114262422