认识ansible,了解常用的模块

news2024/11/28 10:32:15

ansible的概念

Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。

Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作。

ansible的特点

(1)、Ansible是基于模块工作的,它只是提供了一种运行框架,它本身没有完成任务的能力,真正执行操作的是Ansible的模块, 比如copy模块用于拷贝文件到远程主机上,service模块用于管理服务的启动、停止、重启等。

(2)、Ansible其中一个比较鲜明的特性是Agentless,即无Agent的存在,它就像普通命令一样,并非C/S软件,也只需在某个作为控制节点的主机上安装一次Ansible即可。

(3)、ansible通常基于ssh连接来控制远程主机,远程主机上不需要安装Ansible或其它额外的服务。

使用者在使用时,在服务器终端输入命令或者playbooks,会通过预定好的规则将playbook拆解为play,再组织成ansible可以识别的任务,调用模块和插件,根据主机清单通过SSH将 临时文件发给远程的客户端执行并返回结果,执行结束后自动删除。

(4)、Ansible的另一个比较鲜明的特性是它的绝大多数模块都具备幂等性(idempotence)。所谓幂等性,指的是无论执行多少次同样的运算,结果都是相同的,即一条命令,任意多次执行所产生的影响均与一次执行的影响相同。比如执行 systemctl stop xxx 命令来停止服务,当发现要停止的目标服务已经处于停止状态,它什么也不会做, 所以多次停止的结果仍然是停止,不会改变结果,它是幂等的,而 systemctl restart xxx 是非幂等的。

Ansible的很多模块在执行时都会先判断目标节点是否要执行任务,所以,可以放心大胆地让Ansible去执行任务,重复执行某个任务绝大多数时候不会产生任何副作用。

ansible与其他运维工具的对比

ansible的环境部署

ansible的安装非常的简单,只需要在控制节点安装ansible服务即可


//管理端安装 ansible
yum install -y epel-release			//先安装 epel 源
yum install -y ansible


//ansible 目录结构
/etc/ansible/
├── ansible.cfg			#ansible的配置文件,一般无需修改
├── hosts				#ansible的主机清单,用于存储需要管理的远程主机的相关信息
└── roles/				#公共角色目录

准备实验环境


管理端:192.168.66.10		ansible
被管理端
webserver:192.168.66.20 192.168.66.30
dbserver:192.168.66.40

配置主机清单


//配置主机清单
cd /etc/ansible
vim hosts       
[webservers]			#配置组名
192.168.66.20			#组里包含的被管理的主机IP地址或主机名(主机名需要先修改/etc/hosts文件)
192.168.66.30
 
[dbservers]
192.168.66.40

完成密钥对免密登录

//配置密钥对验证
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
 
sshpass -p "123" ssh-copy-id -o StrictHostKeyChecking=no root@192.168.66.20
sshpass -p "123" ssh-copy-id -o StrictHostKeyChecking=no root@192.168.66.30
sshpass -p "123" ssh-copy-id -o StrictHostKeyChecking=no root@192.168.66.40     

ansible基于命令行完成常用的模块学习

命令格式:ansible <主机组名> -m <模块名> -a '模块参数'

ansible-doc -l				#列出所有已安装的模块,按q退出
ansible-doc -l|wc -l        #查看有多少模块

command模块

command模块是ansible的默认模块,在远程主机执行命令,不支持管道,重定向等shell的特性。(ansible.cfg配置文件定义的)

查看模块的参数

ansible-doc -s command		#-s 列出指定模块的描述信息和操作动作


ansible 192.168.66.20 -m command -a 'date'		#指定 ip 执行 date
ansible webservers -m command -a 'date'			#指定组执行 date
ansible dbservers -m command -a 'date'       
ansible all -m command -a 'date'				#all 代表所有 hosts 主机
ansible all -a 'ls /'							#如省略 -m 模块,则默认运行 command 模块
 
//常用的参数:
chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作
 
ansible all -m command -a "chdir=/home  ls ./"

shell模块


在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能)
ansible-doc -s shell

group模块

//用户组管理的模块
ansible-doc -s group

ansible dbservers -m group -a 'name=mysql gid=306 system=yes'	#创建mysql组
ansible dbservers -a 'tail /etc/group'
ansible dbservers -m user -a 'name=test01 uid=306 system=yes group=mysql'	#将test01用户添加到mysql组中
ansible dbservers -a 'tail /etc/passwd'
ansible dbservers -a 'id test01

copy模块

将ansible主机的文件/目录/内容复制到远程主机

dest:指出复制文件的目标及位置,使用绝对路径,如果源是目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容
src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode:指出复制时,目标文件的权限 
owner:指出复制时,目标文件的属主
group:指出复制时,目标文件的属组
content:指出复制到目标主机上的内容,不能与src一起使用

在ansible主机上准备了一个文件,将其复制到远程主机的opt目录中

[root@localhost ansible]#ansible webservers -m copy -a 'src=nginx.service dest=/opt/nginx.service mode=777 owner=hjl'

ansible dbservers -m copy -a 'content="helloworld" dest=/opt/hello.txt'

ansible dbservers -m copy -a 'src=/etc/yum.repos.d/ dest=/opt/rh'

hostname模块

//用于管理远程主机上的主机名
ansible dbservers -m hostname -a "name=lyh"

ping模块

//检测远程主机的连通性
ansible all -m ping

ping可以快速检测与目标主机的连通性

inventory 主机清单

//Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。

//如果是名称类似的主机,可以使用列表的方式标识各个主机。

vim /etc/ansible/hosts
[webservers]
192.168.66.20:2222        #冒号后定义远程连接端口,默认是 ssh 的 22 端口
192.168.66.30[2:5]

[dbservers]
db-[a:f].example.org    #支持匹配 a~f

//inventory 中的变量
Inventory变量名                  含义
ansible_host                  ansible连接节点时的IP地址
ansible_port                  连接对方的端口号,ssh连接时默认为22
ansible_user                  连接对方主机时使用的用户名。不指定时,将使用执行ansible或ansible-playbook命令的用户
ansible_password              连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效
ansible_ssh_private_key_file  指定密钥认证ssh连接时的私钥文件
ansible_ssh_common_args       提供给ssh、sftp、scp命令的额外参数
ansible_become                允许进行权限提升
ansible_become_method         指定提升权限的方式,例如可使用sudo/su/runas等方式
ansible_become_user           提升为哪个用户的权限,默认提升为root
ansible_become_password       提升为指定用户权限时的密码

(1)主机变量(横向表示)
[webservers]
192.168.666.20 ansible_port=22 ansible_user=root ansible_password=abc1234

(2)组变量(纵向表示)
[webservers:vars]            #表示为 webservers 组内所有主机定义变量
ansible_user=root
ansible_password=abc1234

[all:vars]                    #表示为所有组内的所有主机定义变量
ansible_port=22

(3)组嵌套
[nginx]
192.168.66.20
192.168.66.30
192.168.66.40

[apache]
192.168.66.66[0:3]

[webs:children]        #表示为 webs 主机组中包含了 nginx 组和 apache 组内的所有主机
nginx
apache

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

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

相关文章

VS code常用插件

1.Auto Close Tag &#xff08;自动闭合HTML/XML标签&#xff09; 2.Auto Rename Tag &#xff08;自动完成另一侧标签的同步修改&#xff09; Beautify &#xff08;格式化 html ,js,css&#xff09; 4.Bracket Pair Colorizer&#xff08;将匹配的括号染成相同的颜色&#xf…

利用 pt-archiver 实现数据库归档功能

文章目录 一、前言关于Percona 二、Percona Toolkit安装 percona-toolkit&#xff1a;pt-archiver 归档命令的使用格式&#xff1a;示例&#xff1a; 三、归档步骤&#xff1a;1&#xff09;、创建归档数据库和归档表方式一(推荐)&#xff1a;这种方式的优缺点&#xff1a; 方式…

【软考问题】-- 13 - 知识精讲 - 项目绩效域管理

一、基本问题 问题1&#xff1a;干系人绩效域的预期目标主要包含什么&#xff1f; ①与干系人建立高效的工作关系&#xff1b;②干系人认同项目目标&#xff1b;③支持项目的干系人提高了满意度&#xff0c;并从中收益&#xff1b;④反对项目的干系人没有对项目产生负面影响。问…

黑莓加大裁员力度,目标年利润再增1亿美元

近日&#xff0c;加拿大黑莓公司表示&#xff0c;今年的年利润再度增加 1 亿美元&#xff0c;为此将采取包括裁员在内的一系列降本措施。黑莓方面称&#xff0c;公司将在本季度进一步降低成本&#xff0c;并在网络安全业务上进行额外裁员&#xff0c;从而每年为公司节省约 2700…

MyBatis终版

MyBatis常见面试题汇总&#xff08;超详细回答&#xff09; 1.什么是Mybatis&#xff1f; Mybatis是一种流行的Java对象关系映射&#xff08;ORM&#xff09;框架&#xff0c;它将Java对象映射到关系型数据库中的表格。它提供了一种简单的方式来编写SQL语句并将其映射到Java对…

加了AI的旗舰版,会用就是好工具!

软件简介&#xff1a; 软件【下载地址】获取方式见文末。注&#xff1a;推荐使用&#xff0c;更贴合此安装方法&#xff01; ACDSee Photo Studio Ultimate 2024是一款功能强大的数字图像预览和编辑软件&#xff0c;适用于专业的图像处理需求。它配备了高效的RAW编辑器&#…

C++并发编程 -3.同步并发操作

本文介绍如何使用条件变量控制并发的同步操作、C 并发三剑客&#xff0c;函数式编程 一.条件变量 1.概念 C条件变量&#xff08;condition variable&#xff09;是一种多线程编程中常用的同步机制&#xff0c;用于线程间的通信和协调。它允许一个或多个线程等待某个条件的发生…

数据脱敏(四)脱敏算法-替换算法

脱敏算法篇使用阿里云数据脱敏算法为模板,使用算子平台快速搭建流程来展示数据 "替换脱敏"是一种数据处理技术&#xff0c;主要用于保护个人隐私和数据安全。它通过将敏感信息&#xff08;如姓名、身份证号、电话号码等&#xff09;替换为无意义或随机的字符&#xf…

hal/SurfaceFlinger/perfetto实战需求问题探讨作业-千里马framework开发

背景 hi&#xff0c;粉丝朋友们&#xff1a; 在新课halperfettosurfaceflinger https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg 推出后&#xff0c;各位学员朋友们都积极响应&#xff0c;开始马不停蹄的学习&#xff0c;学员学习后希望有更多的实战案例或者项目拿来练手&…

vue3中基于路由层面和组件层面进行用户角色及权限控制的方法解析

文章目录 一、权限控制二、路由层面控制三、组件层面控制1、使用自定义指令2、使用方法控制3、封装一个权限控制组件来实现组件层面控制权限3.1、组件页面 Authority.vue3.2、使用页面 app.vue3.3、效果预览 一、权限控制 随着前端技术的不断发展&#xff0c;越来越多的前端框…

美食推荐|美食推荐小程序|基于微信小程序的美食推荐系统设计与实现(源码+数据库+文档)

美食推荐小程序目录 目录 基于微信小程序的美食推荐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、前台功能模块 2、后台功能模块 &#xff08;1&#xff09;用户信息管理 &#xff08;2&#xff09;水果信息管理 &#xff08;3&#xff09;水果类型管理…

投票助力 | 第19届(2023)数智招标采购行业年度评选网络投票已开启!

为展示招标采购领域业务发展的突出成绩和数智化应用创新成果&#xff0c;以优秀企业、个人和案例激励并引导更多的行业实践者们共同努力&#xff0c;推进招标采购行业数智化创新发展&#xff0c;必联网、机电产品招标投标电子交易平台、隆道平台、隆道研究院联合主办了“第19届…

讲技巧乘机会

恋爱季节 - 邓丽君 (Teresa Teng) 词&#xff1a;邓丽君 曲&#xff1a;いずみたく 太阳高天气真晴朗 微风里飘来野花香 手拉手并肩向前走 我和你来到小溪旁 爬过了山坡又村庄 经过了小桥和池塘 我和你歌唱在山岗 青山绿水回声响 谈恋爱要有勇气 要赶快 讲技巧乘机…

HTML 入门指南

简述 参考&#xff1a;HTML 教程- (HTML5 标准) HTML 语言的介绍、特点 HTML&#xff1a;超级文本标记语言&#xff08;HyperText Markup Language&#xff09; “超文本” 就是指页面内可以包含图片、链接等非文字内容。“标记” 就是使用标签的方法将需要的内容包括起来。…

当excel中表格打印预览右边超出限定页面时,调整列宽

解决办法&#xff1a;调整整体列或者部分列的列宽 操作流程如下&#xff1a; 第一步&#xff1a;选中需要调整的列 ①将鼠标放在表格的列上&#xff0c;等出现向下粗箭头后——>②单击&#xff08;变成粗十字&#xff09;该列——>③拖动选中列 第二步&#xff1a;调…

docker ubuntu tomcat 换源 安装软件

第一种办法参考docker中ubuntu容器更换apt源_ubuntu更改apt源 with dockerfile-CSDN博客 sed -i s/archive.ubuntu.com//mirrors.aliyun.com/g /etc/apt/sources.list sed -i s/security.ubuntu.com//mirrors.aliyun.com/g /etc/apt/sources.list apt update apt install vim…

C++学习Day06之继承中的构造与析构

目录 一、程序及输出1.1 构造、析构顺序1.2 默认构造函数1.3 显示调用父类中的其他构造函数 二、分析与总结 一、程序及输出 1.1 构造、析构顺序 先调用父类构造&#xff0c;再调用其他成员构造&#xff0c; 再调用自身构造 &#xff0c;析构的顺序与构造相反 #include<i…

Linix与Windows上使用nc命令测试某一个服务器端口网络是否正常可访问详细安装及测试步骤

一、windows 1、下载nc安装包 https://nszyf.lanzoum.com/ihtqS0v0lwwh 2、下载后解压放置在自己电脑合适的位置&#xff0c;并且配置到环境变量中 3、配置成功环境变量&#xff0c;winr打开运行&#xff0c;输入cmd&#xff0c;回车&#xff0c;打开一个终端测试 测试成功…

MySQL性能分析1——查看频次

1、查看执行频次 查看当前数据库的INSERT,UPDATE,DELETE,SELECT的访问频次&#xff0c;得到当前数据库是以插入&#xff0c;更新和删除为主还是以查询为主&#xff0c;如果是以插入&#xff0c;更新和删除为主的话&#xff0c;那么优化比重可以轻一点儿。 语法&#xff1a; …

初次安装Android Studio卡在gradle的解决方法

原因 国外的下载的地址无法访问才导致无法下载 解决方案 找到新建项目的保存位置找到gradle文件夹 进入文件夹 用文本打开 如图 大概一样&#xff0c;将国外地址改为国内地址 选中的这一条 国内的地址有 腾讯云提供了 Gradle 的国内镜像&#xff0c;您可以通过访问腾讯云…