当前位置: 首页 > news >正文

day43-Ansible-PlayBook

1.每日复盘与今日内容

1.1复盘

  • 安装Ansible🍟🍟🍟🍟🍟
  • inventory主机清单定义方法🍟🍟🍟🍟🍟
  • 8个常用模块

1.2今日内容

  • 使用playbook重构backup🍟🍟🍟🍟🍟
  • 使用playbook重构nfs服务🍟🍟🍟🍟🍟
  • 使用playbook重构nginx服务🍟🍟🍟🍟🍟
  • 使用playbook重构PHP服务🍟🍟🍟🍟🍟
  • 使用playbook重构wordpress业务🍟🍟🍟🍟🍟

2.Ansible-playbook

  • 基本概念

Playbook是Ansible 的自动化脚本,采用 YAML 格式编写,用于描述在远程主机上执行的策略和步骤。与临时命令(ad-hoc commands)相比,Playbook 更强大,适合复杂部署和配置管理场景。它们通常保存在版本控制系统中,用于推送配置或确保远程系统符合规范

  • 组成

  • 运行结果颜色

颜色

含义

说明

绿色

成功执行且未发生状态改变

任务成功完成,但目标系统没有发生变化(幂等性体现)

黄色

成功执行且发生了状态改变

任务成功完成,并且目标系统的状态发生了改变(如文件被创建、服务被启动)

红色

执行失败

任务执行过程中出现错误,需要排查原因。

紫色

警告信息

提示可能存在的问题或建议,但任务可能继续执行

  • playbook语法
YAML基本语法规则
规则	描述	示例
缩进	使用空格进行缩进(通常为2个空格),禁止使用制表符 (Tab)。不同缩进级别表示不同的层级关系。	
键值对	使用冒号 : 加空格来分隔键和值。	name: Install Nginx  # 如果后面接东西那么冒号后面必须有空格
列表	使用短横线 - 加空格来表示列表项。所有列表项具有相同的缩进级别。	<pre>- apple
注释	使用井号 # 来添加注释。	# This is a comment
file:path: state: touch扩展名	说明	使用场景
.yml	更常见、更简洁的扩展名。	这是 Ansible Playbook 社区中的事实标准和首选。几乎所有 Ansible 示例和文档都使用 .yml。
.yaml	更正式、更完整的扩展名。	在某些其他生态系统中可能更受青睐,但在 Ansible 领域远不如 .yml 常见。

3.PlayBook实战

案例1.在webs上面创建a.txt

root@Ansible01 /etc/ansible# vim a.yml
- hosts: webstasks: - name: touch a.txtfile:path: /root/a.txtowner: rootgroup: rootmode: 0644state: touch#检测语法有无问题
root@Ansible01 /etc/ansible# ansible-playbook --syntax-check a.ymlplaybook: a.yml#执行
ansible-playbook a.yml

案例2.复制文件到目标b.txt

[root@m01 ansible]# cat b.yml
- hosts: webstasks:- name: copy file to webs /root/copy:src: /etc/hostsdest:  /root/owner: root group: rootmode: 0600
[root@m01 ansible]# ansible-playbook  --syntax-check b.ymlplaybook: b.ymlansible-playbook  b.yml

案例3.在web02上创建虚拟用户oldboy01 uid 888 gid 888

[root@m01 ansible]# cat user.yml
- hosts: 10.0.0.8tasks:- name: Create Group oldboy01group: name: oldboy01gid: 888state: present- name: Create User oldboy01user:name: oldboy01uid: 888group: oldboy01state: presentshell: /sbin/nologincreate_home: false
[root@m01 ansible]# ansible-playbook  --syntax-check user.ymlplaybook: user.yml[root@m01 ansible]# ansible-playbook  user.yml

playbook重构backup

步骤:
1.安装rsync
2.配置rsync(提前将rsync配置文件复制到ansible)
3.创建组
4.创建用户
5.创建密码文件
6.修改密码文件权限为600
7.创建共享目录
8.启动rsync并开机自启动#前期准备
#先将配置好的文件准备好
root@Ansible01 /etc/ansible# scp 10.0.0.7:/etc/rsyncd.conf  .#第一步:初始化41
vm镜像到初始化完成
#第二步:Inventory主机清单配置41backup
root@Ansible01 ~# vim /etc/ansible/hosts
[backup]
10.0.0.41
#第三步:和41做免密钥认证
ssh-copy-id 10.0.0.41
  • 编写playbook
[root@m01 ansible]# cat backup.yml 
- hosts: backuptasks:- name: Install Rsync Serveryum:name: rsyncstate: present- name: Configure Rsync Servercopy:src: rsyncd.confdest: /etc/- name: Create Group wwwgroup:name: wwwgid: 666state: present- name: Create User wwwuser:name: wwwuid: 666group: wwwshell: /sbin/nologincreate_home: false- name: Create pass filecopy:content: rsync_backup:123dest: /etc/rsync.passwdmode: 0600- name: Create /backup dirfile:path: /backupstate: directoryowner: wwwgroup: www- name: Start Rsync Serversystemd:name: rsyncdstate: startedenabled: yes
  • 测试playbook
[root@m01 ansible]# ansible-playbook  --syntax-check backup.ymlplaybook: backup.yml
#执行playbook
[root@m01 ansible]# ansible-playbook backup.yml#找一台10.0.0.7和41进行进程守护
rsync -avz o.txt rsync_backup@10.0.0.41::backup

playbook重构nfs服务

  • 步骤
1.安装nfs-utils
2.配置nfs 将配置文件提前拷贝到ansible
3.创建组
4.创建用户www
5.修改用户属主属组
6.启动nfs
7.客户端挂载
  • 前期准备
#第一步: 初始化31#第二步: Inventory主机清单配置31
[root@m01 ansible]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31[webs]
10.0.0.7
10.0.0.8[dbs]
10.0.0.51[backup]
10.0.0.41#第三步: 和31做免秘钥认证
[root@m01 ansible]# ssh-copy-id 10.0.0.31
  • 编写playbook
[root@m01 ansible]# cat nfs.yml 
- hosts: nfstasks:- name: Install NFS Serveryum:name: nfs-utilsstate: present- name: Configure NFS Servercopy:src: exportsdest: /etc/- name: Create Group wwwgroup:name: wwwgid: 666state: present- name: Create User wwwuser:name: wwwuid: 666group: wwwshell: /sbin/nologincreate_home: false- name: Create /data/wpfile:path: /data/wpstate: directoryowner: wwwgroup: www- name: Start nfs Serversystemd:name: nfsstate: startedenabled: yes- hosts: webstasks:- name: Install nfs yum:name: nfs-utilsstate: present- name: mountmount:src: 172.16.1.31:/data/wppath: /mntfstype: nfsstate: mounted
[root@m01 ansible]# ansible-playbook  --syntax-check nfs.ymlplaybook: nfs.yml
[root@m01 ansible]# ansible-playbook  nfs.yml
  • 测试nfs

playbook重构nginx服务

  • 步骤
1.安装
2.配置(收集nginx.conf)
[root@m01 ansible]# scp 10.0.0.7:/etc/nginx/nginx.conf .
3.启动
  • 前期准备
#1.初始化WEB02#2.免秘钥
[root@m01 ansible]# ssh-copy-id 10.0.0.8
  • 编写playbook
- hosts: 10.0.0.8tasks:- name: Configure Nginx Repoyum_repository:name: nginxdescription: Nginx YUM repobaseurl: http://nginx.org/packages/centos/7/$basearch/gpgcheck: noenabled: yes- name: Install Nginx Serveryum:name: nginxstate: present- name: Create Group wwwgroup:name: wwwgid: 666state: present- name: Create User wwwuser:name: wwwuid: 666group: wwwshell: /sbin/nologincreate_home: false- name: Configure Nginx Servercopy:src: nginx.confdest: /etc/nginx/- name: Start Nginx Serversystemd:name: nginxstate: startedenabled: yes
[root@m01 ansible]# ansible-playbook  --syntax-check nginx.ymlplaybook: nginx.yml[root@m01 ansible]# ansible-playbook nginx.yml 

[root@m01 ansible]# cat php.yml 
- hosts: 10.0.0.8tasks:- name: Install PHP Serveryum:name: - php- php-bcmath- php-cli- php-common- php-devel- php-embedded- php-fpm- php-gd- php-intl- php-mbstring- php-mysqlnd- php-opcache- php-pdo- php-process- php-xml- php-jsonstate: present- name: Configure PHP Servercopy:src: www.confdest: /etc/php-fpm.d/- name: Start PHP Serversystemd:name: php-fpmstate: startedenabled: yes
[root@m01 ansible]# ansible-playbook  --syntax-check php.ymlplaybook: php.yml[root@m01 ansible]# ansible-playbook  php.yml

PS:

echo php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-process php-xml php-json |xargs -n1| awk '{print "- "$1}'

可快速将很多安装包规整为如上格式

ps:注意www.conf要修改两处

playbook重构PHP服务

  • 方式一: 安装过的wordpress
1.将数据库的wordpress库导出来
2.将已经部署过的wordpress代码导出来
3.将wp.conf拷贝出来
4.playbook将wordpress库导入到51(假如51重新安装的)
5.playbook将wp.conf拷贝到/etc/nginx/conf.d/
6.playbook将代码 /code/wp 拷贝web02的/code下
以上完成后直接打开不走部署流程、直接之前啥样、打开就是啥样。
  • 方式二: 未安装过wordpress
vim wp.yml
- hosts: 10.0.0.8tasks:- name: delete default config filefile:path: /etc/nginx/conf.d/default.confstate: absent- name: Copy wp Configure to WEB02copy:src: wp.confdest: /etc/nginx/conf.d/- name: Restart Nginx Serversystemd:name: nginxstate: restarted- name: Create code dirfile:path: /codestate: directory- name: wget wordpres codeget_url:url:  https://cn.wordpress.org/wordpress-6.0-zh_CN.tar.gzdest: /opt/- name: unarchive wordpress code unarchive:src: /opt/wordpress-6.0-zh_CN.tar.gzdest: /code/remote_src: yescreates: /code/wordpress#检查
ansible-playbook  --syntax-check wp.yml
#运行
ansible-playbook  wp.yml#解析
10.0.0.8 www.wp.com#在51重新创建库
[root@db01 ~]# mysql -uroot -plzy123.com -e 'create database wp;'
[root@db01 ~]# mysql -uroot -plzy123.com -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| w                  |
| wordpress          |
| zh                 |
| zrlog              |
+--------------------+

4.今日总结

  • 使用playbook重构backup🍟🍟🍟🍟🍟
  • 使用playbook重构nfs服务🍟🍟🍟🍟🍟
  • 使用playbook重构nginx服务🍟🍟🍟🍟🍟
  • 使用playbook重构PHP服务🍟🍟🍟🍟🍟
  • 使用playbook重构wordpress业务🍟🍟🍟🍟🍟

http://www.dtcms.com/a/358343.html

相关文章:

  • web渗透PHP反序列化漏洞
  • HunyuanVideo-Foley - AI视频配音 根据视频和文本描述生成逼真的电影级音频 支持50系显卡 一键整合包下载
  • (三)Python语法基础(实战)
  • LabVIEW测斜设备承压试验台
  • pip 镜像源配置(清华/阿里/豆瓣)详解
  • 智瞰风评 - 基于大语言模型的个人征信报告风险分析师
  • vscode新建终端默认不是cmd问题
  • 无人机也能称重?电力巡检称重传感器安装与使用指南
  • macOS 15.6 ARM golang debug 问题
  • 如何评价 Kimi 开源的推理平台 Mooncake?对行业有什么影响?
  • 从零实现一个可扩展的规则解析引擎 —— 支持 AND/OR 优先级、短路求值与多类型运算符
  • Vue2之axios在脚手架中的使用以及前后端交互
  • RabbitMQ 和 Kafka
  • 函数(2)
  • 并发编程——08 Semaphore源码分析
  • 免费在线图片合成视频工具 ,完全免费
  • 文件夹命名软件,批量操作超简单
  • 美团8-30:编程题
  • 深入解析前缀和算法:原理、实现与应用
  • 医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(六)
  • react组件
  • C++优先级队列priority_queue的模拟实现
  • Trailing Zeros (计算 1 ~ n 中质因子 p 的数量)
  • Java全栈开发面试实战:从基础到高并发的全面解析
  • Redis数据类型概览:除了五大基础类型还有哪些?
  • leetcode643. 子数组最大平均数 I
  • AI-调查研究-65-机器人 机械臂控制技术的前世今生:从PLC到MPC
  • vscode+cmake+mingw64+opencv环境配置
  • wpf之依赖属性
  • 具有类人先验知识的 Affordance-觉察机器人灵巧抓取