playbook一键源码部署nginx、Mysql主从复制

本文介绍了如何使用Ansible playbook自动化部署Nginx和配置MySQL主从复制。首先,展示了一键部署Nginx的步骤,包括安装依赖、解压源码、编译安装等。接着,详细说明了两种方法实现MySQL主从复制,通过mysql_user和mysql_replication模块以及shell模块进行配置。每一步都提供了具体的playbook任务示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:playbook格式规范,有些符号在这里打不出来,或是在显示的时候会有所变动,切记要按格式来
playbook一键源码部署nginx

  • hosts: webserver
    tasks:
    • name: cp nginx.tar.gz
      copy: src=/root/nginx-1.17.6.tar.gz dest=/root/
    • name: install env
      yum: name=openssl-devel,pcre-devel,zlib-devel,gcc,gcc-c++,make state=present
    • name: uncomepress nginx.tar.gz
      unarchive: src=/root/nginx-1.17.6.tar.gz dest=/root/ copy=no
    • name: make nginx group
      group: name=nginx gid=996
    • name: make nginx user
      user: name=nginx uid=996 group=998 shell=/sbin/nologin create_home=no
    • name: configure nginx
      shell: cd nginx-1.17.6 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install && ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginxctl && nginxctl

playbook一键部署Mysql主从复制
第一种方法(mysql模块)
需要安装MySQL-python


  • hosts: Master,Slave
    tasks:
    • name: install mariadb MySQL-python
      yum: name=mariadb,mariadb-server,MySQL-python state=present
    • name: start mariadb
      service: name=mariadb state=started enabled=yes
    • mysql_user: user=root password=123 update_password=always
  • hosts: Master
    tasks:
    • mysql_user: user=root login_host=localhost login_password=123 name=repl password=123 priv=’.:ALL’ state=present host=’%’
    • name: vi /etc/my.cnf
      copy: src=/root/.ansible/m/my.cnf dest=/etc/my.cnf
    • name: restart mariadb
      service: name=mariadb state=restarted
  • hosts: Slave
    tasks:
    • name: vi /etc/my.cnf
      copy: src=/root/.ansible/s/my.cnf dest=/etc/my.cnf
    • name: restart mariadb
      service: name=mariadb state=restarted
    • name: get mysql-master status
      mysql_replication: login_user=‘root’ login_password=‘123’ mode=“getmaster”
      delegate_to: 192.168.70.142
      register: master1
    • name: configure replication on the slave.
      mysql_replication: login_user=‘root’ login_password=‘123’ mode=changemaster master_host=‘192.168.70.142’ master_user=‘repl’ master_password=‘123’ master_log_file={{ master1.File }} master_log_pos={{ master1.Position }}
    • name: start slave
      mysql_replication: login_user=‘root’ login_password=‘123’ mode=startslave

第二种方法(shell模块)


  • hosts: Master,Slave
    tasks:
    • name: install mariadb
      yum: name=mariadb,mariadb-server state=present
    • name: start mariadb
      service: name=mariadb state=started enabled=yes
    • name: make maraidb password
      shell: mysqladmin -uroot password 123
  • hosts: Master
    tasks:
    • name: make user and give privileges
      shell: mysql -uroot -p’123’ -e “create user ‘repl’;grant all privileges on . to ‘repl’@‘192.168.70.131’ identified by ‘123’ with grant option;”
    • name: copy my.cnf
      copy: src=/root/.ansible/m/my.cnf dest=/etc/my.cnf
    • name: restart mariadb
      service: name=mariadb state=restarted
  • hosts: Slave
    tasks:
    • name: copy my.cnf
      copy: src=/root/.ansible/s/my.cnf dest=/etc/my.cnf
    • name: restart mariadb
      service: name=mariadb state=restarted
    • name: change Master
      shell: mysql -uroot -p’123’ -e “change master to master_host=‘192.168.70.142’,master_port=3306,master_user=‘repl’,master_password=‘123’,master_log_file=‘master-bin.000001’,master_log_pos=245;start slave;”
<think>嗯,用户这次明确要求Linux运维从零基础到社招的完整学习路线,还附带每日任务建议。从引用的材料看,用户可能是个转型者,经历过实操挫折(如网卡配置失败),特别需要系统化方案。用户引用的几篇材料很有价值:第一篇提到《Linux就该这么学》实操指导性强;第二篇强调社招加分项(原理/网络/算法);第三篇展示项目管理工具;第四篇指出架构理解的重要性。这些正好对应运维的硬技能(OS/网络)、工程能力(部署/监控)、软实力(自动化/架构)。在规划路线时,要注意三点:一是用户“零基础”起步需要阶梯式难度设计;二是社招要求能覆盖企业高频需求(如故障排查、云服务);三是引用[1]的经验说明文档易过时,必须培养问题解决能力而非死记命令。核心学习模块应该分层设计:先解决“能用Linux”(文件/用户/包管理),再解决“会管服务”(Web/DB集群),最后突破“高效运维”(容器/编排),每阶段穿插实践项目(如克隆VM故障复现)。引用[3]的敏捷管理思想可以融入每日任务闭环——记录问题/复盘/改进。针对社招准备,需要突出差异化竞争力:普通运维懂部署,优秀运维懂TCP重传率对K8s集群的影响(引用2的底层原理)。每日任务要包含“五分钟原理时间”,比如每天用tcpdump分析一次握手过程。最后风险提示:避免引用[4]提到的“架构空泛病”——如果学Docker只背命令不思考cgroup实现,面试遇到Namespace原理就暴露短板了。路线中每个阶段都设置“为什么”环节(比如为什么Prometheus用Pull模型)。</think> 根据你的需求,我整合了零基础到社招的Linux运维学习路线及每日任务规划,结合企业实际需求和引用资料的核心要点,制定以下系统化方案: --- ### **一、Linux运维全阶段学习路线** #### **阶段1:Linux基础入门(2-3个月)** | **学习模块** | **核心内容** | **实践目标** | |--------------------|----------------------------------------------------------------------------|-------------------------------------| | 系统基础 | 文件结构($`/etc`、`/var`)、用户权限($`chmod/chown`)、包管理($`yum/apt`) | 独立安装配置CentOS/Ubuntu系统 | | 命令操作 | 50+常用命令($`grep`、`sed`、`awk`、`find`)、Vim操作、管道符($`\|`) | 编写Shell脚本实现日志分析 | | 网络配置 | 网卡配置($`ifconfig`/`ip`)、防火墙($`firewalld/iptables`)、路由表($`route`) | 解决多网卡绑定/克隆虚拟机网络故障[^1] | #### **阶段2:服务部署与监控(2-3个月)** | **学习模块** | **核心内容** | **实践目标** | |--------------------|---------------------------------------------------------------------------|-------------------------------------| | Web服务 | Nginx/Apache配置($`server{}`)、HTTPS证书、负载均衡 | 部署LNMP集群并实现AB压力测试 | | 数据库管理 | MySQL备份($`mysqldump`)、主从复制、慢查询优化($`EXPLAIN`) | 构建高可用MySQL集群 | | 监控告警 | Zabbix/Prometheus监控项、Grafana看板、告警规则 | 监控服务器CPU/磁盘/服务状态阈值 | #### **阶段3:自动化与架构(社招核心)** | **学习模块** | **核心内容** | **实践目标** | |--------------------|---------------------------------------------------------------------------|-------------------------------------| | 脚本自动化 | Python脚本($`paramiko`/`requests`)、Ansible剧本($`playbook`) | 编写自动化巡检脚本 | | 容器化 | Docker镜像($`Dockerfile`)、K8s基础($`pod/deployment`)、CI/CD流水线 | 容器化部署微服务应用 | | 架构设计 | 高可用架构($`Keepalived`)、灾备方案、云服务(AWS/Aliyun) | 设计可容灾的电商系统架构[^4] | --- ### **二、每日学习任务模板** ```markdown **上午(原理深化)** 1. 30分钟阅读官方文档(如Nginx配置参数优化) 2. 1小时学习计算机基础: - 网络协议:TCP三次握手($`SYN/SYN-ACK/ACK`)[^2] - 系统原理:进程调度($`nice`值)、内存管理($`Swap`) **下午(实战操作)** 1. 实验环境操作(VMware/KVM): - 故障复现:修复网卡MAC冲突[^1] - 服务部署:搭建ELK日志系统 2. 代码开发: - 编写Python监控脚本(采集磁盘使用率) - GitHub提交日更项目[^2] **晚间(复盘提升)** 1. 站会复盘:用Tower记录今日问题/解决方案[^3] 2. 技术博客:输出今日学习笔记(如iptables规则调试) ``` --- ### **三、社招专项准备** 1. **底层原理突破** - 重点掌握:Linux进程调度($`CFS`)、文件系统($`inode`)、网络协议栈($`netfilter`) - 面试题案例:*TIME_WAIT状态过多的解决方法?* 2. **架构思维训练** - 分析开源项目:K8s调度器源码阅读[^2] - 设计题演练:*如何设计千万级并发的监控系统?* 3. **工程能力证明** - GitHub仓库:包含Ansible角色/Dockerfile等 - 技术博客:持续更新故障排查实录 > **关键提示**:引用[1]的经验表明,**克隆虚拟机导致的网卡冲突**是典型实战问题;引用[2]强调社招需**系统原理+开源项目深度**;引用[3]推荐用**Git+Tower**实现敏捷管理。 --- ### **四、学习资源推荐** 1. 基础教材:《Linux就该这么学》(实操案例丰富)[^1] 2. 网络协议:$`TCP/IP Illustrated`(卷1) 3. 自动化工具:Ansible官方文档($`docs.ansible.com`) 4. 架构训练:$`《企业IT架构转型之道》` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SZX@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值