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

news2024/12/28 5:54:33

自动化运维

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别名就不可以。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql数据库连接时区设置UTC的坑?serverTimezone=UTC是什么意思?

Mysql数据库连接,设置时区为UTC的坑: UTC是世界统一时间,也就是世界协调时间(UTC)/格林尼治时间。比北京时间快8小时。 导致的问题:数据库连接时区设置为UTC之后,数据库里面的数据和系统里面的时…

计算机毕业设计PyHive+PySpark深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习 Hadoop

题目: 基于hadoop的共享单车布局规划 1. 论文选题的意义 共享单车是一个近年来很热门的新兴事物, 共享经济在我国发展迅速,收到了政府和广大民众的重大关注,而出现的很多问题也引起了众多学者的注意,关于共享单车的研…

【题解】—— LeetCode一周小结32

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结31 5.不含连续1的非负整数 题目链接:600. 不含连续…

Idea2024创建Meavn项目

因为现在Idea创建Meavn项目,文件夹下面是光秃秃的,没有默认文件,这里笔者用简单易懂的方式给大家创建一个带文件夹的项目 1. new -> project | 填写基本信息 2. 设置maven坐标 点击Add > Create 创建的文件没有任何结构 src.main.java…

一个集成物联网、机器学习和大数据实践平台在电气工程课程中的应用

整理自《A Platform for Integrating Internet of Things, Machine Learning, and Big Data Practicum in Electrical Engineering Curricula》,由Nandana Jayachandran、Atef Abdrabou、Naod Yamane和Anwer Al-Dulaimi共同撰写,发表于2024年的《Compute…

【python数据分析05】——matplotlib绘图基础语法

matplotlib绘图基础语法 前言1 pyplot基础语法1.1 创建画布与创建子图1.2 添加画布内容1.3 保存与显示图形1.4 设置pyplot的动态rc参数 前言 matplotlib中应用最广的是matplotlib.pyplot模块,这个模块是一个命令风格函数的集合。 1 pyplot基础语法 大部分pyplot图…

Python文件管理器:一个基于wxPython的桌面应用

在当今的软件开发世界中,管理大量的源代码文件变得越来越重要。无论是个人项目还是大型团队协作,有一个强大而灵活的文件管理工具都可以大大提高工作效率。今天,我们要介绍一个基于Python和wxPython构建的文件管理器,它专门用于管…

GNS3 IOU: License section not found in iourc file /tmp/tmpj54abrhf/iourc

现象: License section not found in iourc file /tmp/tmpj54abrhf/iourc 解决方案: IOU 证书:(直接复制进去即可) [license] gns3-iouvm cd11acbc599f2364; gns3vm 73635fd3b0a13ad0;

记一个坑android Studio:Can‘t bind to local -1 for debugger

AndroidStudio 可编译,安装,设置管理 现象: 唯独 attach 或者调试时报错 Cant bind to local -1 for debugger 控制台日志: 2024-08-15 10:41:59,645 [ 9927] WARN - #com.android.ddmlib - * daemon not running; starting now at tcp:5037 2024-08-15 10:…

DRISSIONPAGE获取图书的封面并保存到本地

一、页面自动截图 二、最终结果 三、代码实现 from DrissionPage import ChromiumPage,ChromiumOptions co =ChromiumOptions().set_paths(browser_path=r"C:\Users\lenovo\AppData\Local\Google\Chrome\Application\chrome.exe") #这里指定浏览器 注意ChromiumOp…

【Oracle篇】统计信息和动态采样的深度剖析(第一篇,总共六篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

广州南沙某工厂电力运维系统案例

一、引言 深圳拓扑未来基于物联网的电力运维系统将云计算、大数据与人工智能对采集的数据进行挖掘整合、共享交换,并以数字全息投影的信息技术手段将数据立体化呈现。满足用户监测众多电力回路运行状态和参数、配电室内环境温湿度、电缆及母线运行温度、现场设备或…

配置静态ip地址,也叫网络地址,linux安装tomcat,mysql,java的jdk,如何把java项目部署到linux上

3、linux 所需软件压缩包 4、防火墙的操作 5、Linux网络配置 接下来需要配置Linux系统的网络,这样才能保证软件能够正常安装上去 5.1 配置连接外网 进入etc/sysconfig/network-scripts目录,使用vi打开 ifcfg-ensXXX文件,进行编辑 cd /etc…

快速体验Ollama安装部署并支持AMD ROCm推理加速

序言 Ollama 是一个专注于本地运行大型语言模型(LLM)的框架,它使得用户能够在自己的计算机上轻松地部署和使用大型语言模型,而无需依赖昂贵的GPU资源。Ollama 提供了一系列的工具和服务,旨在简化大型语言模型的安装、…

阵列信号处理1_相控阵天线(CSDN_20240818)

与传统天线相比,相控阵天线的阵面是由许多阵元组成的,在这些阵元的基础上,相控阵天线可以利用一些精妙的算法在天线不旋转的条件下,自动形成波束并对准目标。通常,由相控阵天线形成的波束的质量要比普通天线波束的质量…

LeetCode //C - 319. Bulb Switcher

319. Bulb Switcher There are n bulbs that are initially off. You first turn on all the bulbs, then you turn off every second bulb. On the third round, you toggle every third bulb (turning on if it’s off or turning off if it’s on). For the $i^{th} $roun…

七彩玫瑰与彩虹玫瑰的花语探秘

一、什么是七彩玫瑰和彩虹玫瑰 七彩玫瑰和彩虹玫瑰并非自然界原生的花卉品种,而是通过人工手段精心培育和加工而成的独特花卉。它们的独特之处在于花瓣呈现出七种绚烂的颜色,宛如彩虹般绚丽多彩,令人眼前一亮。 七彩玫瑰和彩虹玫瑰通常是由白…

短链接系统设计方案

背景 需要设计一个短链接系统,主要功能主要有如下几点: ToB: 输入一个长链接,转换成短链接。这个短链接有时效性,可以设定指定过期时间。这个系统的每天会生成千万级别的短链接。数据具备可分析功能。 ToC&#xf…

xss.function靶场(hard)

文章目录 WW3源码分析源码 DOMPpurify框架绕过覆盖变量notifyjs作用域和作用链域构建payload WW3 源码 <!-- Challenge --> <div><h4>Meme Code</h4><textarea class"form-control" id"meme-code" rows"4"><…

MySQL实现SQL Server中UPDLOCK与READPAST组合功能

碰到一位同事求助解决消息中台一个线上的bug&#xff0c;具体描述如下&#xff1a; 首先有一张主表记录消息待发送的内容&#xff0c;一张子表记录本条消息的发送状态。若发送成功则将此条消息的发送状态修改为已发送并做逻辑删除。代码通过定时任务每2s轮询子表&#xff0c;如…