Ansible基础及模块

news2024/11/25 20:39:58

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

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

Absible特点
  • 部署简单,只需在主控端部署Ansible环境, 被控端无需做任何操作

  • 默认使用ssh协议设备进行管理

  • 主从集中化管理

  • 配置简单、功能强大、扩张性强

  • 支持API及自定义模块,可以通过pyhton轻松扩展

  • 通过playbooks 来指定强大的配置、状态管理

  • 对云计算平台、大数据都有很好的支持

ansible工作机制

ansible:核心组件
  • hostinventory:记录由ansible管理的主机信息【端口 ip 密码等】
  • playbook:“剧本” yaml格式文件,多个任务定义在一个文件中定义主机需要哪些模块来完成的功能
  • core modules:核心模块,主要操作是通过调用核心模块来管理任务
  • custom modlues:自定义模块,来完成核心无法完成的功能【支持多语言】
  • connectionplugins:连接插件 ansible和host通信使用

ansible 环境安装部署

管理端: 192.168.86.44	ansible                    
被管理端: 192.168.86.55                              
被管理端: 192.168.86.77                       

管理端安装 ansible

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

配置主机清单   

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

[dbservers]
192.168.86.77

 

配置密钥对验证

ssh-keygen -t rsa		#一路回车,使用免密登录
ssh-copy-id root@192.168.86.55
ssh-copy-id root@192.168.86.77  

 Ansible 命令行

命令格式:ansible <组名> -m <模块> -a <参数列表>
【不加-m指定模块,则默认使用command模块】

ansible-doc -l	 #列出所有已安装的模块,按q退出

Ansible 模块

1、command模块:在远程主机执行命令,不支持管道,重定向等shell的特性。

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

常用参数:
chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作

 指定 ip 执行 date命令:
ansible 192.168.86.55或192.168.86.77 -m command -a 'date'

指定组执行 date命令:
ansible webservers或dbservers -m command -a 'date'

 all 代表所有 hosts 主机
ansible all -m command -a 'date'

 所有主机切换到 home目录进行ls命令
ansible all -a "chdir=/home ls ./"

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

ansible-docc -s shell

 指定dbservers组中的test用户修改密码
ansible dbservers -m shell -a 'echo 123456 | passwd --stdin test'
  指定dbservers组执行 ifconfig ens33命令,列出第二行,以空格为标志,展示出第二个空格内容

 

 3、cron 模块:在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。

ansible-doc -s cron

常用的参数:
minute/hour/day/month/weekday:分/时/日/月/周
job:任务计划要执行的命令
name:任务计划的名称

 指定webservers组创建任务计划 
ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'
ansible webservers -a 'crontab -l'
ansible webservers -m cron -a 'name="test crontab" state=absent'  【假如该计划任务没有取名字,name=None即可】

 查看定时任务

移除定时任务

4.user 模块:用户管理的模块 

ansible-doc -s user

常用的参数:
name:用户名,必选参数
state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除
system=yes|no:是否为系统账号
uid:用户uid
group:用户基本组
shell:默认使用的shell
move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
password:用户的密码,建议使用加密后的字符串
comment:用户的注释信息
remove=yes|no:当state=absent时,是否删除用户的家目录

指定dbservers组创建test2用户、查看用户、删除用户
ansible dbservers -m user -a 'name=test2'
ansible dbservers -m command -a 'tail /etc/passwd'
ansible dbservers -m user -a 'name="test2" state=absent

5、group 模块:用户组管理的模块 

ansible-doc -s group

创建mysql组、查看、将test01用户添加到mysql组中
ansible dbservers -m group -a 'name=mysql gid=306 system=yes'

 ​

 6、copy模块:用于复制指定主机文件到远程主机

ansible-doc -s copy

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

将/etc/fstab复制到/opt目录下更名为fstab.bak,并指定属主和权限 
ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'

7、file模块:设置文件属性

ansible-doc -s file

修改文件的属主属组权限等:修改dbservers组的fstab.bak的属主、属组、权限
ansible dbservers -m file -a 'owner=test group=mysql mode=644 path=/opt/fstab.bak'

设置/opt/fstab.link为/opt/fstab.bak的链接文件 
ansible dbservers -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'

 创建/删除文件
创建:ansible dbservers -m file -a "path=/opt/abc.txt state=touch"
删除:ansible dbservers -m file -a "path=/opt/fstab.bak state=absent"

8、hostname模块:用于管理远程主机上的主机名

ansible-doc -s hostname

 修改dbservers组的主机名
ansible dbservers -m hostname -a 'name=aaaa'

9、ping模块:检测远程主机的连通性

ansible-doc -s ping

测试连通性
ansible all -m ping

10、yum模块:在远程主机上安装与卸载软件包

ansible-doc -s yum

 安装/卸载服务
安装:ansible dbservers -m yum -a 'name=httpd'	
卸载:ansible dbservers -m yum -a 'name=httpd state=absent'

11、service/systemd模块:用于管理远程主机上的管理服务的运行状态

ansible-doc -s service

常用的参数:
name:被管理的服务名称
state=started|stopped|restarted:动作包含启动关闭或者重启
enabled=yes|no:表示是否设置该服务开机自启
runlevel:如果设定了enabled开机自启,则要定义在哪些运行目标下自启动

 查看web服务器httpd运行状态
ansible dbservers -a 'systemctl status httpd'

启动httpd服务 
ansible dbservers -m service -a 'enabled=true name=httpd state=started'

12、script模块:实现远程批量运行本地的 shell 脚本

ansible-doc -s script

在ansible服务器编写脚本
vim test.sh
#!/bin/bash
echo "hello ansible from script" > /opt/script.txt
chmod +x test.sh

指定dbservers组执行并查看内容 

13、setup模块:facts 组件是用来收集被管理节点信息的,使用 setup 模块可以获取这些信息

ansible-doc -s setup

 获取mysql组主机的facts信息
ansible dbservers -m setup

 使用filter可以筛选指定的facts信息
ansible dbservers -m setup -a 'filter=*ipv4'

inventory 主机清单

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

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

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

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

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.86.44 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.86.44
192.168.86.55
192.168.86.66

[apache]
192.168.86.3[0:3]

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

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

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

相关文章

JZ64 求1+2+3+...+n

JZ64 求123…n //实例化对象时会自动调用构造函数 class Solution { public:class Sum{public://每调用一次构造函数 _sum加等一个数Sum(){_sum _i;_i;}};//Solution类的成员函数int Sum_Solution(int n){_i 1;_sum 0;//数n是几 我就构造几个对象//构造几个对象就会调用…

SVN报错fail to run the WC Db work queue associated with,清理失败,乱码的解决方式

替换掉 wc.db 文件即可 SVN报错fail to run the WC Db work queue associated with&#xff0c;清理失败&#xff0c;乱码的解决方式_svn failed to run the wc db-CSDN博客

Kubernetes 集群部署 Prometheus 和 Grafana

Kubernetes 集群部署 Prometheus 和 Grafana 文章目录 Kubernetes 集群部署 Prometheus 和 Grafana一.部署 node-exporter1.node-exporter 安装2.部署 node-exporter 二.部署Prometheus1.Prometheus 安装和配置&#xff08;1&#xff09;创建 sa 账号&#xff0c;对 sa 做 rbac…

智能物联网解决方案:蓝牙IOT主控模块打造高效监测和超低功耗

物联网蓝牙模块&#xff0c;无论单模&#xff0c;还是双模&#xff0c;或者双模音频的选择&#xff0c;如下文说描述&#xff1a; 蓝牙芯片模块市场的百花齐放&#xff0c;也带来的工程师在选型时碰到很大的困难&#xff0c;但是无论是做半成品&#xff0c;还是做成品&#xf…

Java GC 算法

一、概述 理解Java虚拟机垃圾回收机制的底层原理&#xff0c;是成为一个高级Java开发者的基本功。本文从底层的垃圾回收算法开始&#xff0c;着重去阐释不同垃圾回收器在算法设计和实现时的一些技术细节&#xff0c;去探索「why」这一部分&#xff0c;通过对比不同的垃圾回收算…

BAT020:将文本文档中多行文本拼接为;分隔的单行文本

引言&#xff1a;编写批处理程序&#xff0c;实现将文本文档中多行文本拼接为;分隔的单行文本。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击【…

[软考中级]软件设计师-uml

事物 uml中有4中事物&#xff0c;结构事物&#xff0c;行为事物&#xff0c;分组事物和注释事物 结构事物是uml模型中的名词&#xff0c;通常是模型的静态部分&#xff0c;描述概念或物理元素 行为事物是uml的动态部分&#xff0c;是模型中的动词&#xff0c;描述了跨越时间…

记一次Hbase2.1.x历史数据数据迁移方案

查看待迁移的表 list_namespace_tables vaas_dwm2. 制作待迁移表“DWM_TRIP_PART”的快照 snapshot vaas_dwm:DWM_TRIP_PART,dwm_trip_part_snapshot3. 统计待迁移表数据总数 hbase org.apache.hadoop.hbase.mapreduce.RowCounter vaas_dwm:DWM_TRIP_PART

phantom3D模体

phantom是人头模型&#xff0c;分为2D和3D两种&#xff0c;matlab中可直接调用phantom(size)生成2D数据&#xff0c;如图1&#xff0c;而三维需要对应函数文件&#xff0c;下载&#xff1a;3D 图1 2D phantom 3D模体为一个椭球体&#xff0c;只能生成xyz三个方向相同维度的模…

2023年东数西算研究报告

第一章 行业概况 1.1 定义 “东数西算”是近年来在中国大数据和数据中心领域中引起广泛关注的一个概念&#xff0c;其背后的理念与国家级的资源优化配置战略紧密相连。这一概念是“全国一体化大数据中心协同创新体系”下的一个重要组成部分。该创新体系旨在推进技术、业务、数…

pdf压缩文件怎么压缩最小?pdf压缩方法汇总

PDF是一种常见的文件格式&#xff0c;通常用于电子文档和印刷品&#xff0c;由于PDF文件通常包含大量的元数据、字体、图像和其他元素&#xff0c;因此它们的大小可能会非常大。 为了解决这个问题&#xff0c;我们可以使用一些PDF压缩工具来帮助我们&#xff0c;以便我们能够更…

Springcloud笔记(2)-Eureka服务注册中心

Eureka服务注册 Eureka作为一个微服务的治理中心&#xff0c;它是一个服务应用&#xff0c;可以接收其他服务的注册&#xff0c;也可以发现和治理服务实例。 服务治理中心是微服务&#xff08;分布式&#xff09;架构中最基础和最核心的功能组件&#xff0c;它主要对各个服务…

强缓存和协商缓存

强缓存和协商缓存 缓存分为强缓存和协商缓存。强缓存不过服务器&#xff0c;协商缓存需要过服务器&#xff0c;协商缓存返回的状态码是304。两类缓存机制可以同时存在&#xff0c;强缓存的优先级高于协商缓存。当执行强缓存时&#xff0c;如若缓存命中&#xff0c;则直接使用缓…

京东数据平台:2023年9月京东洗衣机行业品牌销售排行榜

鲸参谋监测的京东平台9月份洗衣机市场销售数据已出炉&#xff01; 9月份洗衣机行业销售呈下滑状态。鲸参谋数据显示&#xff0c;9月京东平台洗衣机的总销量为116万&#xff0c;环比下滑约1%&#xff0c;同比下滑约13%&#xff1b;月销售额为17亿&#xff0c;环比下滑约7%&…

【漏洞复现】安全云平台存在任意文件下载getshell

漏洞描述 深圳市强鸿电子有限公司鸿运主动安全云平台存在任意文件下载漏洞,攻击者可通过此漏洞下载敏感文件信息。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权…

SQL Server修改表结构

在SQL Server中修改的关键字是 ALTER(改变;(使)更改;修改(衣服使更合身);改动&#xff09; 列操作 添加列 添加列操作 alter tabel 表名 add 列名 数据类型--给员工表添加一个邮箱 alter的翻译是&#xff08;改变&#xff09; alter table people add PeopleMail varchar(2…

Chrome插件精选 — 鼠标手势插件

Chrome实现同一功能的插件往往有多款产品&#xff0c;逐一去安装试用耗时又费力&#xff0c;在此为某一类型插件记录下比较好用的一款或几款&#xff0c;便于节省尝试的时间和精力。 下面是两款比较好用的鼠标手势插件&#xff0c;支持很多设置选项&#xff0c;可以自定义手势&…

某Kr网站逆向webpack 全扣补环境法

持续创作文章&#xff0c;只是为了更好的思考 今天来讲一个比较简单的webpack全扣的网站&#xff0c;因为隐私安全性&#xff0c;许多东西不便放出&#xff0c;这里直接先看加密接口吧&#xff0c;接口是一个手机号验证码登录的接口&#xff0c;如下。 首先我们看下加密参数&a…

【日常业务开发】接口性能优化

【日常业务开发】接口性能优化 缓存本地缓存分布式缓存 数据库分库分表SQL 优化 业务程序并行化异步化池化技术预先计算事务粒度批量读写锁的粒度尽快return上下文传递空间换时间集合空间大小 缓存 本地缓存 本地缓存&#xff0c;最大的优点是应用和cache同一个进程内部&…

估算总体标准差的极差均值估计法sigma = R/d2

总体标准差的估算值可以通过将平均极差除以合适的常数因子d2来计算。这个估算方法是用于估算总体标准差的一种常见方法&#xff0c;尤其在质量控制和过程监控中经常使用。 总体标准差的估算值 (平均极差) / d2 其中&#xff1a; "总体标准差的估算值" 表示用极差…