ansible 项目一键部署

环境准备

验证过的系统:

  CentOS 6.5    6.8    7.0    7.1  7.5 等版本

  RedHat 6.5     7.0

       SUSE12sp4    12sp4 只支持redis单机和高可用

目标文件: aci   ansible.cfg

(1)安装ansible (准备好python环境)

    ./aci ansible install

(2)设置ansible配置文件

    mkdir -p /etc/ansible && cp ansible.cfg /etc/ansible/

(3)检查ansible是否安装成功

    ansible --version

目标机器

 ImportError: 'module' object has no attribute 'check_specifier'

1、一键部署包介绍
(1)服务共分3部分:service config.yml inventory
(2)service 中存放着项目组件
服务组件中 
files 存放着文件安装包以及前端项目包
tasks 中存放着执行脚本 main.yml文件

  - name: install | Create msspoper group.
    group: name={{msspoper_user}}  state=present

  - name: install | Create msspoper user.
    user: name={{ msspoper_user }} group={{ msspoper_user }} password={{ msspoper_user_pwd }}

  - name: chmod /tmp|chmod tmp
    command: chmod 777 /tmp  

  - name: mkdir | Create project dir.
    file:
        path: /home/msspoper/{{ dest_dir }}/
        state: directory
        mode: '777'
      
  - name: change /etc/hosts
    lineinfile:
      dest: /etc/hosts
      line: "{{ settings_server_address }} {{ settings_server_name }}"

  - name: install | Copy ROOT.zip
    unarchive: src=ROOT.zip dest=/home/{{ msspoper_user }}/{{dest_dir}} owner={{ msspoper_user }} mode=777

  - name: get start sh file
    shell: "ls /home/{{ msspoper_user }}/{{ dest_dir }}/bin/|grep .sh"
    register: sh_file

  - name: check if single.sh exists
    stat: 'path=/home/{{ msspoper_user }}/{{ dest_dir }}/bin/{{ sh_file.stdout}}'
    register: script_stat

  - debug: msg="single.sh exists"
    when: script_stat.stat.exists
  
  - name: restart jar   
    shell: 'su - {{ msspoper_user }} /home/{{ msspoper_user }}/{{ dest_dir }}/bin/{{ sh_file.stdout }} restart'
    register: res
  - name: mkdir web | Create web dir.
    file:
        path: "{{dest_web_dir}}"
        state: directory
        mode: '777'

  - name: install | Copy web pro
    unarchive: src=mssmpro.zip dest={{dest_web_dir}} owner=msspoper mode=0755

defaults 存放着脚本中的变量  main.yml文件

dest_dir: ""
dest_web_dir: ""
jar_file: ""

(3)config.xml
该文件主要设置hosts下的变量以及角色(服务组件)
hosts对应着一个集群,一个hosts对应多个角色,hosts是服务组件(role)中脚本执行的目标机器集群

- hosts: t
  vars:
    - msspoper_user: ""
    - msspoper_user_pwd: ""
    - settings_server_address: ""
    - settings_server_name: ""
  roles:
    - service/*

(4)inventory
[hosts] hosts指代目标集群名称 和config.xml 中的配置相对应,主要用来设置目标集群ip
[all:vars] 为全局变量 ,对于非root用户 代理登录 ansible_become=true ansible_become_user=root ansible_become_pass= ***

[t]
0.0.0.0
1.1.1.1
[all:vars]
ansible_ssh_user=msspoper
ansible_ssh_pass=Bjca@2019cl
ansible_become=true
ansible_become_user=root
ansible_become_pass=Bjca@2019cl
ansible_ssh_port=7327

2、一键部署步骤
(1)服务组件收集
(2)生成一键部署包
上传到具有ansible环境的服务器上,在对应目录下执行命令 ansible_playbook -i inventory config.yml

posted @ 2021-06-17 16:29  菜鸟骑士  阅读(261)  评论(0编辑  收藏  举报