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

云计算实训30——自动化运维(ansible)

自动化运维

ansible----自动化运维工具

特点:

部署简单,使用ssh管理

管理端与被管理端不需要启动服务

配置简单、功能强大,扩展性强

一、ansible环境搭建

准备四台机器

安装步骤

mo服务器:

#下载epel
[root@mo ~]# yum -y install epel-release.noarch 
#安装ansible
[root@mo ~]# yum -y install ansible
#查看ansible版本
[root@mo ~]# ansible --version

进行免密登录

[root@mo ~]# ssh-copy-id -i 192.168.1.25
[root@mo ~]# ssh-copy-id -i 192.168.1.26

编辑配置文件

[root@mo ~]# vim /etc/ansible/hosts 
[group01]
192.168.1.25
192.168.1.26

[group02]
192.168.1.25
192.168.1.26
192.168.1.27

测试连接性

[root@mo ~]#  ansible 192.168.1.25 -m ping
192.168.1.25 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

设置别名分组

[root@mo ~]# vim /etc/ansible/hosts 
[group01]
192.168.1.25
192.168.1.26

other ansible_ssh_host=192.168.1.27 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1

[group02]
192.168.1.25
192.168.1.26
other

再次测试连通性

group01:

[root@mo ~]#  ansible group01 -m ping
192.168.1.26 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.25 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
other | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

group02:


[root@mo ~]# ansible group02 -m ping
192.168.1.26 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.25 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
other | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

other:

[root@mo ~]# ansible other -m ping
other | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

更改group02的名字

[root@mo ~]# ansible group02 -m hostname -a 'name=dd'

二、file模块

file模块⽤于对⽂件相关的操作(创建, 删除, 软硬链接等)

1.创建目录

[root@mo ~]# ansible group01 -m file -a 'path=/tmp/abc state=directory'

查看

2.创建文件

[root@mo ~]# ansible group02 -m file -a 'path=/tmp/abc/def state=touch'

查看

3.递归修改

[root@mo ~]# ansible group02 -m file -a 'path=/tmp/abc recurse=yes owner=bin group=daemon mode=1777'

查看

[root@s0 ~]# ll /tmp/abc/

总用量 0-rwxrwxrwt 1 bin daemon 0 8月 16 14:08 def

4.修改文件

[root@mo ~]# ansible group02 -m file -a 'path=/tmp/abc state=absent'

[root@mo ~]# ansible group02 -m file -a 'path=/tmp/aaaa state=touch owner=bin group=de=1777'

查看

[root@s0 ~]# ls -l /tmp/

总用量 0-rwxrwxrwt 1 bin daemon 0 8月 16 14:21 aaaa

5.删除文件

[root@mo ~]# ansible group02 -m file -a 'path=/tmp/aaaa state=absent'

6.创建链接文件

创建软连接

[root@mo ~]# ansible group02 -m file -a 'src=/etc/fstab path=/tmp/xxx state=link'

创建硬链接

[root@mo ~]# ansible group02 -m file -a 'src=/etc/fstab path=/tmp/xxx2 state=hard'

查看

[root@s0 ~]# ll /tmp/

lrwxrwxrwx 1 root root 10 8月 16 14:31 xxx -> /etc/fstab

-rw-r--r--. 2 root root 502 5月 25 18:31 xxx2

7.获取文件统计信息

[root@mo ~]# ansible group02 -m stat -a 'path=/etc/fstab'

三、copy模块

copy模块⽤于对⽂件的远程拷⻉操作(如把本地的⽂件拷⻉到远程 的机器上)

使⽤content参数直接往远程⽂件⾥写内容(会覆盖原内容)

使⽤force参数控制是否强制覆盖

使⽤backup参数控制是否备份⽂件

copy模块拷⻉时要注意拷⻉⽬录后⾯是否带"/"符号

没有"/"把表示拷贝目录,有"/"表示拷贝目录下的文件

用于远程拷贝文件

给虚拟机传mysql包

[root@mo ~]# rz -E
rz waiting to receive.

查看

[root@mo ~]# ls
anaconda-ks.cfg  mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

改名

[root@mo ~]# mv mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz mysql57.tar.gz

复制

将当前目录下的mysql57.tar.gz文件复制到group02组内所有机器的用户主目录中 

[root@mo ~]# ansible group02 -m copy -a 'src=./mysql57.tar.gz dest=~'


查看

[root@s0 ~]# ls -lh
总用量 663M
-rw-------. 1 root root 1.4K 5月  25 16:47 anaconda-ks.cfg
-rw-r--r--  1 root root 663M 8月  16 15:07 mysql57.tar.gz

[root@s1 ~]# ls -lh
总用量 663M
-rw-------. 1 root root 1.4K 5月  25 16:47 anaconda-ks.cfg
-rw-r--r--  1 root root 663M 8月  16 15:07 mysql57.tar.gz

[root@s2 ~]# ls -lh
总用量 663M
-rw-------. 1 root root 1.4K 5月  25 16:47 anaconda-ks.cfg
-rw-r--r--  1 root root 663M 8月  16 15:07 mysql57.tar.gz

写入内容

[root@mo ~]# ansible group02 -m copy -a 'content="wo shi dd chao ji wu di yu zhou bao long zhan shen" dest=~/tst'

查看

[root@s0 ~]# ls
anaconda-ks.cfg  mysql57.tar.gz  tst
[root@s0 ~]# cat tst
wo shi dd chao ji wu di yu zhou bao long zhan shen
 

四、user模块

user模块⽤于管理⽤户账号和⽤户属性。

创建aaa⽤户,默认为普通⽤户,创建家⽬录

ansible group1 -m user -a ‘name=aaa state=present’

创建bbb系统⽤户,并且登录shell环境为/sbin/nologin

ansible group1 -m user -a ‘name=bbb state=present system=yes shell="/sbin/nologin"’

创建ccc⽤户, 使⽤uid参数指定uid, 使⽤password参数传密码

echo 123456 | openssl passwd -1 -stdin

$1$DpcyhW2G$Kb/y1f.lyLI4MpRlHU9oq0

下⼀句命令注意⼀下格式,密码要⽤双引号引起来,单引号的话验证时会密码不正确

ansible group1 -m user -a 'name=ccc uid=2000 state=present password="$1$DpcyhW2G$Kb/y1f.lyLI4MpRlHU9oq0"'

创建⼀个普通⽤户叫hadoop,并产⽣空密码密钥对

ansible group1 -m user -a 'name=hadoop generate_ssh_key=yes'

删除aaa⽤户,但家⽬录默认没有删除

ansible group1 -m user -a 'name=aaa state=absent'

删除bbb⽤户,使⽤remove=yes参数让其删除⽤户的同时也删除家⽬录

ansible group1 -m user -a 'name=bbb state=absent remove=yes'

五、group模块

group模块⽤于管理⽤户组和⽤户组属性。

创建组

ansible group1 -m group -a 'name=groupa gid=3000 state=present'

删除组(如果有⽤户的gid为此组,则删除不了)

ansible group1 -m group -a 'name=groupa state=absent'

六、cron模块

cron模块⽤于管理周期性时间任务。

创建⼀个cron任务,不指定user的话,默认就是root

如果minute,hour,day,month,week不指定的话,默认都为*

ansible group1 -m cron -a 'name="test cron1" user=root job="touch /tmp/111" minute=*/2'

删除cron任务

ansible group1 -m cron -a 'name="test cron1" state=absent'

七、yum模块

yum模块⽤于使⽤yum命令来实现软件包的安装与卸载。

使⽤yum安装⼀个软件(前提:group1的机器上的yum配置都已经OK)

ansible group1 -m yum -a 'name=vsftpd state=present'

使⽤yum安装httpd,httpd-devel软件,state=latest表示安装最新版本

ansible group1 -m yum -a 'name=httpd,httpd-devel state=latest'

使⽤yum卸载httpd,httpd-devel软件

ansible group1 -m yum -a 'name=httpd,httpddevel state=absent'

八、service模块

service模块⽤于控制服务的启动,关闭,开机⾃启动等。

启动vsftpd服务,并设为开机⾃动启动

ansible group1 -m service -a 'name=vsftpd state=started enabled=on'

关闭vsftpd服务,并设为开机不⾃动启动

ansible group1 -m service -a 'name=vsftpd state=stopped enabled=false'

九、其他模块

hostname模块

hostname模块⽤于修改主机名(注意: 它不能修改/etc/hosts⽂件)

stat模块

stat模块类似linux的stat命令,⽤于获取⽂件的状态信息。

template模块

template模块⾸先使⽤变量渲染jinja2模板⽂件成普通⽂件,然后再复制过去.⽽copy模块不⽀持.(jinja2是⼀个基于python的模板引擎)

template模块不能拷⻉⽬录

fetch模块

fetch模块与copy模块类似,但作⽤相反。⽤于把远程机器的⽂件拷⻉到本地。

注意: fetch模块不能从远程拷⻉⽬录到本地

yum_repository模块

yum_repository模块⽤于配置yum仓库。

增加⼀个/etc/yum.repos.d/local.repo配置⽂件

ansible group1 -m yum_repository -a "name=local description=localyum baseurl=file:///mnt/ enabled=yes gpgcheck=no"

注意:此模块只帮助配置yum仓库,但如果仓库⾥没有软件包,安装⼀ 样会失败。所以可以⼿动去挂载光驱到/mnt⽬录

# mount /dev/cdrom /mnt

删除/etc/yum.repos.d/local.repo配置⽂件

ansible group1 -m yum_repository -a "name=local state=absent"

script模块

script模块⽤于在远程机器上执⾏本地脚本。

在master上准备⼀个脚本

 vim /tmp/1.sh

#!/bin/bash

mkdir /tmp/haha touch /tmp/haha/{1..10}

在group1的远程机器⾥都执⾏master上的/tmp/1.sh脚本

(此脚本 不⽤给执⾏权限)

ansible group1 -m script -a '/tmp/1.sh'

command与shell模块

两个模块都是⽤于执⾏linux命令的,这对于命令熟悉的⼯程师来说,⽤起来⾮常high。

shell模块与command模块差不多

(command模块不能执⾏⼀些类似$HOME,>,等符号,但shell可以)

注意: shell模块并不是百分之百任何命令都可以,⽐如vim或ll别名就不可以。

相关文章:

云计算实训30——自动化运维(ansible)

自动化运维 ansible----自动化运维工具 特点: 部署简单,使用ssh管理 管理端与被管理端不需要启动服务 配置简单、功能强大,扩展性强 一、ansible环境搭建 准备四台机器 安装步骤 mo服务器: #下载epel [rootmo ~]# yum -y i…...

网络性能优化:从问题诊断到解决方案

网络性能优化是确保网络高效、稳定运行的关键过程,它通过改进网络设备、协议和配置,以提高网络吞吐量、降低延迟并提升用户体验。在网络性能优化的全过程中,从问题诊断到解决方案的实施,需要经过一系列详细的步骤和策略。本文将从…...

深度学习10--强化学习

强化学习(增强学习、再励学习、评价学习简称RL)是近年来机器学习领域最热门的方向之一,是实现通用人工智能的重要方法之一。本章将通俗易懂地讲一下强化学习中的两个重要的模型DQN 和DDPG。 马尔可夫决策过程(Markov Decison Process,MDP)包括两个对象&#xff…...

SSA-SVM多变量回归预测|樽海鞘群优化算法-支持向量机|Matalb

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&a…...

KEEPALIVED高可用集群知识大全

目录 一、KEEPALIVED高可用集群简介 1、Keepalived 高可用集群的工作原理 2、Keepalived 高可用集群的作用 二、KEEPALIVED部署 1、网络配置 2、软件安装与启动 3、配置虚拟路由器 4、效果实现 三、启用keepalived日志功能 四、KEEPALIVED的几种工作模式 1、KEEPALI…...

JavaWeb系列三: JavaScript学习 下

JavaScript学习 数组学习数组定义数组使用和遍历 js函数快速入门函数定义方式方式1: function关键字定义函数方式2: 将函数赋给变量 js函数注意事项和细节js函数练习 js自定义对象方式1: Object形式方式2: {}形式 事件基本介绍事件分类onload加载完成事件onclick单击事件onblur…...

web开发,过滤器,前后端交互

目录 web开发概述 web开发环境搭建 Servlet概述 Servlet的作用: Servlet创建和使用 Servlet生命周期 http请求 过滤器 过滤器的使用场景: 通过Filter接口来实现: 前后端项目之间的交互: 1、同步请求 2、异步请求 优化…...

CUDA-MODE 第一课课后实战(下)

我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE 第一课课后实战(下) Nsight Compute Profile结果分析 继续对Nsight Compute的Profile结果进行分析&#xff0…...

PostgreSQL数据库内核(三):缓冲区管理器

文章目录 共享缓冲区基础知识逻辑读和物理读LRU算法和CLOCK时钟算法 共享缓冲区管理器结构共享缓冲表层共享缓冲区描述符层共享缓冲页层 共享缓冲区管理器工作流程初始化缓冲区读缓冲区淘汰策略共享缓冲区锁 共享缓冲区基础知识 通常数据库系统都会在内存中预留buffer缓冲空间…...

[log4cplus]: 快速搭建分布式日志系统

关键词: 日志系统 、日志分类、自动分文件夹、按时间(月/周/日/小时/分)轮替 一、引言 这里我默认看此文的我的朋友们都已经具备一定的基础,所以,我们本篇不打算讲关于log4cplus的基础内容,文中如果涉及到没有吃透的点,需要朋友们动动自己聪明的脑袋和发财的手指,进一…...

redis I/O复用机制

I/O复用模型 传统阻塞I/O模型 串行化处理,就是要等,假如进行到accept操作,cpu需要等待客户端发送的数据到tcp接收缓冲区才能进行read操作,而在此期间cpu不能执行任何操作。 I/O复用 用一个进程监听大量连接,当某个连…...

Adobe PhotoShop - 制图操作

1. 排布照片 菜单 - 视图 - 对齐:打开后图层将会根据鼠标的移动智能对齐 菜单 - 视图 - 标尺:打开后在页面出现横纵标尺,方便图层的对齐与排列 2. 自动生成全景照 在日常处理中,我们常常想要将几张图片进行拼接获得一张全景图&…...

Mysql 中的Undo日志

在 MySQL 的 InnoDB 存储引擎中,Undo Log 是用于实现数据库事务的回滚功能的一种日志。Undo Log 记录了对数据的修改,以便在事务出现问题时可以恢复到之前的状态。下面将介绍 Undo Log 的结构和样本数据。 Undo Log 的基本概念 目的: Undo Log 的主要目…...

虹软科技25届校招笔试算法 A卷

目录 1. 第一题2. 第二题3. 论述题 ⏰ 时间:2024/08/18 🔄 输入输出:ACM格式 ⏳ 时长:2h 本试卷分为不定项选择,编程题,必做论述题和选做论述题,这里只展示编程题和必做论述题,一共三…...

C++ | Leetcode C++题解之第345题反转字符串中的元音字母

题目&#xff1a; 题解&#xff1a; class Solution { public:string reverseVowels(string s) {auto isVowel [vowels "aeiouAEIOU"s](char ch) {return vowels.find(ch) ! string::npos;};int n s.size();int i 0, j n - 1;while (i < j) {while (i < …...

Kubernetes拉取阿里云的私人镜像

前提条件 登录到阿里云控制台 拥有阿里云的ACR服务 创建一个命名空间 获取仓库的访问凭证&#xff08;可以设置固定密码&#xff09; 例如 sudo docker login --usernameyourAliyunAccount registry.cn-guangzhou.aliyuncs.com 在K8s集群中创建一个secret 使用kubectl命令行…...

Leetcode每日刷题之118.杨辉三角

1.题目解析 杨辉三角作为一个经典的数学模型&#xff0c;其基本原理相信大家已经耳熟能详&#xff0c;这里主要是在学习了vector之后&#xff0c;对于本题有了新的解法&#xff0c;更加简便。关于vector的基本使用详见 面向对象程序设计(C)之 vector&#xff08;初阶&#xff0…...

【ARM 芯片 安全与攻击 5.2 -- 芯片中侧信道攻击与防御方法介绍】

文章目录 什么是 Speculation Barriers?如何使用 Speculation Barriers?什么是 PAN?如何启用 PAN?使用 PAN 保护操作系统Spectre 攻击防御示例Meltdown 攻击防御示例Summary什么是 Speculation Barriers? Speculation Barriers,是一种防止处理器在投机执行中泄漏敏感信息…...

XSS-games

XSS 1.XSS 漏洞简介2.XSS的原理3.XSS的攻击方式4.XSS-GAMESMa SpaghetJefffUgandan KnucklesRicardo MilosAh Thats HawtLigmaMafiaOk, BoomerWW3svg 1.XSS 漏洞简介 ​ XSS又叫CSS&#xff08;Cross Site Script&#xff09;跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Sc…...

日撸Java三百行(day25:栈实现二叉树深度遍历之中序遍历)

目录 一、栈实现二叉树遍历的可行性 二、由递归推出栈如何实现中序遍历 1.左子树入栈 2.根结点出栈 3.右子树入栈 4.实例说明 三、代码实现 总结 一、栈实现二叉树遍历的可行性 在日撸Java三百行&#xff08;day16&#xff1a;递归&#xff09;中&#xff0c;我们讲过…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...