自动化运维Ansible 一键部署环境(实战)

1、准备4台centost7

IP:192.168.1.71        主控端        

IP:192.168.1.72  被控端       web01

IP:192.168.1.73  被控端       web02

IP:192.168.1.74             被控端       lb01

2、目前被控端很干净的环境(最小化安装的centos)

目录结构

3、准备安装包

安装包nginx官网下载http://nginx.org/

4、脚本编写

[root@wld-01-71 roles]# cat site.yml

- hosts: all

  roles:

    - base

- hosts: webservers

  roles:

    - nginx

  tags: nginx

[root@wld-01-71 roles]# cat nginx/tasks/main.yml

---

- name: Istalled Packages

  yum: name={{ packages }} state=present

  vars:

    packages:

      - pcre

      - pcre-devel

      - openssl

      - openssl-devel

      - gcc

- name: Add Copy Nginx  Packages

  copy: src=/etc/ansible/roles/nginx/templates/nginx-1.14.2.tar.gz dest=/software/src

- name: Tar Nginx

  shell: cd /software/src;tar -xvf nginx-1.14.2.tar.gz

- name: Add Nginx_module Server

  copy: src=/etc/ansible/roles/nginx/templates/nginx-module-vts.tar.gz dest=/software/src

- name: Tar Nginx_module

  shell: cd /software/src;tar -xvf nginx-module-vts.tar.gz -C /software/

- name: Install Nginx

  shell: cd /software/src/nginx-1.14.2;./configure --user=www --group=www --with-http_ssl_module --add-module=/software/nginx-module-vts --with-http_stub_status_module --prefix=/software/nginx-1.14.2/;make&& make install

- name: Create Soft Link

  file: src={{ "/software/nginx-1.14.2" }} dest={{ "/software/nginx" }} state=link owner=www group=www

- name: Create Configure Directory

  file:

    path: /software/nginx/conf/vhosts/

    state: directory

    mode: '0755'

- name: Configure Nginx Server

  template: src=/etc/ansible/roles/nginx/templates/nginx.conf.j2 dest=/software/nginx/conf/nginx.conf

  notify: Restart Nginx Server

- name: Check Nginx Configure

  shell: cp /software/nginx/sbin/nginx /bin/

- name: Nginx -T

  shell: nginx -t

  register: check_nginx

  changed_when:

    - check_nginx.stdout.find( 'successful' )

    - false

- name: Nginx Starting Up

  copy: src=/etc/ansible/roles/nginx/templates/nginx dest=/etc/init.d/

- name: Chmod Nginx

  file:

    path: /etc/init.d/nginx

    owner: www

    group: www

    mode: 755

- name: Add boot Bootstrap

  shell: cd /etc/init.d/;chkconfig nginx on

 

- name: Start Nginx Server

  systemd: name=nginx state=started enabled=yes

开机自启脚本

[root@wld-01-71 roles]# cat nginx/templates/nginx

#! /bin/bash

# chkconfig: - 85 15

PATH=/software/nginx

DESC="nginx daemon"

NAME=nginx

DAEMON=$PATH/sbin/$NAME

CONFIGFILE=$PATH/conf/$NAME.conf

PIDFILE=$PATH/logs/$NAME.pid

SCRIPTNAME=/etc/init.d/$NAME

set -e

[ -x "$DAEMON" ] || exit 0

do_start() {

$DAEMON -c $CONFIGFILE || echo -n "nginx already running"

}

do_stop() {

$DAEMON -s stop || echo -n "nginx not running"

}

do_reload() {

$DAEMON -s reload || echo -n "nginx can't reload"

}

case "$1" in

start)

echo -n "Starting $DESC: $NAME"

do_start

echo "."

;;

stop)

echo -n "Stopping $DESC: $NAME"

do_stop

echo "."

;;

reload|graceful)

echo -n "Reloading $DESC configuration..."

do_reload

echo "."

;;

restart)

echo -n "Restarting $DESC: $NAME"

do_stop

do_start

echo "."

;;

*)

echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2

exit 3

;;

esac

exit 0

5、主控端输出结果:

6、被控端输出结果:

被控端nginx

大家可以把编译包做成yum源直接安装!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了减轻多服务器配置和操作工作量以及安全性,特研究此课题,理论上可以同步所有想同步的文件,并且做到一键操作,不需要切换用户,不需要多次操作脚本,中途不需要输入任何字。 1, hosts文件 2, play.yml文件 剧本文件,按标准放到tasks文件夹内,因后面脚本写了路径,如果不愿意放tasks文件夹,需要改后面sh脚本路径参数 3, rsync_notice.py文件 钉钉机器人发送消息文件,此文件放在tools文件夹内,会调用备份日志进行分析,过滤后,发送到钉钉群内。各位同事可修改文件里的Webhoo为自己的机器人key 4, deploy.sh 文件 调用py钉钉文件发消息,并且处理备份日志,删除近期日志等后续事宜,请放在tools文件夹内 1.3.3. 功能基本介绍 1, 在对应脚本里基本都有注释,这里简单介绍下 2, 剧本文件需要在主控机器(备份机器),root用户下运行,运行一次即可,后续sh及py脚本会自动处理。一键搞定所有事情,中途无需手动干预; 3, 自行修改host文件为自己项目地址,bak为备份文件服务器,为安全起见,hosts文件进行了vault加密,密码123456,运行剧本文件,请加—ask-vault-pass 4, 再次提醒,在脚本运行完成后,为保险起见,可将hosts文件中的root密码删除,或修改复杂密码,不会影响后续同步功能。 5, 剧本流程介绍: 1) 主控被控端安装rsync及相关依赖软件; 2) 主控与被控端添加备份用户,rsync; 3) 主控端即备份服务器建立备份文件夹,设置归属用户; 4) 主控及被控端自动切换rsync用户,使用rsync用户配置免密访问所有被控端,即便服务器被黑,rsync用户访问也做不了什么; 5) 主控端即备份服务器使用rsync用户增加同步、日志记录、钉钉发送消息等定时任务; 6) 定时任务里各个需要同步的源地址及项目名称,请自行修改; 7) 日志为叠加记录,钉钉消息发完后,会按日期进行备份,同时删除原日志,因为钉钉消息每天都发,避免冗余数据; 6, 钉钉消息脚本介绍: 1) 访问实时备份日志,考虑到钉钉消息,只需要知道同步是否成功,其余数据不关心,所以读取后,进行数据处理,取出服务器地址、成功标识,或未成功标识; 2) 调用钉钉机器人接口,采取markdown形式,此形式可以定义一个固定的标题,比如:rsync同步情况汇总,这样在钉钉机器人安全设置里,只需要将标题设为关键字即可,具体发送内容千奇百怪也没关系。另外两种方式各有弊端,未研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值