自动化运维工具Ansiblea——(1)ansible常见模块使用方法

本文详细介绍了Ansible中的多个模块,包括command、shell、script、copy、file、ping、yum、service、user和group模块的使用方法和区别。通过实例展示了如何在远程主机上执行命令、管理文件、安装软件、启动服务以及创建和管理用户和组。了解这些模块有助于提升自动化运维的效率。

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

ansible常见模块及使用方法

查看支持的模块

[root@ansible-server ~]# ansible-doc -l    (小写l)

[root@ansible-server ~]# ansible-doc -l | wc -l  #查看支持的模块个数

[root@ansible-server ~]# ansible --version      #查看我们的ansible版本号

获取模块的帮助

ansible-doc 模块名 或者ansible-doc -s 模块名  #获取指定模块帮助信息说明

这里我们使用ansible-doc获取下command模块的使用方式。

[root@ansible-server ~]# ansible-doc command

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

3个远程命令模块的区别

command模块

command 模块可以帮助我们在远程主机上执行命令。

注意:使用 command 模块在远程主机中执行命令时,不会经过远程主机的 shell处理,在使用 command 模块时,如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效,比如”<”, “>”, “|”, “;” 和 “&” 这些符号,如果你需要这些功能,可以参考后面介绍的 shell 模块。还有一点需要注意,执行ansible时,不加-m 默认使用command,可以在 /etc/ansible/ansible.cfg 中修改。

# default module name for /usr/bin/ansible

#module_name = command

缺点:不支持管道,没法批量执行命令;

[root@ansible-server ~]# ansible web_servers -m command -a 'ip addr show dev ens33'

shell模块:

shell 模块可以帮助我们在远程主机上执行命令。与 command 模块不同的是,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理,shell模块支持管道与重定向等符号;所以,我们在终端输入的各种命令方式,都可以使用。

[root@ansible-server ~]# ansible -i /etc/ansible/hosts web_servers -m shell -a "free -m | grep 'Mem'"

注:但是我们自己定义在/etc/profile或~/.bash_profile中的环境变量,shell模块由于没有加载,所以无法识别;如果需要使用自定义的环境变量,就需要在最开始,执行加载自定义脚本的语句

对shell模块的使用可以分成两块:

1) 如果待执行的语句少,可以直接写在一句话中:

例如:在192.168.10.5上部署java环境

[root@node01 ~]# tar zxf jdk-8u171-linux-x64.tar.gz -C /usr/local/

[root@node01 ~]# vim /etc/profile

	JAVA_HOME=/usr/local/jdk1.8.0_171 
	PATH=$JAVA_HOME/bin:$PATH
	CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar 
	export PATH JAVA_HOME CLASSPATH

[root@node01 ~]# source /etc/profile

[root@node01 ~]# java -version

 [root@ansible-server ~]# ansible 192.168.10.5 -m shell -a "java -version"

失败的原因是不能加载/etc/profile中定义的java环境变量。

[root@ansible-server ~]# ansible 192.168.10.5 -m shell -a "source /etc/profile && java -version"

2) 通过shell模块执行脚本

利用shell执行脚本,需要以下几个步骤
第一个步骤:编写一个脚本
第二个步骤:将脚本发送到远程主机
第三个步骤:将脚本权限进行修改(添加执行权限)
第四个步骤:运行ansible命令执行脚本

1、第一个步骤:编写一个脚本

例如:执行检查磁盘脚本,内容如下:

[root@ansible-server ~]# vim disk_check.sh

	#!/bin/bash
	basedir=$(cd `dirname $0`;pwd)
	echo $basedir
	diskmax=10 # 磁盘的阈值
	
	function check_max(){
	   local disk_size=$1
	   if [ $disk_size -ge $diskmax ]
	   then
	      echo "unhealth"
	   else
	      echo "health"
	   fi
	}
	
	function check_disk_info(){
	   df -h | grep "^/dev" | grep -v "/dev/sr0" | awk '{print $1,$5}' | cut -d '%' -f 1 | while read disk_name disk_size  
	   do
	        echo ""
	        echo "disk_name=$disk_name,disk_size=$disk_size%"
	        check_max $disk_size
	   done
	}
	check_disk_info

说明:

dirname命令可以取给定路径的目录部分(strip non-directory suffix from file name)。这个命令很少直接在shell命令行中使用,一般把它用在shell脚本中,用于取得脚本文件所在目录,然后将当前目录切换过去。

Local命令一般用于shell内局部变量的定义,多使用在函数内部

2、第二个步骤:将脚本发送到远程主机

拷贝脚本之前,先在远程上创建好准备拷贝过去的文件目录 ,其中远程创建文件目录有两种方式,操作如下:

方式一:shell命令方式

[root@ansible-server ~]# ansible web_servers -m shell -a "mkdir -p /work/ansible"

 方式二:file模块执行创建文件夹

[root@ansible-server ~]# ansible web_servers -m file -a 'path=/work/file state=directory mode=0700'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值