首页 > 其他分享 >Ansible—通过role角色部署lnmp架构

Ansible—通过role角色部署lnmp架构

时间:2024-07-26 17:00:10浏览次数:16  
标签:name php72w lnmp nginx state Ansible role php root

目录

一、部署nginx

2.部署MySQL

3.部署php

4.编写测试文件

二、Roles 模块

roles 内各目录含义解释


一、部署nginx

cd /opt
mkdir nginx
cd nginx/
上传nginx.repo、nginx.conf,并且修改nginx.conf为nginx.conf.j2
vim nginx.conf.j2
37、38行
listen       {{nginx_addr}}:{{nginx_port}};
         server_name  {{nginx_hostname}};
45行
root   {{root_dir}};
68行
fastcgi_pass   {{php_addr}}:{{php_port}};
70行
fastcgi_param  SCRIPT_FILENAME  {{root_dir}}$fastcgi_script_name;
vim lnmp-playbook.yaml
- name: nginx play
  hosts: webservers
  remote_user: root
  gather_facts: false
  vars:
  - nginx_addr: 192.168.80.101
  - nginx_port: 80
  - nginx_hostname: www.xy101.com
  - root_dir: /var/www/html
  - php_addr: 192.168.80.102
  - php_port: 9000
  tasks:
  - name: disable firewalld
    service: name=firewalld state=stopped enabled=no
  - name: disable selinux
    command: 'setenfoce 0'
    ignore_errors: true
  - name: copy nginx repo
    copy: src=/opt/nginx/nginx.repo dest=/etc/yum.repos.d/
  - name: install nginx
    yum: name=nginx state=latest
  - name: create root dir
    file: path={{root_dir}} state=directory
  - name: copy nginx config template file
    template: src=/opt/nginx/nginx.conf.j2 dest=/etc/nginx/nginx.conf
    notify: 'reload nginx'
  - name: create nfs config
    copy: content="{{root_dir}} 192.168.80.0/24(rw,sync,no_root_squash)" dest=/etc/exports
  - name: restart rpcbind,nfs,nginx
    service: name={{item}} state=restarted enabled=yes
    with_items:
    - rpcbind
    - nfs
    - nginx
 
  handlers:
  - name: reload nginx
    service: name=nginx state=reloaded
 
ansible-playbook lnmp-playbook.yaml

2.部署MySQL

- name: mysql play
  hosts: dbservers
  remote_user: root
  gather_facts: false
  tasks:
  - name: disable mysql_server firewalld
    service: name=firewalld  state=stopped  enabled=no
  - name: disable mysql_server selinux
    command: 'setenforce 0'
    ignore_errors: true
  - name: remove mariadb
    yum: name=mariadb*  state=absent
  - name: copy mysql repo
    copy: src=/opt/mysql/mysql-community.repo  dest=/etc/yum.repos.d/
  - name: modify mysql repo
    replace: path=/etc/yum.repos.d/mysql-community.repo  regexp="gpgcheck=1"  replace="gpgcheck=0"
  - name: install mysql
    yum: name=mysql-server state=present
  - name: start mysql
    service: name=mysqld  state=started  enabled=yes
  - name: init mysql
    script: '/opt/mysql/mysql-init.sh'

3.部署php

- name: php play
  hosts: phpservers
  remote_user: root
  gather_facts: false
  vars:
  - php_username: nginx
  - php_addr: 192.168.80.102:9000
  - nginx_addr: 192.168.80.101
  - root_dir: /var/www/html
  tasks:
  - name: disable php_server firewalld
    service: name=firewalld  state=stopped  enabled=no
  - name: disable php_server selinux
    command: 'setenforce 0'
  - name: unarchive php tar pkg
    unarchive: copy=yes  src=/opt/php/php.tar.gz  dest=/mnt/
  - name: copy local repo
    copy: src=/opt/php/local.repo  dest=/etc/yum.repos.d/
  - name: create repo
    shell: 'createrepo /mnt && yum clean all && yum makecache'
  - name: install php
    yum: name=php72w,php72w-cli,php72w-common,php72w-devel,php72w-embedded,php72w-gd,php72w-mbstring,php72w-pdo,php72w-xml,php72w-fpm,php72w-mysqlnd,php72w-opcache,php72w-ldap,php72w-bcmath  state=present
  - name: create php user
    user: name={{php_username}}  shell=/sbin/nologin  create_home=no
  - name: modify php.ini
    replace: path=/etc/php.ini  regexp=";date.timezone ="  replace="date.timezone = Asia/Shanghai"
  - name: modify user and group in www.conf
    replace: path=/etc/php-fpm.d/www.conf  regexp="apache"  replace="{{php_username}}"
    notify: "reload php-fpm"
  - name: modify listen in www.conf
    replace: path=/etc/php-fpm.d/www.conf  regexp="127.0.0.1:9000"  replace="{{php_addr}}"
    notify: "reload php-fpm"
  - name: modify listen.allowed_clients in www.conf
    replace: path=/etc/php-fpm.d/www.conf  regexp="127.0.0.1"  replace="{{nginx_addr}}"
    notify: "reload php-fpm"
  - name: start php-fpm
    service: name=php-fpm  state=started  enabled=yes
  - name: create www root dir
    file: path={{root_dir}}  state=directory
  - name: mount nfs
    mount: src="{{nginx_addr}}:{{root_dir}}"  path={{root_dir}}  fstype=nfs  state=mounted  opts="defaults,_netdev"
  handlers:
  - name: reload php-fpm
    service: name=php-fpm  state=reloaded

4.编写测试文件

cd /var/www/html
vim index.php
 
<?php
phpinfo();
?>

浏览器访问测试

二、Roles 模块

roles用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令引入即可。
简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷的include它们的一种机制。roles一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。主要使用场景代码复用度较高的情况下。

roles 内各目录含义解释

●files
用来存放由 copy 模块或 script 模块调用的文件。

●templates
用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。

●tasks
此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件。

●handlers
此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。

●vars
此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。

●defaults
此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。 这些变量具有所有可用变量中最低的优先级,并且可以很容易地被任何其他变量覆盖。所以生产中我们一般不在这里定义变量

●meta
此目录应当包含一个 main.yml 文件,用于定义此角色的元数据信息及其依赖关系。

标签:name,php72w,lnmp,nginx,state,Ansible,role,php,root
From: https://blog.csdn.net/aran2002/article/details/140695240

相关文章

  • ansible-playbook
    ansible-playbook执行脚本,并输出到控制台-name:Deploynginxlogrotate.shandprinttheresulthosts:allbecome:yes#如果需要以root权限执行命令,则需要这一行tasks:-name:Deploylogrotate.shscript:/home/xxx/nginxLograte/deploy_nginxlogra......
  • Ubuntu24手动部署LNMP环境
    前提条件手动部署LNMP环境时,已有ECS实例必须满足以下条件:实例已分配公网IP地址或绑定弹性公网IP(EIP)。操作系统必须为Ubuntu22.04、Ubuntu20.04。实例安全组的入方向规则已放行22、80、443端口。具体操作,请参见添加安全组规则。重要基于服务器数据安全考虑,本文仅说明部署与......
  • Ansible部署和模块应用
    目录1.Ansible的概述(1)ansible的特性2.ansible环境安装部署3.ansible的常用模块(1)command模块(2)shell模块(3)cron模块(4)user模块(5)group模块(6)copy模块(7)fetch(8)file模块(9)hostname模块(10)ping模块(11)yum/apt模块(12)service/systemd模块(13)script模块(14)mount模块(15)archive模块(16)u......
  • LNMP
    搭建LNMP动态网站:在不同环境下访问,网站环境又可能变化静态网站:在不同环境下访问,网站环境不会变化【1】、搭建LNMPL:LinuxN:nginxM:Mariadb/MysqlP:PHP/PythonLNMP:也被称为动静分离#安装nginxroot@proxy[05:08:54]:/opt/nginx-1.24.0$./configure&&make&&makeins......
  • ansible-install-log
    [jing@CJVM01~]$cat/etc/redhat-releaseCentOSLinuxrelease8.0.1905(Core)[jing@CJVM01~]$rpm-qa|greppythonpython3-libxml2-2.9.7-5.el8.x86_64python3-dateutil-2.6.1-6.el8.noarchpython3-libcomps-0.1.8-13.el8.x86_64python3-pyyaml-3.12-12.el8.x86......
  • Ansible 是一个强大的开源自动化工具,用于自动化应用程序的部署、配置管理和任务自动化
    Ansible是一个强大的开源自动化工具,用于自动化应用程序的部署、配置管理和任务自动化。它是由RedHat公司开发和维护的,提供了简单易用的方式来自动化IT环境中的复杂任务。主要特点和优势:简单易用:Ansible使用基于YAML的语法(称为Playbooks),易于理解和编写,无需编写复杂的......
  • 【Docker】基于Docker-compose创建LNMP环境
    目录一.Docker-compose概述1.容器编排管理与传统的容器管理的区别2.docker-compose作用3.docker-compose本质4.docker-compose的三大概念二.YML文件格式及编写注意事项1.yml文件是什么2.yml问价使用注意事项3.yml文件的基本数据结构三.Docker-compose配置1.Doc......
  • 一站式了解 Ansible
    Ansible介绍什么是AnsibleAnsible是一个开源自动化平台。它是一种简单的自动化语言,能够在AnsiblePlaybook中完美地描述IT应用基础架构。它也是一个自动化引擎,运行AnsiblePlaybook。Ansible可以管理复杂的自动化任务,并且能够适应许多不同的工作流和环境。同时......
  • Nginx、LNMP万字详解
    目录Nginx特点Nginx安装添加Nginx服务Nginx配置文件全局配置HTTP配置状态统计页面Nginx访问控制授权用户授权IP虚拟主机基于域名测试基于IP测试基于端口测试LNAMP解析方式LNMP转发php-fpm解析Nginx代理LAMP解析LNMP部署示例实验环境MariaDB修改密码......
  • Kolla-ansible部署openStack
    目录Kolla-ansible部署openStack1.简介2.环境准备3.部署3.1基础环境配置3.1.1配置主机名,所有节点操作,这里以openstack01为例3.1.2添加hosts3.1.3配置免密登录3.1.4关闭防火墙以及selinux3.1.5设置yum源3.1.6安装docker3.2配置kolla-ansible3.2.1安装相关依赖3.2.2部......