ansible从部署jdk入门

什么是ansible

ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以进行系统管理,自动化执行命令,部署等任务。

Ansible的特点

1、ansible不需要单独安装客户端,也不需要启动任何服务
2、ansible是python中的一套完整的自动化执行任务模块
3、ansible playbook 采用yaml配置,对于自动化任务执行过一目了然

Ansible组成结构

Ansible

是Ansible的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行。

Ansible Playbook

任务剧本(又称任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,yaml格式。

Inventory

Ansible管理主机的清单,默认是/etc/ansible/hosts文件。

Modules

Ansible执行命令的功能模块,Ansible2.3版本为止,共有1039个模块。还可以自定义模块。官网参考地址:https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html

Plugins

插件,模块功能的补充,常有连接类型插件,循环插件,变量插件,过滤插件,插件功能用的较少。

API

提供给第三方程序调用的应用程序编程接口。
本文通过ansible-playbook部署jdk项目展开说明

项目目录结构

  |–ansible           #默认ansible项目路径/etc/ansible
    | hosts             #配置ansible目标服务器
    | jdk.yml          #jdk入口文件
    | ansible.cfg    #配置文件
    |–roles             #角色
    |–jdk                #jdk角色文件夹
      |–files            #一般用于存放除配置文件外的其他文件,如部署安装包
      |–templates   #用于存放配置文件,可以引用变量
      |–tasks          #用于存放任务脚本
         | main.yml  #任务脚本
       |–vars           #用于存放变量文件
         | main.yml  #变量文件

hosts

[jdk] #代表组名,下包含服务器

jdk01 ansible_ssh_port=22 ansible_ssh_host=192.168.5.110 ansible_ssh_user=root
jdk02 ansible_ssh_port=22 ansible_ssh_host=192.168.5.111 ansible_ssh_user=root
jdk03 ansible_ssh_port=22 ansible_ssh_host=192.168.5.112 ansible_ssh_user=root
jdk04 ansible_ssh_port=22 ansible_ssh_host=192.168.5.113 ansible_ssh_user=root
jdk05 ansible_ssh_port=22 ansible_ssh_host=192.168.5.114 ansible_ssh_user=root
jdk06 ansible_ssh_port=22 ansible_ssh_host=192.168.5.115 ansible_ssh_user=root
jdk07 ansible_ssh_port=22 ansible_ssh_host=192.168.5.116 ansible_ssh_user=root

ansible.cfg

如:需要显示任务执行耗时:可修改参数
callback_whitelist = profile_tasks

jdk.yml

---
- hosts: jdk
  roles:
    - role: jdk
  tags:
  - jdk

注意一个缩进单位为两个空格,不能使用\t

vars/main.yml

IP: “{{ansible_default_ipv4[‘address’]}}”   #定义变量IP为目标服务器ip地址

tasks/main.yml

---
#创建临时文件夹用于存放jdk部署包
    - name: Creating remote directory
      file:
        path: /opt/deploy/jdk/
        state: directory
#复制jdk部署包到远程服务器上
    - name: Copying rpm packages to remote server
      copy:
        src: '{{item.src}}'
        dest: '{{item.dest}}'
        owner: root
        group: root
        mode: 0755
      with_items:
        - {src: '/etc/ansible/roles/jdk/files',dest: /opt/deploy/jdk/}
#卸载远程服务器上的旧版jdk
    - name: Removing openjdk
      yum:
        name: "{{item.name}}"
        state: "{{item.state}}"
      with_items:
        - {name: java-1.7.0-openjdk-headless.x86_64,state: absent}
        - {name: java-1.8.0-openjdk-headless.x86_64,state: absent}
#删除远程服务器上的旧版jdk相关文件
    - name: Removing old jdk files
      file:
        path: "{{item.path}}"
        state: "{{item.state}}"
      with_items:
        - {path: '/usr/local/jdk1.8.0_191',state: 'absent'}
        - {path: '/usr/bin/java',state: 'absent'}
        - {path: '/usr/bin/jar',state: 'absent'}
#解压jdk部署包
    - name: Unarchiving jdk package
      unarchive:
        src: /opt/deploy/jdk/files/jdk-8u191-linux-x64.tar.gz
        dest: /usr/local
        creates: /usr/local/jdk1.8.0_191
        remote_src: yes
#创建jdk软连接
    - name: Create java link
      file:
        src: "{{item.src}}"
        dest: "{{item.dest}}"
        state: "{{item.state}}"
      with_items:
        - {src: /usr/local/jdk1.8.0_191/bin/java,dest: /usr/bin/java,state: link}
        - {src: /usr/local/jdk1.8.0_191/bin/jar,dest: /usr/bin/jar,state: link}
        - {src: /usr/local/jdk1.8.0_191/bin/jps,dest: /usr/bin/jps,state: link}
#配置环境变量JAVA_HOME
    - name: Configing JAVA_HOME
      lineinfile:
        path: /etc/profile
        line: 'export JAVA_HOME=/usr/local/jdk1.8.0_191'
        create: yes
#使环境变量生效
    - name: Sourcing JAVA_HOME
      shell: source /etc/profile
#判断jdk是否正常安装
    - name: Jdk installed unsuccessfully
      shell: ls /usr/local/jdk1.8.0_191/bin/java
      register: result
      ignore_errors: true
      failed_when: result.stdout.find('1.8.0_191') == -1
#jdk部署成功
    - name: Jdk installed successfully
      debug: msg="服务器{{IP}}已成功部署jdk1.8.0_191"
		
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值