Ansible基础和命令行模块操作

本文介绍了Ansible的基础知识和命令行模块,包括command、shell、cron、user、group等,详细阐述了各模块的功能和常用参数。同时,讨论了Ansible的环境安装部署和主机清单管理,强调了其幂等性和无Agent特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.了解ansible

二.ansible 环境安装部署

三.ansible 命令行模块

1.command 模块

2.shell 模块

3.cron 模块

4.user 模块

5.group 模块

6.copy 模块

7.file 模块

8.hostname 模块

9.ping 模块

10.yum 模块

11.service/systemd 模块

12.script 模块

13.setup 模块

四.inventory 主机清单

1.主机变量

2.组变量

3.组嵌套


一.了解ansible

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

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

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

        Ansible其中一个比较鲜明的特性是Agentless,即无Agent的存在,它就像普通命令一样,并非C/S软件,也只需在某个作为控制节点的主机上安装一次Ansible即可,通常它基于ssh连接来控制远程主机,远程主机上不需要安装Ansible或其它额外的服务。

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

        Ansible的另一个比较鲜明的特性是它的绝大多数模块都具备幂等性(idempotence)。所谓幂等性,指的是多次操作或多次执行对系统资源的影响是一致的。比如执行 systemctl stop xxx 命令来停止服务,当发现要停止的目标服务已经处于停止状态, 它什么也不会做,所以多次停止的结果仍然是停止,不会改变结果,它是幂等的,而 systemctl restart xxx 是非幂等的。

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

二.ansible 环境安装部署

环境准备

管理端 192.168.111.178 ansible
被管理端 192.168.111.177
被管理端 192.168.111.176

管理端安装 ansible

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

如果要查看ansible的目录结构,可以安装树形查询工具

yum -y install tree

添加被管理主机的ip到管理端的配置组名中

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

[dbservers]
192.168.111.176

配置密钥对验证

使用ssh免交互,需要下载sshpass工具,参考sshpass免密登录

ssh-keygen -t rsa		#一路回车,使用免密登录(配置密钥对验证)
sshpass -p 'abc1234' ssh-copy-id [email protected]
sshpass -p 'abc1234' ssh-copy-id [email protected]

或者直接输入

ssh-copy-id [email protected]          #上传公钥到被控制端
ssh-copy-id [email protected]

三.ansible 命令行模块

(基于二的环境)

ansible命令格式:

ansible <组名> -m <模块> -a <参数列表>

查看ansible的命令模块

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

1.command 模块

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

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

ansible 192.168.111.177 -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 模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值