Ansible自动化运维,(1)模块

ansible是基于Python语言实现的,模块化:调用特定的模块完成特定的任务,支持自定义模块,可使用任何编程语言写模块(账号,软件等)。部署简单,基于python和SSH,相对安全,基于OpenSSH。

功能:批量执行远程命令,可以对远程的多台主机同时进行命令的执行;批量安装和配置软件服务,可以对远程的多台主机进行自动化的方式配置和管理各种服务;编排高级的企业级复杂的IT架构任务,Ansible的Playbook和role可以轻松实现大型的IT复杂架构;提供自动化运维工具的开发API,有很多运维工具,如jumpserver就是基于ansible实现自动化管理功能。

幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况,此特性非绝对。

ansible的安装:

yum安装需要加入epel源:本地yum源:

[root@Node1 ~]#:vim /etc/yum.repos.d/CentOS-Base.repo

[epel]
name=gn
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
        https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
        https://mirrors.huaweicloud.com/epel/$releasever/x86_64
        https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
gpgcheck=0

也可以直接yum安装:[root@Node1 ~]#:yum install -y epel-release.noarch

选择一种即可

安装ansible:yum install -y ansible

查看版本:使用ansible --version

相关文件:

/etc/ansible/ansible.cfg主配置文件,配置ansible工作特性,也可以在项目的项目中创建此文件,当前目录下如果也有ansible.cfg,则此文件优先生效,建议每个项目目录下,创建独有的ansible.cfg文件。

/etc/ansible/hosts主机清单

/etc/ansible/roles/存放角色的目录

主配置文件中几乎不需要修改,要开启71行的ansible的不验证即可

host_key_checking = False

由于是基于SSH,需要在客户端做一个ssh免密登录:

[root@Node1 ansible]#:ssh-keygen

三个回车

[root@Node1 ansible]#:ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.114.20

输入yes

输入密码

[root@Node1 ansible]#:ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.114.30

在主机清单中添加web,主机:vim /etc/ansible/hosts

[web]
192.168.114.20
192.168.114.30

查看主机:

ansible也是一个命令,执行临时任务,一次性任务 ,测试:

ansible 192.168.114.20 -m ping

-m是模块,使用ping模块

加个-k,密码验证:

我们添加了web模块,也可以直接使用web名,来测试:

ansible web -m ping

SUCCESS

其中ansible中支持许多模块:

通过命令ansible-doc -l查看

可以发现有3387个模块。

[root@Node1 ansible]#:ansible-doc -l | wc -l
3387

如果要具体查找某一个模块,可以,如查找ping模块:ansible-doc ping

#如果看ping模块详细解释:ansible-doc ping

简单模块:

模块:

但最常用的模块也就二三十个,针对特定业务只用十几个模块

1.command模块

2.shell模块

3.script模块

4.copy模块

5.get_url模块

6.fetch模块

7.stat模块

8.unarchive模块

9.archive模块

10.hostname模块

11.cron模块

12.yum和apt模块

13.yum_repository模块

14.service模块

1.command模块:

功能:在远程主机执行命令,此为默认模块,可忽略-m选项

该模块不具有幂等性

[root@Node1 ansible]#:ansible web -m command -a "touch /opt/asb"
[WARNING]: Consider using the file module with state=touch rather than running 'touch'.  If you need to use command because file is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
192.168.114.30 | CHANGED | rc=0 >>

192.168.114.20 | CHANGED | rc=0 >>
 

 在两台主机上发现创建了abs文件

2.shell模块:

要将配置文件中的114行改成shell:vim /etc/ansible/ansible.cfg。复制粘贴,yy,p

ansible web -a "echo '123' > /opt/test"

验证:发现在192.168.114.20和30上都有了文件test,内容是123

3.script模块:

如果想在多台主机上做某些事情,通过脚本的方式,在本机能够对多台主机执行脚本操作。

在本机/data下写一个创建文件的脚本:

执行命令:ansible web -m script -a "/data/test.sh"

此时,能够在两台主机上看到/opt/下有一个ky36的文件:

[root@Node2 opt]#:ls
ky36

[root@Node3 opt]#:ls
ky36

4.copy模块:

复制模块

src代表源文件路径

dest代表文件落地路径

owner属主

group属组

mode代表权限

我们把主机的/etc/fstab复制对面的/opt/下,并添加权限为644

ansible web -m copy -a "src=/etc/fstab dest=/opt/ mode=644"

查看验证:

在两台主机上创建张三用户:

[root@Node2 opt]#:useradd zhangsan -M -s /sbin/nologin

[root@Node2 opt]#:useradd zhangsan -M -s /sbin/nologin

复制/etc/passwd过去,指定属主和属组:ansible web -m copy -a "src=/etc/passwd dest=/opt/ mode=644 group=zhangsan owner=zhangsan"

 验证:过来了,属主和属组都是zhangsan

ansible web -m copy -a "content='nihao cxk' dest=/opt/wsc",写文本复制到对面的/opt/下文件名叫wsc

验证:

5.get_url模块:

功能: 用于将文件从http、https或ftp下载到被管理机节点上

url下载文件的URL,下载的路径
dest下载到目标路径(绝对路径),指明下载文件的存放目录
告诉别人路径在什么位置

owner:指定属主

group:指定属组

mode:指定权限

checksum:对目标文件在下载后计算摘要,以确保其完整性

验证:

6.fetch模块:

从远程主机提取文件至ansible的主控端,与copy相反,但不支持目录

ansible web -m fetch -a "src=/etc/passwd dest=/mnt"这里的src是远端的/etc/passwd,提取到本机的/mnt下:

由于是两个远端主机,在/mnt/下都列出来了两个主机。包括/etc/passwd

一般适用于提取远端的日志文件:ansible web -m fetch -a "src=/var/log/messages dest=/data/"

7.file模块:

path 指定文件路径

state 文件状态,有:新建(touch) 删除(absent) 文件夹(directory) 链接文件(link)等

src 源文件

mode 权限

owner 属主

group 属组

recurse 递归,修改属性时有效

例1:在/opt/下创建wsc文件,权限644,属主zhangsan,属组root

ansible web -m file -a "path=/opt/wsc state=touch mode=644 owner=zhangsan group=root"

查看:

ansible web -m file -a "path=/opt/wsc state=absent"   删除/opt/下的wsc

查看:

例2:将/etc/passwd软链接到远端主机/opt/下取名为soft

验证查看:

8.stat模块:

功能:检查文件或文件系统的状态

exists:判断是否存在

检查passwd文件的状态信息

ansible web -m stat -a "path=/etc/passwd"

stat块为passwd的状态信息。

如果随便指定一个不存在的文件:

ansible web -m stat -a "path=/etc/bucunzai"

exists判断是否存在,发现为false不存在。

9.unarchive模块:

copy默认为yes,拷贝的文件是从ansilbe主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件remote_src和copy功能一样互斥。

解压功能,将ansible主控端解压到远端主机上去。

例如我们在主控端下载nginx-1.18.0.tar.gz安装包,解压到远端/opt/下

下载:[root@Node1 data]#:wget http://nginx.org/download/nginx-1.18.0.tar.gz

命令:ansible web -m unarchive -a "src=/data/"

在远端查看:7-3也同理

10.archive模块:

压缩的功能。将主控端的的文件压缩到远端指定的目录中。

例如将主控端的/var/log/下的所有文件打包压缩到远端,

命令:[root@Node1 ansible]#:ansible web -m archive -a "path=/var/log dest=/data/alllog.gz"

远端查看:7-3也一样

11.hostname模块:

功能:管理主机名

ansible web -m hostname -a "name=ansible"

验证:发现已经该名成了ansible主机名了 

12.cron模块:

功能:计划任务。

有hour,minute,weekday,name,job等关键字。

name是注释信息,在"jobs":[create]

准备一个脚本文件:

在2小时30分,周一到周五执行一次脚本,为在/opt/下创建一个a.sh文件。

发现已经执行成功了。

13.yum和atp模块:

name参数:必须参数,用于指定需要管理的软件包,安装latest,present。卸载absent。

例:安装httpd

ansible web -m yum -a "name='httpd' state=present"

远端查看:

删除httpd:

ansible web -m yum -a "name='httpd' state=absent"

验证卸载了: 

但这里,仅仅是把httpd卸载了,依赖包还在。不建议这样删除

14.yum_repository模块:

功能:建立yum仓库模块

name参数,指定要操作的唯一的仓库ID

baseurl参数,设置yum仓库的baseurl

file参数,用于设置仓库的配置文件名称

description参数,设置仓库的配置文件的名称

gpgcheck参数,用于设置是否开启rpm包验证功能,默认为no,表示不用包验证

ansible web -m yum_repository -a 'name=epel description=epel  baseurl=https://download.fedoraproject.org/pub/epel/$releasever/$basearch/ gpgcheck=no file=epel'

15.service模块:

功能用于管理服务

name参数,用于指定需要操作的服务名称,比如nginx

state参数,用于指定服务的状态

enabled参数,用于指定是否将服务设置为开机启动项。yes开机,no不会开机

在远端下载http服务,

yum install -y httpd

systemctl status httpd,查看状态,发现未启动

启动httpd服务:[root@Node1 ansible]#:ansible web -m service -a "name=httpd state=started"

验证:已启动

state=stopped是关闭服务。

16.user模块:

comment 用户的描述信息

createhome 是否创建家目录

group 指定基本组

groups 指定附加组

home 指定用户家目录

name 指定用户名

shell 指定默认shell

state 设置账号状态,不指定为创建

system 创建一个系统用户

uid 指定用户uid

ansible web -m user -a "name=user1 createhome=no uid=10000 group=root"     #创建用户user1,指定uid,不建立家目录,指定基本组。

验证:

17.group模块:

功能:管理组

创建组:ansible web -m group -a "name=nginx gid=88 system=yes"

查看验证

删除组:ansible web -m group -a "name=nginx state=absent"

18.reboot模块:

ansible web -m reboot

重启:

19.steup模块: 

有许多模块:

ansible all -m setup -a "filter=ansible_nodename"
ansible all -m setup -a "filter=ansible_hostname"
ansible all -m setup -a "filter=ansible_domain"
ansible all -m setup -a "filter=ansible_memtotal_mb"
ansible all -m setup -a "filter=ansible_memory_mb"
ansible all -m setup -a "filter=ansible_memfree_mb"
ansible all -m setup -a "filter=ansible_os_family"
ansible all -m setup -a "filter=ansible_distribution_major_version"
ansible all -m setup -a "filter=ansible_distribution_version"
ansible all -m setup -a "filter=ansible_processor_vcpus"
ansible all -m setup -a "filter=ansible_all_ipv4_addresses"
ansible all -m setup -a "filter=ansible_architecture"
ansible all -m setup -a "filter=ansible_uptime_seconds"
ansible all -m setup -a "filter=ansible_processor*"
ansible all -m setup -a 'filter=ansible_env'

查看IP:

----end----

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读MVBench: A Comprehensive Multi-modal Video Understanding Benchmark

摘要(Abstract): 论文介绍了MVBench,这是一个全新的多模态视频理解基准测试,旨在评估多模态大型语言模型(MLLMs)在视频理解方面的能力。 目前许多基准测试主要集中在静态图像任务的空间理解上,而忽视了动…

会声会影2024免费版下载无需激活码序列号

亲爱的影像爱好者们,今天我要和大家分享的是一款让我彻底着迷的软件——会声会影2024!自从用了它,我的视频编辑技能简直突飞猛进,每次上传作品到小红书都能收获满满的赞👍。接下来,就让我带你一起探索这个神…

华为VPN通过安当ASP身份认证系统快速实现认证

华为VPN通过安当ASP身份认证系统实现认证的过程,主要涉及到Radius OTP(一次性密码)认证技术的使用。以下是实现这一过程的详细步骤: 1. 前提条件: 确保系统已经激活了Radius模块,并在安全设置中的RADIUS配…

ppdetection-2.7

1, pip install -r requirement.txt 2、 ValueError: paddle.load can not parse the file:C:\Users\HX/.cache/paddle/weights\deepsort_pcb_pyramid_r101.pdparams. 重新下载模型 3、 declarative() got an unexpected keyword argument看一下参数是否写对,比如…

Python文本挖掘数据分析——竞争分析(1)

文章目录 前言项目背景与目标品类分布分析数据准备与处理查看数据类目作图查看占比的不同 适用对象作图查看适用对象占比 产品结构分析对商品分类汇总定义作图函数拜耳安速科凌虫控 前言 数据说明: 项目背景与目标 该项目旨在分析三个品牌(拜耳、安速、科凌虫控&…

lambdastreammaven

1.Lambda &#xff08;1&#xff09;Java 8 Lambda 表达式 在 Java 8 以前&#xff0c;若我们想要把某些功能传递给某个方法&#xff0c;总要去写内部类 或匿名内部类类。代码示例&#xff1a; list.sort(new Comparator<User>() { Override public int compare(User …

java实现一个图的最短路径算法

import java.util.*; //java实现一个图的最短路径算法 public class Test_34 { // 定义一个常量INF&#xff0c;表示无穷大。private static final int INF Integer.MAX_VALUE; // 定义一个方法dijkstra&#xff0c;接受一个二维数组图和一个起始节点作为参数。public s…

apk反编译修改教程系列-----去除apk软件更新方法步骤列举 记录八种最常见的去除方法

在前面几期博文中 有说明去除apk软件更新的步骤方法。我们在对应软件反编译去除更新中要灵活运用。区别对待。同一个软件可以有不同的去除更新方法可以适用。今天的教程对于软件更新去除列举几种经常使用的修改步骤。 通过基础课程可以了解 1-----软件反编译更新去除的几种常…

经典游戏案例:仿植物大战僵尸

学习目标&#xff1a;仿植物大战僵尸核心玩法实现 游戏画面 项目结构目录 部分核心代码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using Random UnityEngine.Random;public enum…

CSS打印设置页眉页脚

之前写过一篇文章CSS实现自动分页打印同时每页保留重复的自定义内容&#xff0c;可以实现window.print()打印时多张页面保留相同的内容&#xff08;如header、footer&#xff09;&#xff0c;但其并不是真正意义上的页眉页脚&#xff0c;footer内容在最后一张页面未撑满时不能置…

Java高级重点知识点-12-Collection、iterator迭代器、泛型

文章目录 Collection集合Iterator迭代器泛型&#xff08;难点&#xff09; Collection集合 集合是java中提供的一种容器&#xff0c;可以用来存储多个数据。 集合框架 单列集合java.util.Collection双列集合java.util.Map 集合类继承体系图&#xff1a; List集合的特点&am…

【大数据】大数据的核心特征与挑战:Volume、Velocity、Variety、Veracity

目录 Volume&#xff1a;海量数据的挑战与机遇 挑战 技术挑战 机遇 Velocity&#xff1a;数据处理的速度与实时性 挑战 技术挑战 机遇 Variety&#xff1a;数据类型的多样性与复杂性 挑战 技术挑战 机遇 Veracity&#xff1a;数据的真实性与质量控制 挑战 技术挑…

【Chapter7】虚拟存储系统,计算机操作系统教程,第四版,左万利,王英

文章目录 [toc]零、前言一、外存资源管理1.1 外存空间划分1.2 外存空间分配1.2.1 空闲块链(慢)1.2.2 空闲块表(UNIX)1.2.3 字位映像图 1.3 进程与外存对应关系 二、虚拟页式存储系统2.1 基本原理2.2 内存页框分配策略2.3 外存块的分配策略2.4 页面调入时机2.5 置换算法2.5.1 最…

Oracle详情数据库索引事务视图触发器分区发生死锁数据字典【Oracle】

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

乐鑫ESP32-WROOM-32E模组设备低功耗控制方案,启明云端乐鑫代理商

在数字化浪潮的推动下&#xff0c;物联网&#xff08;IoT&#xff09;正迅速成为我们日常生活的一部分。而在这个领域中&#xff0c;ESP32-WROOM-32E模组以其卓越的性能和多功能性&#xff0c;成为了开发者和制造商的选择。 ESP32-WROOM-32E模组集成了ESP32-D0WD-V3芯片&#…

宝塔面板部署前端项目

部署前端项目 1 打包自己的项目2 登录宝塔面板3 添加站点4 设置域名5 进入当前站点对应的文件目录中6 上传打包后的文件7 访问网站 1 打包自己的项目 2 登录宝塔面板 点击左侧“网站”菜单进入对应页面 点击“添加站点” 3 添加站点 填写域名&#xff0c;如果没有域名的&am…

重生奇迹MU 谁才是真正的全能职业

重生奇迹MU中&#xff0c;游戏的奥妙就在于职业的选择。不同职业间各有千秋&#xff0c;可远可近&#xff0c;全都是玩家们心中的全能职业。本文就将为你分析重生奇迹MU中的各个职业&#xff0c;为你解答谁才是真正的全能职业。 每次新开一个服务器时&#xff0c;玩家们总会纠结…

为什么不推荐在自动化测试中使用单例模式

简述 尽管在国内大量的代码中使用单例这种简单的方式&#xff0c;但在自动化测试过程中会导致很多问题。因此&#xff0c;在自动化测试中&#xff0c;不推荐使用单例模式。 什么是单例&#xff1f; 《设计模式&#xff1a;可复用面向对象软件的基础》一书&#xff08;通常被称为…

2024地理信息相关专业大学排名

在开始之前&#xff0c;不得不提一下今年福耀科技大学不能招生的遗憾&#xff0c;不知道明年是否能一切准备就绪开始招生呢&#xff1f; 如果这所大学能招生了&#xff0c;不知道它有没有地理信息相关专业呢&#xff1f; 言归正转&#xff0c;我们现在就基于公开资料&#xf…

vue:响应式原理解析,深入理解vue的响应式系统

一、文章秒读 vue的响应式系统核心有两个&#xff0c;简单描述就是&#xff1a; 1.在数据变化时重新render依赖相关函数&#xff08;组件&#xff09;。 2.在vue2和vue3中分别使用Object.defineProperty和Proxy进行对象属性的读写。 数据变化时&#xff1a; 二、什么是响应…