ansible 实现自动化部署lamp架构

简介

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

Ansible的特点有:
1、不需要在部署机器上安装客户端
2、没有服务端,使用时直接执行命令即可
3、基于模块工作,可以使用任意语言对模块进行开发
4、使用yaml语言来定制编排剧本
5、可实现多级指挥
6、支持sudo
7、支持邮件、日志等多种功能

既然都说了是自动化部署,我们只需要先行写好 “剧本” 然后动动手指就可以实现一键化自动部署

前期准备

先关闭防火墙和selinux ,完成服务器时间同步
准备三台机器即可 ansible控制端和被控制端

主机名 IP
ansible 192.168.3.51
lamp 192.168.3.151
lamp2 192.168.3.52
yum 源和 EPEL 源的配置

EPEL源

yum install epel-release

#可以用如下命令自动替换
sed -e 's!^metalink=!#metalink=!g' \
    -e 's!^#baseurl=!baseurl=!g' \
    -e 's!//download\.fedoraproject\.org/pub!//mirrors.tuna.tsinghua.edu.cn!g' \
    -e 's!//download\.example/pub!//mirrors.tuna.tsinghua.edu.cn!g' \
    -e 's!http://mirrors!https://mirrors!g' \
    -i /etc/yum.repos.d/epel*.repo

yum 源

# centos7 
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo
# centos8
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
配置文件的准备

先创建一个lamp文件夹用来存放我们所需要的配置文件
ansible 实现自动化部署lamp架构_第1张图片

httpd.conf 文件需要修改的内容:

第一处:

<Directory />
    AllowOverride none    
    Require all granted  #denied修改为granted 修改目的是允许所有的请求访问,如果不设置该行,访问的时候则会报403错误。
</Directory>

第二处:

<IfModule dir_module>
    DirectoryIndex index.html index.php  #在后面添加index.php 目的是增加一个网站
</IfModule>

第三处:

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    #为了支持PHP,需要增加以下两行跟PHP有关的配置
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

index.php 内容如下

phpinfo();
?>
配置文件准备无误后我们开始编写playbook(剧本)
---

  - name: httpd-install
    hosts: server
    tasks:
      - name: install httpd service
        yum:
           name: httpd*
           state: present

      - name: copy httpd.conf
        copy:
           src: /root/lamp/httpd.conf
           dest: /etc/httpd/conf/httpd.conf

      - name: start httpd
        service:
          name: httpd
          state: started
          enabled: yes

  - name: php-install
    hosts: server
    tasks:
      - name: install php-fpm service
        yum:
           name: php*
           name: php-fpm*
           state: present

      - name: start php-fpm service
        service:
          name: php-fpm
          state: started
          enabled: yes


  - name: index
    hosts: server
    tasks:
      - name: index.php
        copy:
          src: /root/lamp/index.php
          dest: /var/www/html/index.php

  - name: install mysql- service
    hosts: server
    tasks:
      - name: install mysql-server
        yum:
          name: mysql-server
          state: present

      - name: start mysqld
        service:
          name: mysqld
          state: started
          enabled: yes
测试

先检查是否有语法错误

ansible-playbook -C /ansible/lamp.yaml  #如果不在当前文件夹下,记得添加剧本的绝对路径

ansible 实现自动化部署lamp架构_第2张图片

语法检查没问题开始执行

ansible-playbook  /ansible/lamp.yaml

执行完毕后查看服务端口是否正常启动
在这里插入图片描述
打开浏览器输入 192.168.3.52 查看是否执行成功

你可能感兴趣的:(Linux,ansible,自动化,架构)