用ansible自动化搭建web、sql服务器、lvs调度器,ansiblelvs


一、服务器角色


二、部署ansible

1、ansible简介

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

2、ansible的优点

简单易用,学习门槛低、问题少、安装快、执行快,可进行批量命令和模块扩展,操作完全依赖 SSH 而不需要安装 agent。Ansible 结合 Docker、Mesos、Puppet、Vagrant、Git 等系统可以构建出非常好的自动化运维平台。

3、ansible的缺点

简单的设计从而导致没有依赖管理功能,另外当被管理的服务器达到一定数量时,执行效率会大大降低。

4、安装过程

ansible的安装包需从互联网上下载,即使用互联网yum源。

第一步,链接网址http://mirrors.163.com,点击右侧的centos帮助,下载centos6这个链接指向的文件,把下载的文件拷贝到/etc/yum.repos.d/目录下;

第二步,使用EPLE的yum源安装,语句为rpm -ivh epel-release-latest-6.noarch.rpm,然后查找当前目录下所有以rpm结尾的文件,并复制到/root/docs/ansible_rpm/下,语句为:

find -name '*rpm' -exec cp {} /root/docs/ansible_rpm/

第三步,在在联网的情况下,执行语句vim /etc/yum.conf,修改其中的配置文件keepcache=1,保存退出。然后执行下面的语句:

yum install -y ansible

安装的同时,RPM包也已下载到/var/yum目录下;

第四步,使用语句ansible --version查看是否安装成功,如果出现版本信息则安装成功。如果出现问题,则执行以下语句(需要rpm包):

yum install -y python-markupsafe
rpm -e ansible
rpm -ivh ansible*rpm

第五步,如果希望以后可以更加方便的安装,则可以将这些rpm包拷贝到自己创建的yum源中,用

createrepo .

创建一个索引,这样只要在/etc/yum.repo.d/下的repo文件中加入这个目录,这样就可以直接用yum语句安装、删除ansible包了。

5、创建工作目录

在需要的目录下创建目录ansible:

mkdir ansible

6、编写配置文件ansible.cfg

使用cd命令转到ansible目录下,vim配置文件ansible.cfg,内容如下:

[defaults]
inventory = hosts    # 定义被管理主机的文件
remote_user = root   # ssh到远程主机的用户
编写完成后,保存并退出。

7、编写主机清单文件hosts

vim主机清单文件hosts,即把被管理的服务器填入hosts文件中,并为其分组(一般写主机名不写ip地址),如:

[webservers]
yzy.bilibili.com
ljm.bilibili.com
[dbservers]
ccc.bilibili.com 
[lvs]
twh.bilibili.com

8、利用ansible语句检查配置文件是否编写成功

执行临时命令ad-hoc,格式为:ansible主机 -m 模块 -a '选项',如:

ansible all -a 'id root'

该语句的意思为查看所有主机的root用户的id,如果没有指定模块则默认使用shell模块;

下面再来举个例子,如何分别列出hosts中webservers组的主机信息:

ansible all --list-hosts

如何列出所有组的主机信息

ansible all --list-hosts

三、部署数据库服务器

1、mysql的简介

MySQL 是一个关系型数据库,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database ManagementSystem,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP ,Linux和 Apache 可组成良好的开发环境,经过多年的web技术发展,在业内被广泛使用的一种web服务器解决方案之一,称之为LAMP。

2、ansible-playbook配置思路

 ansible配合使用mysql_db、mysql_user在客户端创建数据库、创建用户及配置主从。

3、mysql的优点

1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性;

2.支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;

3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等;

4.支持多线程,充分利用CPU资源;

5.优化的SQL查询算法,有效地提高查询速度

6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中;

7.提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名;

8.提供TCP/IP、ODBC和JDBC等多种数据库连接途径;

9.提供用于管理、检查、优化数据库操作的管理工具;

10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库;

11.支持多种存储引擎。

4、服务器授权远程主机访问

本地需要管理远程的一批服务器,主要执行以下任务:

(1) 将本地的文件复制到远端所有服务器;

(2) 需要在远程服务器中执行一个个命令;

使用copy模块,可以将本地文件一键复制到远程服务器; -a后跟上参数,参数中指定本地文件和远端路径;

ansible通过ssh登录到远程服务器后,并不执行.bash_profile来设置用户自定义的环境变量;如果我们需要管理的目标服务器的路径不同,就不能直接写绝对路径,也不能写变量替换的路径;

比如:针对服务器A的目标复制路径为 /opt/app/user1/bin ,服务器B的目标复制路径为/opt/app/user2/bin; 这两个路径在各自的服务器中的路径变量都设置为$bin; 但在copy模块中,我们不能直接使用dest = $bin/; 路径设置一般放在.bashrc /.bash_profile文件,但ansible模块登录后并不加载这两个文件;

解决方法: 针对这种情况,可以将dest路径设置为~/,都复制到用户目录,后续再通过远程脚本处理;

需要在远程执行一个个命令来管理远程服务器;

远程执行命令的模块有command、shell、scripts、以及raw模块;

command模块为ansible默认模块,不指定-m参数时,使用的就是command模块; comand模块比较简单,常见的命令都可以使用,但其命令的执行不是通过shell执行的,所以,像这些 "<",">", "|", and "&"操作都不可以,当然,也就不支持管道;示例:显示远程路径:

缺点:不支持管道,就没法批量执行命令;

使用shell模块,在远程命令通过/bin/sh来执行;所以,我们在终端输入的各种命令方式,都可以使用; 但是我们自己定义在.bashrc/.bash_profile中的环境变量shell模块由于没有加载,所以无法识别;如果需要使用自定义的环境变量,就需要在最开始,执行加载自定义脚本的语句;

5、部署mysql

如何通过ansible部署mysql呢?上面我们已经部署好ansible了,以下便是通过ansible部署mysql并起服务的介绍:

#我们都遵循装包-配置-起服务的规则,那么我们在写脚本的时候应该注意什么呢?开头的格式以’---’开行,第二行开始写脚本内容,整个脚本的名字,对应使用的hosts主机名,以及整个脚本要执行的任务有什么都要一一明细,如果不清楚步骤,那么通过ansible部署mysql的过程中就会遇到很多问题,比如文件目录找到,装包过程中丢包,对应的专用模块不对应,多一个空格或者少一个分号等等。

#首先明确装包装什么包,包之间有什么依赖关系,有什么优点等等。

第一步,利用装包特有的专属模块yum和item循环语句,item循环语句with_items:里面有要安装的所有包,state则表示要安装软件的版本转态。present和latest都表示最新版;

第二步,进行服务的配置:这里用到了 mysql_db:和mysql_user:板块来进行数据库的搭建和用户的创建管理,密码是:12345,对用户进行授权处理,在这里,我们对此数据库进行任何人可以访问,授权处理为:priv: 'yzybbs.*:ALL,GRANT',注意到这里我的hosts:’%’,这个%的意思是允许其人任何用户远程连接管理此数据库,并对此有执行权限;

第三步,启动mysql服务,就简单的写一个server板块,启动服务即可,启动服务了,但是我得判断mysql服务有没有启动成功,一般,如果mysql服务没有启动成功,可以通过查看错误日志的方式,日志默认路径/var/log/mysqld.log。

ansible-playbook代码如下:(3-deploy-mysql.yml

---
- name: deploy mysql
  hosts: dbservice
  tasks:
  - name: install pkgs
    yum:
      name: "{{ item }}"
      state: present
    with_items:
    - mysql
    - mysql-server
    - MySQL-python 
  - name: start service
    service:
      name: mysqld
      state: started
      enabled: true
  - name: Create a new database
    mysql_db:
      name: yzybbs
      state: present
  - name: create a new user
    mysql_user:
      name: yzy
      host: '%'
      password: 12345
      priv: 'yzybbs.*:ALL,GRANT'
      state: present

四、部署web服务器

1、通过ansible安装、起服务

以下是对web服务器进行,安装、配置、起服务的代码:(1-deploy-web.yml
---
- name: deploy web
  hosts: webservice
  tasks:
  - name: install pkgs
    yum:
      name: "{{item}}"
      state: present
    with_items:
      - httpd
      - php
      - php-mysql
  - name: config
    copy:
      src: /root/B1_yzy/file/httpd.conf
      dest: /etc/httpd/conf/httpd.conf
      owner: root
      group: root
      mode: 0644
  - name: start service
    service:
      name: httpd
      state: started
      enabled: true

第一行必须是以'---'开头,第二行开始写内容。'- name'是说明playbook的名字,起名字一定要清晰易懂,一个playbook可以有多个名字,即多个play(剧本);'hosts'的意思是所要执行命令的主机名所在的文件夹,一般使用主机名而不是ip地址,主机名可以有多个;'tasks'即该playbook所要执行的任务,一个play可以有多个tasks,本代码中可以看出一共有3个tasks(三个任务名'name')。

第一个任务是安装apache(httpd、php、php-mysql)。这里利用yum专有模块和item数组对多台主机的安装,item是数组,with_item是数组内容,state则表示要安装软件的版本转态。present和latest都表示最新版;第二个任务是拷贝文件'copy'。src表示源文件的路径,dest则是需要拷贝文件的主机名的路径,owner和group分别表示拥有对该源文件所有权限的用户和所属组,mode表示赋予所拷贝文件主机的权限;第三个任务是起服务。利用service专有模块对httpd开启服务,state表示对httpd的状态为开启,enabled表示一个判断命令,即service是否开启,true表示“是”。

2、将Discuz安装到web1上

以下是将Discuz.zip拷贝到web1(即ljm.bilibili.com)上并解压的代码:(2-install-discuz.yml

---
- name: deploy ljm
  hosts: ljm.bilibili.com
  tasks:
  - name: copy and unzip
    unarchive:
      src: /root/B1_yzy/file/Discuz.zip
      dest: /var/yzy_web/
      owner: apache
      group: apache

本次操作的主机名是ljm.bilibili.com,利用unarchive的ansible专有模块对Discuz.zip的拷贝和解压缩,将本机的/root/B1_yzy/file/Discuz.zip压缩文件拷贝到ljm.bilibili.com主机的/var/yzy_web/下,权限所属的用户和组是apache。

3、将web1上的discuz拷贝到web2上

以下是将web1上的Discuz拷贝到web2(即yzy.bilibili.com)上代码:(4-deploy-otherweb.yml

---
- name: synchronize bbs from ljm
  hosts: ljm.bilibili.com
  tasks:
  - name: install rsync
    yum:
      name: rsync
      state: present
  - name: zip
    shell:
      cd /var/yzy_web/;
      zip -r -q -o bbs.zip bbs
  - name: pull bbs
    synchronize:
      src: /var/yzy_web/bbs.zip
      dest: /root/B1_yzy/file/
      mode: pull 
  - name: remove zip file
    shell:
      cd /var/yzy_web/;
      rm -f bbs.zip;
- name: copy bbs to yzy
  hosts: yzy.bilibili.com
  tasks:
  - name: copy bbs
    unarchive:
      src: /root/B1_yzy/file/bbs.zip
      dest: /var/yzy_web
      owner: root
      group: root

该代码中有2个play:

第一个任务,将Discuz中的bbs文件夹压缩并备份到web2上,第一个任务是安装rsync,rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。present表示安装最新版本;

第二个任务,将Discuz中的bbs文件夹压缩的shell脚本,路径是/var/yzy_web/;第三个任务则是利用ansible中的synchronize专有模块将本机的源文件bbs.zip备份到另一台远程主机上的/root/B1_yzy/file/下,权限是pull;

第三个任务,先cd到/var/yzy_web/路径下然后将bbs.zip删除。第二个play任务是将远程主机上/var/yzy_web/路径下的bbs.zip拷贝到web2主机上。利用ansible中的unarchive专有模块将远程主机上的/root/B1_yzy/file/bbs.zip压缩包拷贝到web2主机上的/var/yzy_web路径下并解压缩然后自动删除,权限所属的用户和组都为root。

4、拷贝跳转路径文件

以下是将Discuz论坛html跳转文件拷贝到webservice主机上的代码(5-index-jump.yml
---
- name: let web jump
  hosts: webservice
  tasks:
  - name: copy html
    copy:
      src: /root/B1_yzy/file/index.html
      dest: /var/yzy_web/
      owner: root
      group: root
      mode: 0644

这是跳转文件的文件内容:

<head>
<meta http-equiv="refresh" content="0;url=bbs">
</head>

hosts是webservice组中的主机,即web1和web2。任务是利用ansible中的copy专有模块将远程主机上的/root/B1_yzy/file/index.html文件拷贝到webservice组中的主机的/var/yzy_web/路径下,权限所属的用户和组都为root,权限是0644。

五、部署lvs调度器

1、LVS调度器

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

2、LVS特

可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network AddressTranslation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IPTunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。

3、工作模式

工作模式有四种:nat / tun / dr / fullna

4、工作特点

客户端不再直接访问后台应用服务器(real server),而是访问lvs调度器,调度器再根据它的调度算法将用户请求转发到real server。DR模式real server回应客户端,不用将回应发送到调度器。

5、调度算法

调度算法有10种,常用的是rr轮询/wrr加权轮询/lc最少连接/wlc加权最少连接,其他还有基于局部的最少连接lblc/带复制的基于局部的最少连接lblcr/源地址散列sh/目标地址散列dh/期望的最短延迟sed/最少队列调度nq

6、LVS优点

(1) 开源,免费;

(2)在网上能找到一些相关技术资源;

(3)具有软件负载均衡的一些优点。

7、LVS缺点

(1)最核心的就是没有可靠的支持服务,没有人对其结果负责;

(2)功能比较简单,支持复杂应用的负载均衡能力较差,如算法较少等;

(3)开启隧道方式需重编译内核;

(4)配置复杂;

(5)主要应用于LINUX,目前没有专门用于WINDOWS的版本,不过可以通过配置,使windows成为LVS集群中的real server(win2003、win2008中)。

8、lvs部署安装

(1)  安装ipvsadm      

yum -y install ipvsadm

检查安装:

ipvsadm -v

(2)在lvs调度器的物理网卡上配置vip

cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:1
vim ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
IPADDR=172.16.100.8
ONBOOT=yes

启动网卡:

ifup eth0:0

(3)在web服务器的本地环回接口lo上配置vip    

cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=172.16.100.8
NETMASK=255.255.255.255
NETWORK=192.168.16.240
BROADCAST=192.168.16.240
ONBOOT=yes
NAME=lo:0

启动本地环回接口lo:

ifup lo:0

(4)修改web服务器的内核参数,以便客户端发送的请求,只有调度器回应,注意,两台web服务器都要配置

sysctl -a | grep arp_ig
echo 'net.ipv4.conf.all.arp_ignore = 1'>> /etc/sysctl.conf
cho 'net.ipv4.conf.lo.arp_ignore = 1'>> /etc/sysctl.conf
echo 'net.ipv4.conf.all.arp_announce = 2'>> /etc/sysctl.conf
echo 'net.ipv4.conf.lo.arp_announce = 2'>> /etc/sysctl.conf
sysctl -p

(5)在lvs调度器上配置规则

ipvsadm -A -t 192.168.16.240:80 -s wrr
ipvsadm -a -t 192.168.16.240:80 -r192.168.16.254 -g -w 2
ipvsadm -a -t 192.168.16.240:80 -r192.168.16.249
ipvsadm -Ln

(6)  保存规则

service ipvsadm save

而用ansible-playbook怎么办呢

先部署lvs服务器:(6-deploy-lvs.yml

---
- name: deploy lvs
  hosts: lvs
  tasks:
  - name: install ipvsadm
    yum:
      name: ipvsadm
      state: present
  - name: copy vip
    copy:
      src: /root/B1_yzy/file/ifcfg-eth0:0
      dest: /etc/sysconfig/network-scripts/
      owner: root
      group: root
      mode: 0644
  - name: deploy vip
    shell:
      ifup eth0:0
      ipvsadm -A -t 172.16.100.8:80 -s wlc;
      ipvsadm -a -t 172.16.100.8:80 -r 172.16.100.2;
      ipvsadm -a -t 172.16.100.8:80 -r 172.16.100.5;
      service ipvsadm save

再部署web,ansible代码如下:(7-deploy-webvip.yml

---
- name: deploy web vip
  hosts: webservice
  tasks:
  - name: copy vip
    copy:
      src: /root/B1_yzy/file/ifcfg-lo:0
      dest: /etc/sysconfig/network-scripts/
      owner: root
      group: root
      mode: 0644
  - name: deploy vip
    shell:
      ifup lo:0;
      echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf;
      echo 'net.ipv4.conf.lo.arp_ignore = 1' >> /etc/sysctl.conf;
      echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf;
      echo 'net.ipv4.conf.lo.arp_announce = 2' >> /etc/sysctl.conf;
      sysctl -p;

六、配置DNS服务器

1、DNS域名解析系统

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

2、DNS功能

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议的功能。

主机名到IP地址的映射有两种方式:

1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;

2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。

3、DNS查询

若想跟踪一个FQDN名的解析过程,在LinuxShell下输入dig www +trace,返回的结果包括从根域开始的递归或迭代过程,一直到权威域名服务器。

GeniePro DNS 应对DNS劫持和DNS缓存中毒攻击的关键性机制:一致性检查

每个Geniepro节点将自身的DNS记录发送给工作组内其他节点请求一致性检查;

每个Geniepro节点将自身的记录与收到的记录进行比较;

每个Geniepro工作组的通信协调节点将获得的DNS记录更新发送给其他组的通信协调节点请求一致性检查;

每个Genipro工作组的通信协调节点向上一级DNS服务器请求更新记录并与收到的其他通信协调节点的记录进行比较。

4、DNS安全

(1) 针对域名系统的恶意攻击:DDOS攻击造成域名解析瘫痪。

(2) 域名劫持:修改注册信息、劫持解析结果。

(3) 国家性质的域名系统安全事件:“.ly”域名瘫痪、“.af”域名的域名管理权变更。

(4) 系统上运行的DNS服务存在漏洞,导致被黑客获取权限,从而篡改DNS信息。

(5) DNS设置不当,导致泄漏一些敏感信息。提供给黑客进一步攻击提供有力信息。

5、DNS配置

先配置/etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
	listen-on port 53 { 172.16.100.6; };
	// listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { any; };
	recursion yes;
	forwarders { 10.0.0.1; };

	dnssec-enable no;
	dnssec-validation no;

	/* Path to ISC DLV key */
	//bindkeys-file "/etc/named.iscdlv.key";

	//managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
	type hint;
	file "named.ca";
};

zone "bilibili.com" IN {
	type master;
	file "bi.com.ndb";
};


include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

在配置/var/named下的文件,名为:www.bilibili.com

$TTL 60
@	IN SOA	@ rname.invalid. (
	0	; serial
	1D	; refresh
	1H	; retry
	1W	; expire
	3H )	; minimum
	IN NS	@
@	IN A	127.0.0.1
www	IN A	172.16.100.8

七、编写shell脚本完成远程主机的一键配置

其实这一块能内容很简单,编辑一个简单的shell脚本,分别完成,web创建前和创建后的所有步骤

第一个脚本为:

#!/bin/bash
ansible-playbook playbooks/1-deploy-web.yml
ansible-playbook playbooks/2-install-discuz.yml
ansible-playbook playbooks/3-deploy-mysql.yml

在第一个脚本执行完毕后,打开浏览器,输入http://172.16.100.2/bbs,完成安装,其中数据库主机为:172.16.100.7,数据库名为:yzybbs,用户为:yzy,密码为12345,管理员密码随机设取

如图:



第二个脚本为:

#!/bin/bash
ansible-playbook playbooks/4-deploy-otherweb.yml
ansible-playbook playbooks/5-index-jump.yml
ansible-playbook playbooks/6-deploy-lvs.yml
ansible-playbook playbooks/7-deploy-webvip.yml

最后作品:


    

(域名是随机选取的,如有侵权请联系作者)

相关内容

    暂无相关文章