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…...
OpenClaw本地知识库构建:Qwen2.5-VL-7B处理扫描版PDF与图片资料
OpenClaw本地知识库构建:Qwen2.5-VL-7B处理扫描版PDF与图片资料 1. 为什么选择OpenClaw搭建个人知识管理系统 去年搬家时,我翻出了三大箱纸质资料——从学生时代的课堂笔记到工作后的技术手册,全都堆在角落积灰。这些资料里藏着不少珍贵内容…...
OpenClaw云端体验指南:无需本地安装快速测试Phi-3-vision-128k-instruct
OpenClaw云端体验指南:无需本地安装快速测试Phi-3-vision-128k-instruct 1. 为什么选择云端体验OpenClaw 作为一个长期折腾本地AI部署的技术爱好者,我完全理解那种"想先试试再决定是否投入"的心态。去年尝试在MacBook Pro上部署Llama 2时&am…...
OpenClaw 太难装了?试试 LangTARS:一行命令部署 + WebUI 管理面板,还能接入 Dify/Coze/nn??
1. 什么是 Apache SeaTunnel? Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题,如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…...
51单片机入门难点解析与高效学习路径
1. 为什么51单片机入门难?问题出在哪里?很多初学者在接触51单片机时,都会遇到一个奇怪的现象:明明大家都说51单片机简单,但自己学起来却特别吃力。作为一个带过上百名单片机新手的工程师,我发现这个问题通常…...
一台服务器最多能建立多少 TCP 连接:从理论极限到实际瓶颈
一台服务器最多能建立多少 TCP 连接:从理论极限到实际瓶颈01. 前言:一个经典却容易被答错的问题02. 核心原理:什么唯一标识一个 TCP 连接?03. 服务端 vs 客户端:限制完全不同3.1 服务端视角(如 Nginx、Tomc…...
Python @contextmanager 装饰器完全指南
在Python编程实践中,资源管理是一个永恒的话题。无论是文件句柄、数据库连接还是临时状态变更,我们都需要确保资源被正确分配并在使用后得到妥善清理。虽然传统的try...finally语句可以解决这个问题,但Python提供了更加优雅的解决方案——上下…...
【LeetCode 刷题日】19.删除链表的倒数第n个节点
🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者评论和 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可…...
龙迅LT9211D芯片解析:如何实现MIPI与双端口LVDS的高效转换
1. 龙迅LT9211D芯片的核心价值 第一次接触龙迅LT9211D芯片是在一个车载显示项目上,当时客户要求实现4K视频从主控芯片到双屏显示的无损传输。这个看似简单的需求背后,其实隐藏着MIPI和LVDS两种信号标准的转换难题。LT9211D的出现完美解决了这个问题&…...
保姆级教程:用MS-Swift在本地电脑上跑通Qwen2.5-VL多模态大模型(附WebUI界面)
零基础玩转Qwen2.5-VL:手把手教你用MS-Swift搭建多模态AI实验室 想象一下,你的电脑不仅能理解你说的话,还能"看懂"你上传的照片——比如准确描述图片中的猫咪姿势,或者帮你分析设计稿的配色方案。这就是Qwen2.5-VL多模态…...
jEasyUI 显示海量数据
jEasyUI 显示海量数据 引言 随着互联网技术的飞速发展,大数据时代已经到来。在众多前端框架中,jEasyUI以其简洁、易用、功能强大等特点,受到了广大开发者的喜爱。本文将深入探讨jEasyUI在显示海量数据方面的应用,帮助开发者更好地应对大数据挑战。 jEasyUI简介 jEasyUI…...



