Ansible-playbook-roles安装lnmp

news2024/11/17 7:35:43

使用roles安装lnmp
1、准备四台主机
192.168.142.10
192.168.142.20
192.168.142.30
192.168.142.40
2、10作为ansible管理端
首先ssh连接剩下三台主机
3、vim/etc/ansible/hosts
添加[nginxservers]配置nginx ip,[phpservers]php ip,[mysqlservers]mysql ip
4、cd /etc/ansible 
mkdir roles/{nginx,php,mysql}
mkdir -p roles/nginx/{tasks,vars,files,templates,handlers,defaults,meta}
mkdir -p roles/php/{tasks,vars,files,templates,handlers,defaults,meta}
mkdir -p roles/mysql/{tasks,vars,files,templates,handlers,defaults,meta}
touch roles/nginx/{tasks,vars,handlers,defaults,meta}/main.yml
touch roles/php/{tasks,vars,handlers,defaults,meta}/main.yml
touch roles/mysql/{tasks,vars,handlers,defaults,meta}/main.yml
5、准备nginx配置模板文件,需要在管理端下载nginx、php、mysql。
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.j2
mv default.conf.j2 /etc/ansible/roles/nginx/templates/
6、在模板文件中修改j2模板文件
listen       {{http_port}};
server_name  {{host_name}};
root   {{root_dir}};
location ~ \.php$ {
        root           {{root_dir}};
        fastcgi_pass   {{remote_addr}}:{{remote_port}};
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  {{root_dir}}$fastcgi_script_name;
        include        fastcgi_params;
    }
7、在vars文件中准备变量
vim main.yml
http_port: 192.168.142.20:80
host_name: www.kgc.com
root_dir: /usr/share/nginx/html
remote_addr: 192.168.142.30
remote_port: 9000
pkg: nginx
service: nginx
8、tasks
cd tasks
vim init.yml(设置关闭防火墙、selinux)
- name: disable selinux
  command: '/usr/sbin/setenforce 0'
  ignore_errors: true

- name: disable firewalld
  systemd: name=firewalld state=stopped enabled=no
  ignore_errors: true
这个文件可以复用!!
9、编写main.yml
首先可以进入/etc/ansible/roles/nginx/files
vim index.php
<?php
phpinfo();
?>
再将nginx.repo 复制道files中 cp /etc/yum.repos.d/nginx.repo ./

vim /tasks/main.yml

- include: "init.yml"

- name: copy local yum repo file
  copy: src=nginx.repo dest=/etc/yum.repos.d/

- name: install nginx
  yum: name=nginx state=latest

- name: copy index.php
  copy: src=index.php dest={{root_dir}}

- name: copy template configure file
  template: src=default.conf.j2 dest=/etc/nginx/conf.d/default.conf
  notify: restart service

- name: start nginx
  systemd: name=nginx state=started enabled=yes

vim /handlers/main.yml
- name: restart service
  systemd: name=nginx state=restarted

10、创建playbook yml文件
cd /etc/ansible
mkdir playbook

vim lnmproles.yaml

- name: nginx play
  hosts: nginxservers
  remote_user: root
  roles:
  - nginx

ansible-playbook lnmproles.yaml
启动剧本

准备mysql

先在本地安装mysql
yum remove mariadb* -y
cd /etc/yum.repos.d

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
sed -i 's/gpgcheck=1/gpgcheck=0/' mysql-community.repo
yum -y install mysql-community-server

wget https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
sed -i 's/gpgcheck=1/gpgcheck=0/' mysql-community.repo
yum -y install mysql-server

systemctl start mysqld.service
systemctl enable mysqld.service

grep "password" /var/log/mysqld.log            #在日志文件中找出root用户的初始密码
2021-07-31T07:55:00.366359Z 1 [Note] A temporary password is generated for root@localhost: ga7%<d<0*jD&

grep "password" /var/log/mysqld.log | awk '{print $NF}'

##登录 mysql
mysql -uroot -p
Enter password:         #输入初始密码 ga7%<d<0*jD&

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';     #密码设置要求有 大小写字母、数字和符号 组合

grant all privileges on *.* to root@"%" identified by "Admin@123" with grant option;
flush privileges;

yum -y remove mysql57-community-release-el7-10.noarch     #为了防止每次yum操作都会自动更新,卸载这个软件

首先cp /etc/ansible/roles/nginx/tasks/init.yml /etc/ansible/roles/mysql/tasks/

vim /etc/ansible/roles/mysql/tasks/main.yml

- include: init.yml

- name: remove mariadb
  command: 'yum remove mariadb* -y && cd /etc/yum.repo.d'

- name: yum install mysql
  shell: 'wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm && yum -y install mysql57-community-release-el7-10.noarch.rpm'
  ignore_errors: true

- name: replace file
  replace: "path=/etc/yum.repos.d/mysql-community.repo regexp='gpgcheck=1' replace='gpgcheck=0'"

- name: yum install mysql1
  yum: name=mysql-community-server

- name: system mysql
  service: enabled=true name={{svc}} state=started

vim /etc/ansible/roles/mysql/vars/main.yml

svc: mysqld

cd /etc/ansible/playbook
vim /etc/ansible/playbook/lnmproles.yaml
- name: nginx play
  hosts: nginxservers
  remote_user: root
  roles:
  - nginx
 
- name: mysql play
  hosts: mysqlservers
  remote_user: root
  roles:
  - mysql

准备php

首先现在本机yum安装php
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-redis

systemctl start php-fpm
systemctl enable php-fpm
php -v

useradd -M -s /sbin/nologin php

vim /etc/php.ini
date.timezone = Asia/Shanghai

vim /etc/php-fpm.d/www.conf
user = php
group = php
listen = 192.168.142.30:9000
listen.allowed_clients = 192.168.142.30

cp /etc/php.ini /etc/ansible/roles/php/files
cp /etc/php-fpm.d/www.conf /etc/ansible/roles/php/files

vim php.ini

#877 date.timezone = Asia/Shanghai

vim /etc/ansible/roles/php/tasks/main.yml

- include: init.yml

- name: install epel
  shell: 'rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm'

- name: install php
  yum: name={{item}}
  with_items:
   - php72w
   - php72w-cli
   - php72w-common
   - php72w-devel
   - php72w-embedded
   - php72w-gd
   - php72w-mbstring
   - php72w-pdo
   - php72w-xml
   - php72w-fpm
   - php72w-mysqlnd
   - php72w-opcache
   - php72w-redis

- name: create php user
  user: name={{user_name}}

- name: copy php configure file
  copy: src=php.ini dest=/etc/php.ini

- name: modify www.conf
  replace: path=/etc/php-fpm.d/www.conf regexp="apache" replace="php"

- name: modify listen address
  replace: path=/etc/php-fpm.d/www.conf regexp="127.0.0.1:9000" replace={{http_port}}

- name: modify allowed_clients
  replace: path=/etc/php-fpm.d/www.conf regexp="127.0.0.1" replace={{remote_addr}}

- name: create root dir
  file: state=directory path={{root_dir}}

- name: copy index.php
  copy: src=index.php dest={{root_dir}}

- name: start php
  systemd: name=php-fpm state=started enabled=yes

cp /etc/ansible/roles/nginx/tasks/init.yml /etc/ansible/roles/php/tasks

cp /etc/ansible/roles/nginx/files/index.php /etc/ansible/roles/php/files/

cd /php/vars

vim main.yml

user_name: php
http_port: 192.168.142.30:9000
remote_addr: 192.168.142.20
root_dir: /usr/share/nginx/html

cd /etc/ansible/playbook

vim lnmproles.yaml

- name: nginx play
  hosts: nginxservers
  remote_user: root
  roles:
  - nginx

- name: mysql play
  hosts: mysqlservers
  remote_user: root
  roles:
  - mysql

- name: php play
  hosts: phpservers
  remote_user: root
  roles:
  - php

 安装成功

验证

浏览器访问:http://192.168.142.20/index.php

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/660481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu 20.04 qemu arm64 linux6.3.8 开发环境搭建

开发环境 ubuntu 20.04 VMware Workstation Pro 16 基于qemu&#xff08;模拟器&#xff09;&#xff0c;ARM64 &#xff1a;virt cortex-a57 平台 搭建Linux 6.3.8 (当前最新版本&#xff09; 准备 Linux 内核下载&#xff0c;下载最新稳定版本&#xff0c;当前为 linux-…

基于ipv6实现几乎零成本的内网穿透方案,小白的踩坑历程与经验分享

基于ipv6实现几乎零成本的内网穿透方案&#xff0c;小白的踩坑历程与经验分享 前言 最近想远程访问家里nas的想法老在脑海中浮现&#xff0c;原因大概是本人二开了一个管理系统&#xff0c;并在上面跑了些定时任务做自动化&#xff0c;就有了远程访问系统的需求。同时又想到&…

Python潮流周刊#7:我讨厌用 asyncio

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 你好&#xff0c;我是猫哥。这里记录每周值得分享的 Python 及通用技术内容&#xff0c;部分为英文&#xff0c;已在小标题注明。&#xff08;标题取自其中一则分享&#xff0c;不代表全部内容都是该主题&#xff…

MySQL 数据库初体验

文章目录 数据库的基本概念数据表数据库数据库管理系统数据库系统 数据库的发展史当今主流数据库介绍SQL Server &#xff08;微软公司产品&#xff09;Oracle &#xff08;甲骨文公司产品&#xff09;DB2 &#xff08;IBM公司产品&#xff09;MySQL &#xff08;甲骨文公司收购…

S7-200 PLC通信方式有哪些

更多关于西门子S7-200PLC内容请查看&#xff1a;西门子200系列PLC学习课程大纲(课程筹备中) S7-200 PLC通信按通信对象方式分为三种情况&#xff1a;A.与计算机通信;B.与其他PLC通信&#xff1b;C.与其他设备和仪器通信&#xff1b; A.S7-200 PLC与计算机通信 如下图1-1 S7-…

长度延展攻击【密码学】(三)

一、什么是长度延展 假设有两段数据&#xff0c;S和M&#xff0c;以及一个单向散列函数h。 如果我们要将两段数据合并起来&#xff0c;并且还要计算合并后的散列值&#xff0c;这就叫做单向散列函数的长度延展。 二、长度延展攻击 如果S和M都是公开信息&#xff0c;那么S在前还…

网络层:网际控制报文协议ICMP

网络层&#xff1a;网际控制报文协议ICMP 笔记来源&#xff1a; 湖科大教书匠&#xff1a;网际控制报文协议ICMP 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 主机或路由器使用ICMP来发送差错报告报文和询问报文 ICMP报文被封装在IP数据报中发送…

合宙Air724UG Cat.1模块硬件设计指南--I2C接口

I2C接口 简介 I2C总线&#xff08;Inter&#xff0d;Integrated Circuit&#xff09;是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 特性 支持 Fast mode &#xff08;400Kbps&#xff09;和 Slow mode&…

探索人工智能在自动化测试中的应用

自动化测试技术从最初的模拟硬件方式&#xff0c;到基于数据驱动&#xff0c;基于关键字驱动&#xff0c;再到现在基于功能和指令驱动的自动化测试技术&#xff0c;在各类软件项目中的应用也越来越多&#xff0c;越来越成熟。自动 背景 自动化测试技术从最初的模拟硬件方式&a…

MATLAB | 如何使用MATLAB获取顶刊《Nature》全部绘图(附带近3年全部图像)

我出了如何使用MATLAB获取期刊《Cell》全部绘图&#xff0c;立马就有粉丝问《Nature》、《Sience》、《PNAS》啥的会不会安排&#xff0c;这期就给大家安排《Nature》全部绘图获取&#xff0c;之后其他期刊也会慢慢安排&#xff0c;但是不会一次性全出完(毕竟不能抓住一个主题就…

【第三次】21级计科计算机组成原理课外练习

【第三次】21级计科计算机组成原理课外练习 一、单选题二、填空题三、程序填空题 一、单选题 2-1假设变量x的位数为n&#xff08;n>8&#xff09;&#xff0c;x的最低有效字节不变&#xff0c;其余各位全变为0&#xff0c;则对应C语言表达式为。 A.x | ~ 0xFF B.x ^ 0xFF C…

css基础四:说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别?

一、背景 在css中我们通常使用px作为单位&#xff0c;在PC浏览器中css的1个像素都是对应着电脑屏幕的1个物理像素 这会造成一种错觉&#xff0c;我们会认为css中的像素就是设备的物理像素 但实际情况却并非如此&#xff0c;css中的像素只是一个抽象的单位&#xff0c;在不同…

循环码生成矩阵与监督 (校验) 矩阵

本专栏包含信息论与编码的核心知识&#xff0c;按知识点组织&#xff0c;可作为教学或学习的参考。markdown版本已归档至【Github仓库&#xff1a;https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 循环码生成多项式与…

详解七层反向代理与四层反向代理【Nginx+Tomcat负载均衡、动静分离】

文章目录 1. 反向代理和正向代理概述2.七层反向代理实例2.1 实验环境描述2.2 部署Nginx负载均衡器2.3 部署2台Tomcat应用服务器2.3.1 部署CentOS 7-5 Tomcat服务器2.3.2 部署CentOS 7-6 Tomcat多实例服务器 3.四层反向代理实例3.1 实验环境描述3.2 部署Nginx负载均衡器&#xf…

2023年护网常见面试题汇总!看过的都通过面试啦!

​时间过得很快&#xff0c;回想起去年的这个时候&#xff0c;我也正在准备秋招&#xff0c;今天的我刚刚结束培训。 我的个人情况就读于某双非大学&#xff0c;信息与计算科学&#xff08;大数据方向&#xff0c;校企合作&#xff0c;一个介于数学与计算机之间的专业&#xf…

JVM调优参数+Visual GC 插件安装及使用,jvm分析

调优的目的是什么呢&#xff1f; 1.就是让系统更加的丝滑&#xff0c;让用户体验变得更好。 2.提升系统的性能&#xff0c;提高效率&#xff0c;充分利用jvm内存。 更多参考->JVM常用调优参数 一.JVM参数配置位置 1.java.lang.OutOfMemoryError: Java heap space 解决方…

微信小程序开发之获取用户头像昵称

本文是对另一篇文档 https://blog.csdn.net/duke_ding2/article/details/130674320 的补充。 环境 微信开发者工具 Stable 1.06.2306020调试基础库 2.32.2 背景 在较低版本&#xff08;2.27.0及以下&#xff09;的基础库中&#xff0c;在小程序里可以使用 wx.getUserProfil…

PostgreSQL BTree(B-Link-tree) 索引 基本 实现原理

文章目录 背景BTreeBTreeB-Link-Tree 基本数据结构的插入实现BTree Insert 实现BTree Insert 实现 PostgreSQL BTree实现整体结构BTree 索引创建实现_bt_buildadd_bt_uppershutdown BTree 查询 _bt_search 实现BTree 插入 _bt_doinsert 实现_bt_split 节点分裂_bt_insert_paren…

flyway在Windows下安装及基本使用

文章目录 1. flyway中的SQL脚本命名2. flyway执行SQL脚本演示3. flyway中设置 ${CURRENT_DATE} 为当前时间的值 Flyway是一个开源的数据库迁移工具&#xff0c;用于管理和自动化数据库架构的演进。它允许开发人员和团队对数据库进行版本控制&#xff0c;并通过简单的命令行或脚…

【数据库与身份认证】课程笔记

目标&#xff1a; 知道如何配置MySQL数据库环境认识并使用常见的SQL语句操作数据库在Express中操作MySQL数据库了解Session的实现原理了解JWT的实现原理 目录&#xff1a; 数据库的基本概念安装并配置MySQLMySQL的基本使用在Express中操作MySQL前后端的身份认证 一. 数据库的…