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----

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

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

相关文章

高考填报志愿,为何要优先考虑个人兴趣 ?

随着高考成绩纷纷出炉,考生又要面对人生另外一个重要的选择,那便是填报志愿,这关系到自己能否进入满意的学校和专业。如果考生对上述两个方面都不满意,那高考目的就没有达到。既然填报志愿如此重要,考生和家长在选择的…

软件构造 | Design Patterns for Reuse and Maintainability

Design Patterns for Reuse and Maintainability (面向可复用性和可维护性的设计模式) Open-Closed Principle (OCP) ——对扩展的开放,对修改已有代码的封 Why reusable design patterns A design… …enables flexibility to change …

Nuxt3 [Vue warn]: Hydration node mismatch:【解决方案】

[Vue warn]: Hydration node mismatch: 水合节点不匹配 Server rendered element contains more child nodes than client vdom. 服务器呈现的元素包含的子节点多于客户端vdom。 这个问题解决起来也很好解决,看这个问题是怎么出来的,看代码:…

暗影精灵8Pro声音没有了,这个方法可以解决,亲测有效!

这个OMEN by HP Gaming Laptop 16-k0xxx Windows 10 Sound Driver Mod ,真的解决了我的大问题! 如果你的暗影精灵8 Pro酷睿版突然变得哑巴了,扬声器和麦克风都发不出声音,那可能是声卡驱动出了问题。 别担心,我也是个…

eNSP中三层交换机的配置和使用

一、拓扑图 1.新建拓扑图 2.PC端配置 PC1: PC2&#xff1a; 二、基本命令配置 1.S1配置 <Huawei>system-view [Huawei]sysname S1 [S1]vlan 10 //在交换机 S1 上创建 VLAN 10 [S1-vlan10]vlan 20 // 在交换机 S1 上创建 VLAN 20 [S1-vlan20]quit //退出 VLAN 配置…

舆论中心的《黑神话:悟空》:人们总希望,这只猴子能打破些什么

距离《黑神话&#xff1a;悟空》上线还有60天。外界关于游戏的争议有很多&#xff0c;但游戏科学却很少出来回应什么。 6月9日&#xff0c;博主兲虎发文称&#xff0c;《黑神话&#xff1a;悟空》之所以在发布宣传视频后&#xff0c;一直遭受到所谓性别歧视的攻击与污蔑&#…

短视频营销系统小程序源码

开启全新营销时代 &#x1f3a5;一、引言&#xff1a;短视频营销微信小程序&#xff0c;营销新风尚 在数字化时代&#xff0c;短视频以其直观、生动的特点迅速崛起&#xff0c;成为用户获取信息、娱乐消遣的重要渠道。而短视频营销微信小程序则是将短视频与微信营销完美结合&…

解决node: bad option: -V

出现这个问题是由于我们的不当操作造成的&#xff0c;v是需要小写的&#xff0c;看下图 node --version node -v

缓存双写一致性(笔记)

缓存更新方案 旁路缓存模式 这是比较多的 旁路缓存模式&#xff1a;缓存有就返回&#xff0c;没有数据库查询&#xff0c;放入缓存返回。 还有些常用缓存策略 读穿透模式 读穿透和旁路很相似&#xff0c;程序不需要关注从哪里读取数据&#xff0c;它只需要从缓存查询数据。…

从概念到现实:数字孪生技术在智慧充电站的实践

在电动汽车蓬勃发展的今天&#xff0c;充电基础设施的智能化升级成为了推动新能源汽车产业跃进的关键一环。数字孪生技术&#xff0c;作为智能制造和工业4.0的核心&#xff0c;正在逐渐渗透到智慧充电站的每一个角落——从提高能源效率到增强用户体验&#xff0c;为智慧充电站的…

强化学习-RLHF-PPO入门

一、定义 强化学习微调分类RM模型 数据集格式训练流程Reward 模型训练流程(分类模型&#xff0c;积极为1&#xff0c;消极为0) AutoModelForSequenceClassificationReward 模型训练案例PPO模型训练流程PPO模型训练案例 二、实现 强化学习微调分类 RLHF:基于人类反馈对语言模型…

机器学习之数学基础(七)~过拟合(over-fitting)和欠拟合(under-fitting)

目录 1. 过拟合与欠拟合 1.1 Preliminary concept 1.2 过拟合 over-fitting 1.3 欠拟合 under-fitting 1.4 案例解析&#xff1a;黑天鹅 1. 过拟合与欠拟合 1.1 Preliminary concept 误差 经验误差&#xff1a;模型对训练集数据的误差。泛化误差&#xff1a;模型对测试…

RabbitMQ 消息传递

消息何去何从 mandatory和immediate是channel.basicPublish方法中的两个参数&#xff0c;他们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ提供的备份交换器可以将未能被交换器路由的消息&#xff08;没有绑定队列或者没有匹配的绑定&#xff09;存…

学习C++第三天——对引用的深入了解

引用 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用的变量共用同一块内存空间。 一个变量可以有多个引用&#xff1a; int main() {//一个变量可以有多个引用int a 10;int& b …

OpenAI 收购桌面实时协作公司 Multi;iOS 18 开放 iPhone 镜像测试丨RTE 开发者日报 Vol.231

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

c++ 设计模式 的课本范例(上)

( 0 ) 这里补充面向对象设计的几个原则&#xff1a; 开闭原则OCP &#xff1a; 面向增补开放&#xff0c;面向代码修改关闭。其实反映到代码设计上就是类的继承&#xff0c;通过继承与多态&#xff0c;可以不修改原代码&#xff0c;又增加新的类似的功能。 依赖倒置原则 Depend…

如何从iPhone恢复错误删除的照片

嘿&#xff0c;iPhone 用户&#xff01;作为一名苹果专业人士&#xff0c;我见过相当多的“哎呀&#xff0c;我删除了它&#xff01;”的时刻。今天&#xff0c;我在这里指导您完成从iPhone中恢复那些珍贵的&#xff0c;错误删除的照片的迷宫。坐下来&#xff0c;拿起你的设备&…

分压电路 ADC计算电压 【老板再也不能开除我了 】

经典分压电路 一个电压过来 adc这里的电压等于&#xff1a; 如是12位adc 那么他最大值就是4095 如参考电压是5v 则&#xff1a;5v/4095 实际电压V*(R2/(R1R2)&#xff09;/adc值 转化&#xff1a;实际电压V 5v*(adc值/4095)/(R2/(R1R2)) &#xff1a;老板再也不能 因为不会…

PointCloudLib-滤波模块(Filtering)-直通滤波

使用直通过滤器过滤点云 在本教程中,我们将学习如何沿着 指定维度 – 即,切断位于 或 在给定用户范围之外。 代码 首先,创建一个文件,比方说,在你最喜欢的 编辑器,并将以下内容放入其中:passthrough.cpp #include <iostream> #include <pcl/point_types.h&g…

推荐系统-FM模型

参考&#xff1a;推荐系统&#xff08;三&#xff09;Factorization Machines&#xff08;FM&#xff09;_svmmf-CSDN博客 一句话概括下FM&#xff1a;隐式向量特征交叉----类似embedding的思想 LR 如果利用LR做特征的二阶交叉&#xff0c;有&#xff1a; 但这个公式存在显著…