Linux自动化运维工具ansible详解

article/2025/9/28 5:52:00

文章目录

  • 认识ansible
  • ansible的组成
  • ansible的相关文件
  • ansible的使用
  • ansible的常用模块
    • 1、copy模块
    • 2、fetch模块
    • 3、command模块
    • 4、shell 模块
    • 5、file模块
    • 6、cron模块
    • 7、yum模块
    • 8、service模块
    • 9、script模块

认识ansible

ansible是一个自动化运维工具的名称,集合了众多运维工具的优点(puppet、fabric、slatstack),实现批量系统配置,程序的部署,批量运行命令等。
基于ssh协议,只要管理员通过ssh登录到一台远程主机上能做的操作,ansible都可以做到

优点:配置非常简单,用起来很方便
缺点:细腻度不够

ansible基于python开发,依赖于:paramiko、PyYaml 和 jinja 三个关键组件

ansible的组成

1、host inventory
主机清单:定义客户机,可以对客户机进行分类,如db类、web类等等

2、playbook
剧本:让主机按照我给定的剧本去完成一些事情

3、module
模块:实现一个个功能的程序

4、pluging
插件:实现一些额外的小功能

ansible的相关文件

主配置文件: /etc/ansible/ansible.cfg
此文件主要定义了roles_path的路径,主机清单路径,连接清单中的主机方式等等

配置文件: /etc/ansible/hosts
这个配置文件就是默认的主机清单配置文件,可以通过ansible.cfg 重新定义

可执行文件
ansible
主执行程序,一般用于命令行下执行

ansible-playbook
执行playbook中的任务

ansible-doc
获取各模块的帮助信息

ansible的使用

HOST-PATTERN 匹配主机模式,如all表示所有主机
-m 即MOD_NAME 指定模块名,如ping
-a 即MOD_ARGS 指定模块执行的参数
-f 即FORKS 指定生成几个子进行程执行
-C 表示不执行,模拟跑
-u 即Username 指定某主机的用户名
-c 即CONNection 指定连接方式(default smart)

配置
准备三台机器:
主控机 server:192.168.2.150
客户机1 client01:192.168.2.143
客户机2 client02:192.168.2.154

准备工作:做好免密通道,主控机可以免密登录到两台远程主机
怎么建立免密通道看这里👉: 三步建立免密通道

在主控机上安装 epel源 和 ansible工具
yum install epel-release
yum install ansible

修改 /etc/ansible/hosts 文件(修改前最好先备份)

[webser]
192.168.2.143 
192.168.2.154 [nginx]
192.168.2.143

简单使用:在远程主机创建/tmp/test01 目录
命令:ansible all -m shell -a "mkdir /tmp/test01"
all 表示所有远程主机
-m shell 使用shell模块
-a 指定shell的参数
结果中的 rc=0 表示 return code 为0 即命令执行成功
请添加图片描述

去远程主机查看是否有此目录

请添加图片描述

ansible的常用模块

1、copy模块

从本地copy文件分发到目标主机
常用参数说明

src=源文件路径 注意src=/tmp/ 和src=/tmp 的区别,第一个带/ 表示/tmp里的所有内容复制到目标目录下,第二个不带/ 表示目录递归复制过去
dest=目标路径
content=自行填充的文件内容
owner=属主
group=属组
mode=权限

示例:复制本机的 /test/a.txt 文件到所有远程机的 /test/ 目录下
如果这个目录不存在会自动新建
命令:ansible all -m copy -a "src=/test/a.txt dest=/test/ mode=640"
请添加图片描述

去远程机查看
请添加图片描述

2、fetch模块

从远程主机拉取文件到本地
src是远程 dest是本地

示例:拉取所有远程主机的 /etc/hostname 文件到本地的 /tmp/ 目录下
命令:ansible all -m fetch -a "src=/etc/hostname dest=/tmp/"
请添加图片描述

3、command模块

在远程主机上执行命令,属于裸执行,非键值对显示;不进行shell解析

示例:查看远程主机的 /test 目录
命令:ansible all -m command -a "ls /test/"
请添加图片描述

command 不会解析管道符号 | 会把 ls /test/ |wc -l 当成一条命令去执行,所以我还是喜欢用shell
请添加图片描述

4、shell 模块

跟command一样,只不过shell模块可以解析管道之类的功能

示例:查看远程主机的 /test 目录,并统计文件数量
命令:ansible all -m shell -a "ls /test/ |wc -l"
请添加图片描述
需要注意:使用command和shell模块在远程执行命令,需要远程主机有这个命令,否则会执行失败

5、file模块

设置文件属性(创建文件)
常用参数说明

path=目标路径
state=文件类型,可取值如下:
          absent删除文件和目录、touch新建空文件、directory为目录、link为软链接、hard为硬链接、
group=目录属组
owner=属主
mode=权限

查看file模块帮助信息:ansible-doc -s file

示例:新建 /test2/ 目录,并设置644权限
命令:ansible all -m file -a "path=/test2/ state=directory mode=644"
请添加图片描述

去远程主机查看
请添加图片描述

使用shell模块,直接在本地查看
请添加图片描述

6、cron模块

通过cron模块对目标主机生成计划任务
常用参数说明

分(minute)时(hour)日(day)月(month)周(week)
job=任务,也就是执行什么操作
name=本次计划任务的名称
state=present 生成(默认) 或 absent 删除 (基于name)

yum install -y ntp 安装ntp,一个时间管理服务器

示例:开启定时任务:每三分钟输出当前时间,到/tmp/time.txt文件
命令:ansible all -m cron -a "minute=*/3 job='date >>/tmp/time.txt' name=date_test state=present"
请添加图片描述

在远程机使用 crontab -l 命令可以查看定时任务
等待三分钟,查看一下/tmp/time.txt 文件
请添加图片描述

删除定时任务
命令:ansible all -m cron -a "name=date_test state=absent"

请添加图片描述

7、yum模块

故名思义就是yum安装软件包的模块
常用参数说明

enablerepo、disablerepo表示启用与禁用某repo库
name=安装包名
state=(present 或 installed) 表示安装,(absent 或 removed) 表示删除

示例:安装vsftpd
命令:ansible all -m yum -a "name=vsftpd state=installed"
请添加图片描述

8、service模块

服务管理模块
常用参数说明

name=服务名
state=服务状态 started(启动) stopped(关闭) restarted(重启) reloaded(重新加载)
enabled=是否开机启动 true / false
runlevel=启动级别 (systemed方式忽略)

示例:开启 vsftpd 服务
命令:ansible all -m service -a "name=vsftpd state=started"

查看是否开启
请添加图片描述

9、script模块

把本地的脚本传到远端执行,前提是到远端可以执行,不要把Linux下的脚本同步到windows下执行;
只在远程服务器执行脚本,不上传脚本到远程服务器

示例:执行 /lianxi/hello.sh 脚本
查看 hello.sh 脚本
请添加图片描述

命令:ansible all -m script -a "/lianxi/hello.sh"
请添加图片描述


http://chatgpt.dhexx.cn/article/4KHqT7V6.shtml

相关文章

如何实现网络自动化运维?

众所周知,网络是多个设备之间共享信息的连接。如今,手动管理连接到网络的每个设备会是一项重大的挑战,但是IT管理员可以通过网络自动化软件的功能的帮助来克服这一挑战,从而大大减少工作量和人为错误的可能。 网络编排是一种策略驱…

IT自动化运维平台建设解决方案

u当前IT运维的整体发展趋势是向自动化迭代,并向智能化演化; u目前大部分组织的IT运维正处在从人工运维向自动化运维的发展阶段; u有部分组织已经基本实现了自动化运维,正在向智能化运维升级,而也已有少量企业已经构建了…

Ansible 自动化运维

一、 Ansible:开源的运维自动化工具,可以提高运维工程师的效率,减少人为失误。操作简单,功能丰富。 特点:1)基于python开发,易于二次开发 2)丰富的内置模块,基本可以满足…

运维思索:自动化运维体系如何入手

需求 运维是事件驱动,还是自驱动可能是我们在运维工作中不太关注的问题。事件驱动让运维止步于故障,而自驱动让运维不止于建设。持续性的运维建设就需要一套自动化的运维体系,那么我们应该从何入手? 其实前期《运维思考》一系列…

自动化运维了解

背景 公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入**自动化运维**工具, 对多台服务器实现高效运维。 需求 通过管理服务器能够按照需求灵…

做好自动化运维平台必备技能

万丈高楼平地起,高楼稳不稳取决于地基是否扎实。基础数据便是运维管理这座高楼的地基。 首先介绍一下我们在运维管理中所涉及到的基础数据有哪一些。请看下图: 基础数据大致分为CMDB、日志、生产DB、知识库四个模块。 一、基础数据概况 CMDB中文是配置管…

什么是自动化运维,目前的普及状况?

感觉随着近年全球运维大会的火热举办,自动化运维话题逐渐被推向了前所未有地热度,很多人都觉得这是炒作的概念,其实不然,它是随着信息技术发展的必然趋势,下面和大家细聊。 随着IT技术的发展,“大数据”、…

超全!常见自动化运维工具全解析(含ansible、Puppet、SaltStack教程)

在IT行业运维一直是重复性工作较多的重灾区,而通过自动化运维工具不仅可以让工作更加轻松还减少了人为失误。 实现自动化运维就是将复杂的事情简单化、标准化、流程化,通过工具重复性、周期性的实现。例如应用系统维护自动化,巡检自动化和故障…

优质的国外程序员网站

在学习计算机编程相关技术时,必须知道一些有用的网站,以便随时掌握信息,了解技术前沿和学习新技术。下面是整理的一些国外干货网站列表。由于大多在墙外,部分网站可能需要梯子,请自备。下面开始技术之旅吧。 索引 当你…

程序员自学网站推荐

1.CSDN(CSDN - 专业开发者社区) CSDN是国内非常知名的技术交流社区,创建的时间也比较早,所以在国内也很有影响力。并且CSDN还是有非常多很优质的原创文章与资料,对于程序员来讲经常来这边逛逛也会学到不少知识的。 2.Import New(import - J…

给大家推荐几个程序员必备网站

1、程序员导航CXY521: 程序员导航-CXY521http://www.cxy521.com/ 2、程序员盒子 coderutil 程序员盒子,专注于程序员学习编程提效 官网https://www.coderutil.com/ 3、程序员快速导航 程序员快速导航 - 专门为程序员服务的导航网站 (yundashi168.com)http://nav.yundashi1…

程序员平时上哪些网站

转载地址:http://blog.csdn.net/vqhgwjl9eub/article/details/78146795 前言 程序员每天必不可少的就是与电脑打交道,经常逛的一些网站也相对固定,今天小编给大家分享一下自己平时经常逛的一些网站,不管是开发,还是了解…

牛人程序员最爱逛的10大编程网站,你知道几个?

今天我给大家推荐10个高级程序员经常逛的网站,你又去过几个呢?来跟着小编一起看看都有哪些牛逼的网站吧。 分享之前我还是要推荐下我自己的前端学习群:653415492,不管你是小白还是大牛,小编我都挺欢迎,不定…

程序员必备网站,建议收藏!

俗话说的好,一个程序员,20%靠知识储备,80%靠网络搜索。 打开代码,打开Google,开始工作。 那么常用的写码软件,你知道几个呢? 下面我们来一起看一下常用的写码软件吧~ 建议收藏本文&#xff…

程序员必备网站

程序员学习网站: CSDNhttps://link.juejin.cn?targetwww.csdn.net 稀土掘金http://juejin.cn Giteehttps://link.juejin.cn?targetGitee.com Stack overflow中文网https://link.juejin.cn?targetstackoverflow.org.cn W3school在线教程https://link.juejin.cn?targetww…

10大程序员必逛网站,良心推荐,建议收藏!

本部分内容对应视频链接。 很多小伙伴在刚开始学习技术的时候,都会去找一些学习类的网站来提高自己的水平。但现在网络越来越发达,学习类的网站真的是多如牛毛。有的网站真的是非常优秀,可以让你学到不少技术,但同样也有很多网站…

8个不能错过的程序员必备网站,惊艳到我了!!!

程序员是一个需要不断学习的职业,不少朋友每天来逛CSDN、掘金等网站,但一直都抱着“收藏从未停止,学习从未开始”的态度,别骗自己了兄弟。在编程体系中,有很多不错的小工具,可以极大得提升我们的开发效率。…

程序员必备十大网站

窝窝整理了十大程序猿必备网站,涵盖了开源平台、搜索引擎、免费的精品课程,包括让你头疼的BUG、算法等。偷偷告诉你,还有帮你拿到心仪的 offer! 一,海量的资源平台 十大网站榜首 :GitHub — 开发者极其重…

10个程序员必上的网站

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 文章目录 1.StackOverflow2.Quora3.Reddit4.StackExchange5.CodeProject6.Google Groups7.CodeRanch8.Programmers Heaven9.FindNerd10.Chegg 当我们写代码的时候&…

程序员必备的网站推荐

程序员必备的网站推荐 注:我收集的网站很有限,可能有很多网站没有列出,希望大家可以通过评论告知我,我会尽快添加。 一、资源导航网站 1.AI圈导航(https://www.puuuq.cn) 人工智能(AI)领域最全面的资源导…