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

浙公网安备 33010602011771号