Ansible自动化运维学习——综合练习
目录
(一)练习一
1.新建一个role——app
2.创建文件
3.删除之前安装的httpd服务和apache用户
4.准备tasks任务
(1)创建组group.yml
(2)创建用户user.yml
(3)安装程序yum.yml
(4)修改模板httpd.conf.j2
(5)编写templ.yml
(6)编写start.yml
(7)编写copyfile.yml
(8)定义顺序main.yml
5.准备变量文件vars
(1)编写变量脚本——main.yml
6.准备触发器handlers
(1)编写脚本main.yml
7.编写playbook脚本调度任务
8.角色app目录结构
9.执行脚本
10.检查结果
(二)练习二——使用运算符//,设置缓存大小
1.准备工作
2.修改node141机器的内存
(1)node141现在的内存
(2)修改node141的内存
(3)修改node141后内存
(4)查看node142的内存
3.编辑配置文件
4.准备tasks任务
(1)编写yum.yml
(2)编写start.yml
(3)编写templ.yml
(4)编写main.yml
5.角色memcached目录结构
6.编写playbook脚本
7.检查并执行playbook脚本
8.脚本执行结果
(三)推荐资料
(一)练习一
1.新建一个role——app
[root@ansible145 ansible]# cd roles/[root@ansible145 roles]# rm -rf app/[root@ansible145 roles]# mkdir app[root@ansible145 roles]# cd app/
2.创建文件
[root@ansible145 app]# mkdir tasks templates vars handlers files[root@ansible145 app]# tree
.
├── files
├── handlers
├── tasks
├── templates
└── vars5 directories, 0 files
3.删除之前安装的httpd服务和apache用户
ansible all -m shell -a 'rm -rf /data/*'ansible all -m shell -a 'userdel -r apache'ansible all -m shell -a 'yum -y remove httpd'ansible all -m shell -a 'rpm -q httpd'
4.准备tasks任务
(1)创建组group.yml
- name: create groupgroup: name=app system=yes gid=123
(2)创建用户user.yml
- name: create useruser: name=app system=yes shell=/sbin/nologin uid=123
(3)安装程序yum.yml
- name: install packageyum: name=httpd
(4)修改模板httpd.conf.j2
[root@ansible145 tasks]# cp /etc/httpd/conf/httpd.conf ../templates/httpd.conf.j2[root@ansible145 tasks]# vim ../templates/httpd.conf.j241 #Listen 12.34.56.78:80
42 Listen {{ ansible_processor_vcpus*10 }}
43 #
44 # Dynamic Shared Object (DSO) Support64 #
65 User {{ username }}
66 Group {{ groupname }}
67
68 # 'Main' server configuration
(5)编写templ.yml
- name: copy conftemplate: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.confnotify: restart service
(6)编写start.yml
- name: start serviceservice: name=httpd state=started enabled=yes
(7)编写copyfile.yml
- name: copy confcopy: src=vhosts.conf dest=/etc/httpd/conf.d/ owner=app
(8)定义顺序main.yml
- include: group.yml
- include: user.yml
- include: yum.yml
- include: templ.yml
- include: copyfile.yml
- include: start.yml
5.准备变量文件vars
(1)编写变量脚本——main.yml
[root@ansible145 vars]# vim main.ymlusername: app
groupname: app
6.准备触发器handlers
(1)编写脚本main.yml
[root@ansible145 app]# vim handlers/main.yml- name: restart serviceservice: name=httpd state=restarted
7.编写playbook脚本调度任务
[root@ansible145 ansible]# vim app_role.yml- hosts: websrvsremote_user: rootroles:- app
8.角色app目录结构

9.执行脚本
[root@ansible145 ansible]# ansible-playbook app_role.yml
10.检查结果
[root@node141 ~]# ss -ntl
users:(("httpd",pid=10792,fd=4),("httpd",pid=10791,fd=4),("httpd",pid=10790,fd=4),("httpd",pid=10789,fd=4),("httpd",pid=10788,fd=4),("httpd",pid=10787,fd=4))[root@node141 ~]# getent passwd app
app:x:123:100::/home/app:/sbin/nologin[root@node141 ~]# getent group app
app:x:123:[root@node141 ~]# ps aux | grep app
app 10788 0.0 0.1 221948 2968 ? S 12:01 0:00 /usr/sbin/httpd -DFOREGROUND
app 10789 0.0 0.1 221948 2968 ? S 12:01 0:00 /usr/sbin/httpd -DFOREGROUND
app 10790 0.0 0.1 221948 2968 ? S 12:01 0:00 /usr/sbin/httpd -DFOREGROUND
app 10791 0.0 0.1 221948 2968 ? S 12:01 0:00 /usr/sbin/httpd -DFOREGROUND
app 10792 0.0 0.1 221948 2968 ? S 12:01 0:00 /usr/sbin/httpd -DFOREGROUND
root 10850 0.0 0.0 112660 964 pts/1 S+ 12:08 0:00 grep --color=auto app
(二)练习二——使用运算符//,设置缓存大小
要求每台被控机memcached的缓存空间为物理内存的1/4
1.准备工作
[root@ansible145 roles]# cd memcached/[root@ansible145 memcached]# mkdir tasks templates[root@ansible145 memcached]# yum install -y memcached[root@ansible145 memcached]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
2.修改node141机器的内存
(1)node141现在的内存

(2)修改node141的内存

(3)修改node141后内存

(4)查看node142的内存

3.编辑配置文件
[root@ansible145 memcached]# cp /etc/sysconfig/memcached templates/memcached.j2[root@ansible145 memcached]# vim templates/memcached.j2 PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="{{ ansible_memtotal_mb//4 }}"
OPTIONS=""
4.准备tasks任务
(1)编写yum.yml
- name: install packageyum: name=memcached
(2)编写start.yml
- name: start serviceservice: name=memcached state=started enabled=yes
(3)编写templ.yml
- name: copy conftemplate: src=memcached.j2 dest=/etc/sysconfig/memcached
(4)编写main.yml
- include: yum.yml
- include: templ.yml
- include: start.yml
5.角色memcached目录结构

6.编写playbook脚本
[root@ansible145 ansible]# vim memcached_role.yml- hosts: websrvsremote_user: rootroles:- memcached
7.检查并执行playbook脚本
[root@ansible145 ansible]# ansible-playbook -C memcached_role.yml[root@ansible145 ansible]# ansible-playbook memcached_role.yml
8.脚本执行结果
(三)推荐资料
http://galaxy.ansible.com
https://galaxy.ansible.com/explore#/
http://github.com/
http://ansible.com.cn/
https://github.com/ansible/ansible
https://github.com/ansible/ansible-examples
相关文章:
Ansible自动化运维学习——综合练习
目录 (一)练习一 1.新建一个role——app 2.创建文件 3.删除之前安装的httpd服务和apache用户 4.准备tasks任务 (1)创建组group.yml (2)创建用户user.yml (3)安装程序yum.yml (4)修改模板httpd.conf.j2 (5)编写templ.yml (6)编写start.yml (7)编写copyfile.yml (8…...
Java中正则表达式
一、概念 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。在众多语言中…...
13 硬链接和软链接
13.1 硬链接和软链接的区别 硬链接:A---B,假设B是A的硬链接,那么只要存在一个,无论删除哪一个,文件都能访问得到。 软链接:类似于快捷方式,删除源文件,快捷方式就访问不了。 13.2 创…...
智能合约安全审计
智能合约安全审计的意义 智能合约审计用于整个 DeFi 生态系统,通过对协议代码的深入审查,可以帮助解决识别错误、低效代码以及这些问题。智能合约具有不可篡改的特点,这使得审计成为任何区块链项目安全流程的关键部分。 代码审计对任何应用…...
矩阵置零(力扣)思维 JAVA
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 输入:matrix [[0,1,2,0],[3,4,5,2],[…...
centos制作openssh 9.3p2 rpm包
标题使用源码制作openssh 9.3p2 的rpm包 准备: 操作系统:CentOS Linux release 7.4.1708 (Core) #测试发现rpm包要在什么系统安装需要就需要在什么系统上制作 工具软件:rpm-build 源码文件:openssh-9.3p2.tar.gz x11-ssh-askpas…...
uni-app:切换页面刷新,返回上一页刷新(onShow钩子函数的使用)
切换页面刷新:通过onShow()便可实现 返回上一页通过uni.navigateBack({delta: 1});实现 以返回上一页刷新为例 从B页面返回上一页到A页面 在A页面写入方法refreshHandler() methods: { // 执行刷新逻辑refreshHandler() {uni.request({url: getApp().globalData.…...
全志F1C200S嵌入式驱动开发(调整cpu频率和dram频率)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 f1c200s默认的cpu频率是408M,默认的dram频率是156M。这两个数值,坦白说,都算不上特别高的频率。因为我们的晶振是24M输入,所以408/24=17,相当于整个cpu的频率只是晶振倍频了17…...
idea 设置了 vm options后无法启动
今天想扩展ideaj的JVM 设置了 vm options后无法启动 找了很久,重新卸载后安装也没有用 后面直接打开idea的bat文件 找到自己idea使用的.vmoptions文件,我是因为之前idea有缓存,一直用的我修改的文件,后面删了就可以启动了...
TPS54620RHLR是一款同步降压转换器
TPS54620RHLR是一款同步降压转换器,通过高效率和集成高压侧和低压侧MOSFET,为小型设计进行了优化。通过电流模式控制实现了进一步的空间节省,从而减少了元件数量,并通过选择高开关频率,减少了电感器的占地面积。输出电…...
主机漏洞利用演示MS17-010(永恒之蓝)
ms17-010危害:对被攻击方的电脑造成蓝屏! 申明:本篇文章的用意仅做学习使用 网络搭建环境: 软件:Vmware Workstation 17 攻击机:Kali 靶机环境:Windows 7 Nmap软件的基本功能: …...
2023年第六届河北省研究生数学建模竞赛题目B题Python求解代码
2023年第六届河北省研究生数学建模竞赛题目B题 本文文档与代码视频讲解与下载:【2023河北省研究生数学建模竞赛B题数据集和代码-哔哩哔哩】 https://b23.tv/weulGAO 光伏电池的异常检测与发电产能预测在碳达峰-碳中和的战略背景下,我国的光伏发电技术发…...
【三维点云处理】顶点、面片、邻接矩阵、邻接距离矩阵以及稀疏存储概念
文章目录 vts和faces基础知识vertices-节点(3是点的三维坐标)faces-面片(3是构成三角形面片的3个点) 邻接矩阵邻接距离矩阵(NN500)稀疏矩阵 vts和faces基础知识 vertices-节点(3是点的三维坐标…...
ansible 中的fetch模块的作用是什么
Ansible中的fetch模块用于从远程主机上复制文件到控制主机上。 fetch模块允许用户在远程主机上复制文件或目录,并将其下载到控制主机上的指定位置。它可以在执行Playbook期间执行此操作,也可以在Ad-Hoc命令中使用。 fetch模块的一些常见用途包括&#…...
Zabbix-6.4.4部署及监控配置
一、目标 对zabbix-6.4.4版本进行调研。了解并测试zabbix-6.4.4部署以及监控配置。 二、过程 前言:最新版本的zabbix-6.4.4的要求有所增加,配置要求如下: MySQL版本:8.0.X PHP版本:7.4.X libXML:2.6.1…...
解决 npm ERR! missing script: build 错误的方法
系列文章目录 文章目录 系列文章目录前言一、错误原因二、解决方法:三、注意事项:总结 前言 在使用 npm 进行前端项目构建时,有时会遇到错误信息 “npm ERR! missing script: build”,该错误通常发生在没有定义构建脚本时。本文将…...
json-server创建静态服务器2
上次写的 nodejs创建静态服务器 这次再来个v2.0 利用json-server很方便就可以实现。 vscode打开文件夹,文件夹所在终端: json-server.cmd --watch db.json 这里视频教程是没有上述命令标红的,但是会报错,具体不详,…...
开源视频监控管理平台国标GB28181视频EasyCVR电子地图功能展示优化
视频监控综合管理平台EasyCVR可提供的视频能力包括:视频监控直播、云端录像、云存储、录像检索与回看、告警上报、平台级联、云台控制、语音对讲、电子地图、H.265自动转码等,也具备接入AI智能分析的能力。 视频汇聚平台EasyCVR可拓展性强、视频能力灵活…...
端口复用与重映射
端口复用和重映射 STM32F1有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。 大家都知道,MCU都有串口…...
ros2 launch 集合 gazebo yolov8 rviz2
目录 1. ros2 yolov8 检测需要以来一些库,分别是:rclpy cv_bridge std_msgs sensor_msgs sensor_msgs_py vision_msgs 2. 创建一个新的功能包 3. 建立 yolo_launch.py 里面先加载gazebo和rviz2,在创建好本地的yolov8的node文件后也加入进来。 4. 创建好本地的yol…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...



