当前位置: 首页 > news >正文

Ansible快速入门

一、介绍

Ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以来进行系统管理,自动化执行命令,部署等任务。
Ansible的特点
1、ansible不需要单独安装客户端,也不需要启动任何服务
2、ansible是python中的一套完整的自动化执行任务模块
3、ansible playbook 采用yaml配置,对于自动化任务执行过一目了然
Ansible组成结构
● Ansible
是Ansible的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行。
● Ansible Playbook
任务剧本(又称任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,yaml格式。
● Inventory
Ansible管理主机的清单,默认是/etc/ansible/hosts文件。
● Modules
Ansible执行命令的功能模块,Ansible2.3版本为止,共有1039个模块。还可以自定义模块。
● Plugins
插件,模块功能的补充,常有连接类型插件,循环插件,变量插件,过滤插件,插件功能用的较少。
● API
提供给第三方程序调用的应用程序编程接口。

二、环境准备

IP 系统 主机名 描述
172.16.1.3 CentOS7 Master ansible管理节点
172.16.1.4 CentOS7 Node1 被管理节点1
172.16.1.5 CentOS7 Node2 被管理节点2
  • 管理节点关闭防火墙和SElinux
[root@Master ~]# systemctl stop firewalld
[root@Master ~]# systemctl disable firewalld
[root@Master ~]# setenforce 0
[root@Master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@Master ~]# egrep "^SELINUX=" /etc/selinux/config
SELINUX=disabled
  • 管理节点修改/etc/hosts文件实现本地解析
[root@Master ~]# cat >>/etc/hosts<<'EOF'
172.16.1.4 Node1
172.16.1.5 Node2
EOF

之后使用ping域名方式是否解析正常。

  • 管理节点实现免密登录被管理节点
#生成公钥私钥ssh-keygen->回车->回车->回车
[root@Master ~]# ssh-keygen#传递公钥到被管理节点
[root@Master ~]# for i in localhost Node1 Node2; do ssh-copy-id $i; done

完成后测试看看是否可以免密登录。

三、安装Ansible软件包

  • 安装ansible软件包,由于ansible需要epel源,这里选用阿里epel源。可以把Base源也加上:
[root@Master ~]# yum -y install wget
[root@Master ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@Master ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@Master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  • 安装ansible软件包
[root@Master ~]# yum -y install ansible
  • 查看软件包版本
[root@Master ~]# ansible --version

四、定义被管理主机的清单文件

  • ansible主要配置文件如下
  • 主配置文件的默认配置:

/etc/ansible/ansible.cfg

· 主机清单配置方式,默认全部都是注释的

4.1 清单定义

[root@Master ~]# mv /etc/ansible/hosts /etc/ansible/hosts-default

可以直接把要管理的主机IP或者主机名写入,写主机名的前提是之前有本地配置了解析。

例如:

172.16.1.1
172.16.1.2
...
Node1
Node2
...

分组方式:

[webserver]
172.16.1.1
node2
...[dbserver]
172.16.1.3
node3
...

假设这里要安装k8s集群就可以配置如下,如果主机非常多,有Node1、Node2、···、Node100,可以简写成:

[kubernetes]
localhost
Node[1:2][node]
Node[1:2]

4.2 清单查看方法

  • 查看所有主机清单
[root@Master ~]# ansible all --list-host
  • 查看某个组的主机清单
[root@Master ~]# ansible kubernetes --list-host

五、常用使用模块

命令格式:ansible 组名/主机 [-m 模块名] [-a 具体操作]

  • 查看主机清单
[root@Master ~]# ansible all --list-host
  • 查看某个组内的主机清单
[root@Master ~]# ansible kubernetes --list-host
  • ansible-doc命令介绍:
    • ansible-doc** 模块文档命令

· 常用选项

-l:列出所有模块列表

-s:查看模块帮助信息

[root@Master ~]# ansible-doc -l
[root@Master ~]# ansible-doc -s ping

5.1 ping模块测试连通性

[root@Master ~]# ansible node -m ping
  • ansible返回结果颜色表示:
    • 绿色:代表命令执行成功,对远程节点不会造成改变
    • 黄色:代表命令执行成功,对远程节点造成改变
    • 红色:代表命令执行失败或者异常
    • 粉色:代表命令执行后发出的告警,给一些建议(可忽略)

5.2 command模块

使用文档命令查看使用帮助:

[root@Master ~]# ansible-doc -s command

可以看到该模块--name的解释,用于在目标主机上执行命令。

  • chdir:切换目录之后执行
[root@Master ~]# ansible node -m command -a 'chdir=/root ls -l'

表示切换到/root目录之后执行ls -l命令。

  • create:如果文件不存在将创建
[root@Master ~]# ansible node -m command -a 'creates=/data mkdir /data'

在/目录下创建data目录,如果存在将会绿色提示已经存在。

[root@Master ~]# ansible node -m command -a 'creates=/data/hello.txt touch /data/hello.txt'

在/data目录下新建hello.txt文件,如果存在会绿色提示文件存在。

  • removes:如果文件存在将删除它
[root@Master ~]# ansible node -m command -a 'removes=/data/hello.txt rm -rf /data/hello.txt'

删除/data下的hello.txt文件,如果不存在将会绿色显示不存在。

[root@Master ~]# ansible node -m command -a 'removes=/data rm -rf /data'

删除/data文件夹,如果不存在将会绿色显示不存在。

  • 其它
  • 注意,不能交互执行vim、top之类的命令。

5.3 shell 模块

shell模块和command模块是一样的,都是在目标主机上执行命令,但是它比command强大,它比command好在支持grep、>、*等等,但是它也不支持vi、vim。

5.4 script

  • script模块用于远程执行脚本,脚本存放在ansible主机本地即可,不需要拷贝到远程主机。
  • 常用参数:
    • chdir:此参数表示执行命令前,会先进入到指定的目录中。
    • creates:此参数表示如果文件存在于远程主机中,则不执行对应命令,如果不存在才执行命令。
    • removes:此参数表示文件如果不存在与远程主机当中,则不执行对应命令,如果存在,才执行命令。

提示:shell模块中的chdir、creates、removes参数的作用与command中的作用都是相同的,不在例举。

示例:

有如下脚本:

[root@Master ~]# cat /root/hello.sh
#!/bin/bash
echo "hello"

在远程主机上执行:

这个主要考验执行脚本的编写能力,它不用拷贝到其它主机上,执行之后会被其它主机调用。

5.5 copy 模块

[root@Master ~]# ansible node -m copy -a 'src=/root/hello.sh dest=/root'

src指定本地文件路径,dest指定目标路径。

http://www.jsqmd.com/news/910402/

相关文章:

  • 靠谱的青少年心理咨询公司工作手机
  • GCViewer vs. GCEasy:开源免费工具如何搞定日常JVM性能调优?
  • 探访四川全源塑业:一家高新技术企业如何用16年定义塑编包装新标准? - GrowthUME
  • 2026年山东被动房全案服务商深度横评:从设计认证到EPC总承包的完整避坑指南 - 企业名录优选推荐
  • 终极免费语音转文字工具:如何3分钟将音频变字幕?
  • 铁板鸭腌料批发哪里便宜?别再花冤枉钱了,从这家拿货价格实在还好吃 - 品牌2025
  • 选车床卡盘厂家别只看报价:倍得福的4个避坑思路与夹持方案观察 - 企师傅推荐官
  • 2026年广州留学中介口碑最好、诚信大对比,助你找到可靠伙伴 - 速递信息
  • 河北军警采购心理设备厂家综合实力排行一览 - 奔跑123
  • AI超级员工是什么?为什么越来越多老板开始关注百应AI超级员工? - 资讯快报
  • 绍兴黄金回收怎么选?3 家实体门店深度测评 + 真实案例 - 润富黄金珠宝行
  • 【AI大模型应用开发工程师特训笔记】第04讲(第9章):文件目录操作
  • WELearnHelper:如何通过智能学习辅助实现学习效率的300%提升
  • 618家用多功能洗地机推荐!2026多功能吸尘洗地机排名,高性价比机型优选 - Top品牌推荐官
  • 电芯装配测试线安全回路设计实战
  • 2026北京闲置手表变现指南,合扬本地实体门店估价透明安心 - 合扬奢侈品交易中心
  • 存量房市场趋势,观澜墅二手房在售房源特点及选购建议 - 品牌2025
  • 加油卡如何回收更放心?四个实用技巧分享 - 团团收购物卡回收
  • 阴阳师自动化脚本终极指南:3分钟解放双手,专注游戏核心乐趣
  • StarRailAssistant 完整指南:如何用自动化工具解放你的星穹铁道游戏时间
  • 2026拼多多代运营公司推荐榜:规避行业乱象,无隐性消费适配各类创业商家 - 品牌榜中榜
  • N_m3u8DL-CLI-SimpleG:三分钟掌握M3U8视频下载的图形化解决方案
  • 护眼大路灯哪个牌子好?8款热门高端护眼大路灯推荐!拒绝云测评
  • 2026 无锡黄金去哪回收?避坑技巧 + 门店推荐 - 合扬奢侈品交易中心
  • 龙门加工中心厂家怎么选?从中焱智造看高端装备的新选择 - 企师傅推荐官
  • 基于Home Assistant与Rasa构建家庭自动化虚拟助手:从架构到实践
  • 怕增项?怕甲醛超标?怕售后跑路?高定香港全屋定制工厂到底怎么选?附血泪避坑指南! - 产品测评官
  • 3分钟解决iPhone USB网络共享驱动问题:Apple-Mobile-Drivers-Installer终极指南
  • 在OpenClaw中集成Taotoken完成自动化Agent工作流
  • 3步掌握VSCode Mermaid插件:从代码到架构图的智能可视化革命