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 …

面向对象设计原则(SOLID原则)C++

面向对象设计原则(SOLID原则),每个原则都有其独特的重要性和应用场景。以下是详细解释,并给出简单的示例: 1. 单一职责原则(Single Responsibility Principle, SRP): 原则概述&…

Android应用开发从入门到竞赛(1)——开篇

本人从事Android应用开发十余年,指导大学生竞赛十余载,多次指导竞赛任务的Android应用开发,开设本专栏,介绍如何快速入门Android应用开发并将其应用于各类竞赛,同时顺带聊聊比赛感想。(部分内容来自本人所编…

树莓派4设置

使用sudo命令时要求输入密码 以 sudo 为前缀的命令以超级用户身份运行。默认情况下,超级用户不需要密码。不过,您可以要求所有以 sudo 运行的命令都输入密码,从而提高 Raspberry Pi 的安全性。 要强制 sudo 要求输入密码,请为你…

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

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

DiskLRUCache

DiskLRUCache是Android中实现磁盘缓存相关的组件类,当缓存满时其使用最近最少使用策略来淘汰相关的元素,以控制缓存大小。本文主要基于DiskLRUCache相关源码分析DiskLRUCache的创建、缓存的添加、获取、删除流程。 DiskLRUCache创建 DiskLRUCache不允许…

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

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

代码随想录算法训练营DAY46|121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

121. 买卖股票的最佳时机 题目链接:121. 买卖股票的最佳时机 class Solution(object):def maxProfit(self, prices):""":type prices: List[int]:rtype: int"""if len(prices) 0:return 0dp [[0]*2 for i in range(len(prices))]…

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;成为用户获取信息、娱乐消遣的重要渠道。而短视频营销微信小程序则是将短视频与微信营销完美结合&…

力扣(2024.06.25)

1. 76——最小覆盖子串 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "" 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字符串中该字符数量必须不…

【Unity】数据持久化--二进制 ,文件操作

1、各字节类型转字节数组 1.1 不同变量类型 有符号 sbyte int short long无符号 byte uint ushort ulong浮点 float double decimal特殊 bool char string 1.2 变量的本质 变量的本质是2进制在内存中都以字节的形式存储着1byte 8bit1bit(位)不是0就是1 //通过sizeof方法可…

解决node: bad option: -V

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

P2P文件传输协议之BitTorrent协议

P2P文件传输协议中的BitTorrent协议是一种用于高效地下载和上传大型文件的点对点&#xff08;P2P&#xff09;传输协议。以下是关于BitTorrent协议的详细说明&#xff1a; 一、技术原理 分布式系统&#xff1a;BitTorrent是一个分布式系统&#xff0c;没有中央服务器。相反&a…

缓存双写一致性(笔记)

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

MySQL中什么是索引合并?

索引合并是数据库查询优化的一种技术&#xff0c;它允许数据库管理系统在处理查询时&#xff0c;利用多个索引来改进数据检索的效率。这种技术主要应用在那些设计多个条件的查询中&#xff0c;通过合并多个索引的结果集&#xff0c;找出最终满足所有条件的数据行。 在MySQL中如…

ts 中定义多个数据

let a :{name:string,[xx:string]:any} a {name:小明,age:28,gender:男} 正确 a {name:111,age:28,gender:男} 错误&#xff0c;name必须是字符串 //这句话的意思就是a对象中 name是必填的并且只能是字符串&#xff0c;后面属性名是字符串&#xf…

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

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