云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色
一、Ansible-playbook实战
1.Ansible-playbook安装软件

```bash
#编写yml
[root@ansible ansible]# cat wget.yml
- hosts: backup
tasks:
- name: Install wget
yum:
name: wget
state: present
#检查playbook的语法
[root@ansible ansible]# ansible-playbook --syntax-check wget.yml
playbook: wget.yml
#执行playbook
[root@ansible ansible]# ansible-playbook wget.yml
2.Playbook重构backup服务
```bash
1.定义主机清单
[root@ansible ansible]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41
2.写playbook重构
[root@ansible ansible]# cat backup.yml
- hosts: backup
tasks:
- name: Install Rsync Server
yum:
name: rsync
state: present
- name: Configure Rsync Server
copy:
src: rsyncd.conf
dest: /etc/rsyncd.conf
- name: Create www Group
group:
name: www
gid: 666
- name: Create User www
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: Configure passwd file
copy:
content: rsync_backup:123456
dest: /etc/rsync.passwd
mode: 0600
- name: Create Dir /backup
file:
path: /backup
state: directory
owner: www
group: www
- name: Start Rsync Server
systemd:
name: rsyncd
state: started
enabled: yes

3.playbook重构nfs服务
```bash
1.定义主机清单
[root@ansible ansible]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41
2.打通免秘钥
[root@ansible ~]# ssh-copy-id 10.0.0.31
3.写playbook
[root@ansible ansible]# cat nfs.yml
- hosts: nfs
tasks:
- name: Install NFS Server
yum:
name: nfs-utils
state: present
- name: Configure nfs Server
copy:
src: exports
dest: /etc/
- name: Create www Group
group:
name: www
gid: 666
- name: Create User www
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: Create /data/wp
file:
path: /data/wp
state: directory
owner: www
group: www
- name: Start NFS Server
systemd:
name: nfs
state: started
enabled: yes
客户端挂载:
[root@ansible ansible]# cat web.yml
- hosts: web01
tasks:
- name: Install nfs-utils
yum:
name: nfs-utils
state: present
- name: mount nfs /data/wp-->wordpress
mount:
src: 172.16.1.31:/data/wp
path: /code/wordpress/wp-content/uploads/
state: mounted
fstype: nfs
```

4.Playbook重构nginx-php

```bash
1.定义主机清单
[root@ansible ~]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41
web01 ansible_ssh_host=10.0.0.7
web02 ansible_ssh_host=10.0.0.8
2.免秘钥
[root@ansible ~]# ssh-copy-id 10.0.0.8
3.playbook
[root@ansible ansible]# cat nginx.yml
- hosts: web02
tasks:
- name: Nginx Repo
yum_repository:
name: nginx
description: Nginx YUM repo
baseurl: http://nginx.org/packages/centos/7/$basearch/
gpgcheck: no
enabled: yes
- name: Install Nginx Server
yum:
name: nginx
state: present
- name: Configure Nginx Server
copy:
src: nginx.conf
dest: /etc/nginx/
- name: create group www
group:
name: www
gid: 666
- name: Create www user
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: Start Nginx Server
systemd:
name: nginx
state: started
enabled: yes

5.Playbook重构mariadb
[root@ansible ansible]# cat php.yml
- hosts: web02
tasks:
- name: Install PHP Server
yum:
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-json
state: present
- name: Configure PHP Server
copy:
src: www.conf
dest: /etc/php-fpm.d/
- name: Start PHP Server
systemd:
name: php-fpm
state: started
enabled: yes

6.整合playbook文件
[root@ansible ansible]# cat mysql.yml
- hosts: db01
tasks:
- name: Install mariadb Server
yum:
name: mariadb-server,python3-mysqlclient
state: present
- name: Start mariadb Server
systemd:
name: mariadb
state: started
enabled: yes
- name: copy all.sql to 51
copy:
src: all.sql
dest: /root/
- name: Configure Mmriadb Server
mysql_db:
login_user: root
login_host: localhost
login_port: 3306
name: all
target: /root/all.sql
state: import
- name: Restart mariadb
systemd:
name: mariadb
state: restarted
```
##### 07.部署wordpress
```bash
[root@ansible ansible]# cat wp.yml
- hosts: web02
tasks:
- name: Delete Default default.conf
file:
path: /etc/nginx/conf.d/default.conf
state: absent
- name: Copy wp.conf
copy:
src: wp.conf
dest: /etc/nginx/conf.d/
- name: unarchive wp.tar.gz
unarchive:
src: wp.tar.gz
dest: /
creates: /code/wordpress
- name: Restart Nginx Server
systemd:
name: nginx
state: restarted
```




二、Ansible-流程控制
1.vars变量定义方法
```bash
案例1.定义单个变量
[root@ansible ansible]# cat var.yml
- hosts: backup
vars:
pk: wget
tasks:
- name: Install package
yum:
name: "{{ pk }}"
state: present
案例2.定义多个变量,使用列表的方式 -
[root@ansible ansible]# cat var.yml
- hosts: backup
vars:
pk:
- wget
- tree
- lrzsz
tasks:
- name: Install package
yum:
name: "{{ pk }}"
state: present
案例3.定义路径的变量
#变量单独调用 必须加双引号
[root@ansible ansible]# cat var.yml
- hosts: backup
vars:
- pk1: 10.0.0.41
- pk2: backup
tasks:
- name: create file
file:
path: "{{ pk1 }}"
state: touch
#注意如果变量带路径则不需要使用""
[root@ansible ansible]# cat var.yml
- hosts: backup
vars:
- pk1: 10.0.0.41
- pk2: backup
tasks:
- name: create file
file:
path: /root/"{{ pk1 }}"
state: touch


2.vars变量定义方法
1.先创建存放变量的文件
[root@ansible ansible]# cat v.yml
pk1: lrzsz
pk2: tree
2.在play中调用比变量
[root@ansible ansible]# cat var.yml
- hosts: backup
vars_files: v.yml
tasks:
- name: create file
file:
path: /root/{{ pk2 }}_{{ pk1 }}
state: directory
案例: 定义变量,使用列表调用多个变量
[root@ansible ansible]# cat v.yml
pk1: lrzsz
pk2: tree
[root@ansible ansible]# cat var.yml
- hosts: backup
vars_files: v.yml
tasks:
- name: yum lrzsz wget
yum:
name:
- "{{ pk1 }}"
- "{{ pk2 }}"
state: present
```


3.变量注册
4.when判断语法格式
5.when判断案例
6.handlers模块
7.nfs服务重构
三、Ansible-字典循环-roles角色
1.字典循环
2.tasks任务整合到一个文件
3.jinja2的循环和判断语法
4.rsync使用jinja2模版重构
5.Roles角色重新编排rsync
6.Roele角色重新编排nfs
相关文章:
云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色
一、Ansible-playbook实战 1.Ansible-playbook安装软件 bash #编写yml [rootansible ansible]# cat wget.yml - hosts: backup tasks: - name: Install wget yum: name: wget state: present #检查playbook的语法 [rootansible ansible]…...
《运维工程师如何利用DeepSeek实现智能运维:分级实战指南》
目录 智能运维革命:DeepSeek带来的范式转变DeepSeek核心运维能力全景解析分级实战场景与解决方案 3.1 初级工程师:自动化运维入门3.2 中级工程师:复杂系统诊断与优化3.3 高级工程师:架构级智能运维典型项目案例深度剖析 4.1 金融系统全链路监控体系构建4.2 电商大促资源弹性…...
windows事件倒计时器与提醒组件
widgets 这是桌面组件前端开源组件,作者称:项目还在持续完善中,目前包含键盘演示、抖音热榜、喝水提醒、生日列表、待办事项、倒计时、灵动通知、打工进度等多个组件 有vue编程能力的可以自己做组件 百度网盘 夸克网盘 桌面组件 | Ca…...
Mac OS JAVA_HOME设置
个人博客地址:Mac OS JAVA_HOME设置 | 一张假钞的真实世界 在MacOS上使用DMG文件安装了Jdk8 之后,在默认路径下找不到JDK的HOME路径: $ which java /usr/bin/java $ ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 12 6 2015 /usr/b…...
6.3 DBMS的功能和特征
文章目录 DBMS的6大功能DBMS的3个特征DBMS的分类 DBMS的6大功能 DBMS包含数据定义,数据库操作(检索、插入、修改、删除),数据库运行管理(保证多用户环境下正常运行),数据组织、存储、管理&…...
C# ConcurrentQueue 使用详解
总目录 前言 在C#多线程编程中,数据共享如同走钢丝——稍有不慎就会引发竞态条件(Race Condition)或死锁。传统Queue<T>在并发场景下需要手动加锁,而ConcurrentQueue<T>作为.NET Framework 4.0 引入的线程安全集合&a…...
python脚本文件设置进程优先级(在.py文件中实现)
在 Python 代码中可以直接通过 psutil 模块或 系统调用 来设置进程优先级,无需依赖终端命令。以下是具体方法和示例: 1. 使用 psutil 模块(跨平台推荐) psutil 是一个跨平台库,支持 Windows、Linux 和 macOS。通过其 …...
基于Django快递物流管理可视化分析系统(完整系统源码+数据库+详细开发文档+万字详细论文+答辩PPT+详细部署教程等资料)
文章目录 基于Django快递物流管理可视化分析系统(完整系统源码数据库详细开发文档万字详细论文答辩PPT详细部署教程等资料)一、项目概述二、项目说明三、研究意义四、系统设计技术架构 五、功能实现六、完整系统源码数据库详细开发文档万字详细论文答辩P…...
el-table树状表格,默认展开第一个节点的每一层
效果如图 <template><el-table:data"tableData"style"width: 100%":tree-props"{ children: children, hasChildren: hasChildren }":expand-row-keys"expandRowKeys"row-key"id"expand-change"handleExpan…...
【雅思博客05】New Guy in Town
Daily Life ‐ New Guy in Town 原文: A: Oh, I don’t know if you heard, but someone moved into that old house down the road. B: Yeah, I know. I met the owner of the house yesterday as he was moving in. His name is Armand. A: Really? What’s h…...
【Spring详解三】默认标签的解析
三、默认标签的解析 Spring的标签中有 默认标签和 自定义标签,两者的解析有着很大的不同,这次重点说默认标签的解析过程。 DefaultBeanDefinitionDocumentReader.class 默认标签的解析是在 DefaultBeanDefinitionDocumentReader.parseDefaultElement()函…...
Windows 图形显示驱动开发-IoMmu 模型
输入输出内存管理单元 (IOMMU) 是一个硬件组件,它将支持具有 DMA 功能的 I/O 总线连接到系统内存。 它将设备可见的虚拟地址映射到物理地址,使其在虚拟化中很有用。 在 WDDM 2.0 IoMmu 模型中,每个进程都有一个虚拟地址空间,即&a…...
简单易懂,解析Go语言中的Channel管道
Channel 管道 1 初始化 可用var声明nil管道;用make初始化管道; len(): 缓冲区中元素个数, cap(): 缓冲区大小 //变量声明 var a chan int //使用make初始化 b : make(chan int) //不带缓冲区 c : make(chan stri…...
STM32 USB 设备的描述信息作用
在使用 STM32 USB 功能时 usbd_desc.c 文件中定义了一段宏,以下解每段宏的用途。 #define USBD_VID 1155 #define USBD_LANGID_STRING 1033 #define USBD_MANUFACTURER_STRING "STMicroelectronics" #define US…...
Redis字符串常见命令(String)
字符串常见命令(String) Redis 中的字符串类型是一种非常基础且常用的数据类型,它不仅可以存储任何形式的字符串(包括文本数据),还可以对数字字符串进行自增、自减等操作。以下是对 Redis 字符串类型常见命…...
Educational Codeforces Round 174 (Rated for Div. 2)(ABCD)
A. Was there an Array? 翻译: 对于整数数组 ,我们将其相等特征定义为数组 ,其中,如果数组 a 的第 i 个元素等于其两个相邻元素,则 ;如果数组 a 的第 i 个元素不等于其至少一个相邻元素,则 …...
基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
基于知识图谱的问答系统:后端PythonFlask,数据库Neo4j,前端Vue3 引言 随着人工智能技术的不断发展,知识图谱作为一种结构化的知识表示方式,逐渐成为问答系统的重要组成部分。本文将介绍如何构建一个基于知识图谱的问答…...
面试知识点2
文章目录 1. Linux 与 DockerLinux 基本指令VMware 安装 CentOSDocker 拉取镜像创建容器、部署 Spring Boot 项目 2. 关系型数据库 MySQL数据库语法多表关联查询数据库索引 3. 事务与死锁事务的隔离级别死锁的原因和避免方法 4. 排序算法与数据结构二分查找快速排序常见数据结构…...
Django项目之订单管理part1
一.前言 我们前面把django的常用知识点给讲完了,现在我们开始项目部分,项目是一个订单管理系统,我们同时也会在项目之中也会讲一些前面没有用到的知识点。 项目大概流程如下: 核心的功能模块: 认证模块,用…...
基于SSM+Vue的智能汽车租赁平台设计和实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
PySide6安装踩坑实录:手把手解决‘DLL load failed’等常见错误(Win10/Win11通用)
PySide6安装踩坑实录:手把手解决‘DLL load failed’等常见错误(Win10/Win11通用) 最近在帮团队新人配置Python图形界面开发环境时,发现PySide6的安装过程远比想象中坎坷。特别是当看到终端弹出"DLL load failed while impor…...
TI CC33xx芯片解析:WiFi 6与蓝牙5.3物联网方案
1. TI SimpleLink CC33xx系列芯片解析:专为物联网设计的WiFi 6/蓝牙5.3伴侣IC德州仪器(TI)最新推出的SimpleLink CC3300和CC3301芯片组,代表了物联网边缘设备无线连接技术的重大升级。作为业界首款支持WiFi 6(802.11ax)的伴侣型IC,它们通过灵…...
左值和右值:从根源理解 C++ 的引用与移动语义
在 C 里,“左值”和“右值”几乎是每一个进阶开发者绕不开的概念。它们看起来很基础——左值可以放在赋值号左边,右值只能放在右边——但这个朴素的定义在现代 C 中早已不够用了。C11 引入的右值引用、移动语义、完美转发,让这一对概念变得无…...
SQL嵌套查询中常见报错排查_语法与权限处理
MySQL嵌套查询常见错误包括:子查询多行报错(需用IN/LIMIT/聚合函数)、列作用域混淆(须显式加表别名)、权限不足(需逐表授权)、相关子查询性能差(缺索引或应改JOIN)。子查…...
STEP3-VL-10B部署与调用全攻略:WebUI交互和cURL API调用示例
STEP3-VL-10B部署与调用全攻略:WebUI交互和cURL API调用示例 1. 引言:为什么选择STEP3-VL-10B? STEP3-VL-10B是阶跃星辰推出的轻量级多模态模型,虽然只有10B参数,但在多项基准测试中表现优异。对于开发者而言&#x…...
2026个人远控软件终极对比:从延迟到画质,ToDesk远程控制竟吊打老牌软件?
先交代一下背景:我是一个重度远控用户,每天都要用到远程控制软件——在公司远程家里的电脑、在家里远程公司的机器、出门在外用手机远程处理紧急事务……过去两年,我把主流远控软件基本都用了一遍。今天这篇文章,不讲虚的…...
从ADOP官网案例出发,拆解CWDM/DWDM在实际网络部署中的配置流程与避坑指南
企业光纤网络升级实战:CWDM与DWDM选型配置全流程解析 当某跨国企业华东区数据中心需要将原有10Gbps骨干网升级至100Gbps时,技术团队面临的第一个抉择是:选择CWDM还是DWDM方案?这个问题没有标准答案,却直接关系到数百万…...
DLT Viewer诊断日志分析工具:模块化架构与高性能实时处理技术解析
DLT Viewer诊断日志分析工具:模块化架构与高性能实时处理技术解析 【免费下载链接】dlt-viewer Diagnostic Log and Trace viewing program 项目地址: https://gitcode.com/gh_mirrors/dl/dlt-viewer DLT Viewer作为COVESA联盟主导的汽车电子诊断日志分析工具…...
从零开始学iOS开发(第三十二篇):SwiftUI 拖拽交互 —— 构建流畅的拖放体验
欢迎来到本系列教程的第三十二篇。在前三十一篇中,你已经学习了从Swift基础到数据可视化的全方位iOS开发技能。现在,你能够构建出功能完善、数据清晰的应用了。但是,如何让用户与应用进行更自然的交互?如何让用户通过拖拽来重新排…...
Mac Mouse Fix终极指南:3步让你的普通鼠标变身Mac生产力神器
Mac Mouse Fix终极指南:3步让你的普通鼠标变身Mac生产力神器 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾为macOS上第三…...



