最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 服务器 > 系统运维 >
Ansible常用Ad-Hoc命令有哪些?
linuxe发表于 2020-10-16 15:09 次浏览
在自动化运维的过程中,我们常常会通过命令行的形式使用Ansible模块,ansible自带了259各模块,我们可以通过一些命令来查看ansible中所含的模块,也可以查看单一模块的信息。下面,我就为大家介绍一些常用的模块。

一、首先我们来认识一下什么是Ad-Hoc

Ad-Hoc其实就是通过命令行的形式让Ansible进行工作,这个命令行就是ansible命令,更为复杂的方式还有Playbook和Roles,这些在后面会讲到。

1、ansible命令行语法格式:

1 # ansible <host-pattern> [-f forks] [-m module_name] [-a args]
2 # <host-pattern>:该选项指定ansible命令对哪些主机生效,可以使用主机列表中的地址或者组名,all代表所有主机
3 # [-f forks]:并发数,可以理解为ansible一次性要让多少个主机执行任务,配置文件中默认为5
4 # [-m module_name]:使用的模块名
5 # [-a args]:每个模块特有的参数,可以用ansible-doc -s 模块名来查看模块对应参数
6 # -b:老版本中的sudo指令,将在远端主机切换到root执行操作,这个root用户是在ansible配置中定义的
7 #-K:sudo时需要输入的密码

 

 

2、ansible命令行示例

1 ansible 192.168.1.100 -m ping  #指定某台主机
2 ansible all -m ping  #指定所有主机
3 ansible 192.168.1.100:192.168.1.50 -m ping  #一次指定多台主机
4 ansible all:\!192.168.1.100 -m ping  #排除某台主机
5 ansible web -m ping -u dba -k  #使用dba用户对web组进行操作
6 ansible web -m command -a 'cat /etc/passwd' -u dba -k -b  -K #使用dba用户连接web组,然后sudo到root用户查看passwd文件

二、Ansible常用模块介绍

 

command模块:默认模块。让远端主机执行指定的命令,但不支持管道或者重定向。

1 ansible 192.168.44.130 -a 'date'

 

 

cron模块:设置定时任务,其中有个state选项包含present、absent两个参数,分别代表增加和移除

1 ansible webserver -m cron -a 'minute="*/10" job="/bin/echo test" name="test cron job" '
2 ansible webserver -m cron -a 'hour="*/1" job="/usr/sbin/ntpdate 10.254.1.10" name="crontab from ansible" state=present'

 

user模块:管理用户,还有一个group模块用于管理组

1 ansible webserver -m user -a "name=mysql system=yes"
1 <span style="font-family:"font-size:16px;"> </span>

file模块:设置文件的属性,如所属主、文件权限等

1 ansible all -m file -a 'owner=mysql group=mysql mode=644 path=/tmp/test'
2 ansible all -m file -a 'path=/etc/passwd.link src=/etc/passwd state=link'
3 # path:指定要设置的文件所在路径,可使用name或dest替换
4 # state:指明文件的格式,touch=创建新的文件;absent=删除文件,link=创建软连接文件;directory=创建目录。创建文件的软连接时src指明源文件,path指明连接文件路径

 

ping模块:测试远端主机是否能连接

1 ansible all -m ping

service模块:控制服务运行状态
1 ansible webserver -m service -a 'enabled=true name=httpd state=started'
2 # enabled:是否开机自动启动,取值为true或者false
3 # name:服务名称
4 # state:状态,取值有started,stopped,restarted

shell模块:和command模块一样是用来运行命令,当命令中有变量或者管道符的时候要用shell模块,特殊符号需要转义,比如\$

1 ansible all -m shell -a "echo test | passwd --stdin user1"

 

script模块:将本地的脚本复制到远端主机并执行,需要把脚本放在当前目录中并使用相对路径来指定

1 ansible all -m script -a 'test.sh'

 

yum模块:安装程序包,远端主机需要先配置好正确的yum源

1 ansible -m yum -a 'name=httpd state=present'
2 # name:指明要安装的程序包,可以带版本号,否则默认最新版本,多个安装包用逗号分隔
3 # tate:present代表安装,也是默认操作;absent是卸载;latest最新版本安装

 

setup模块:收集被管理主机的信息,包含系统版本、IP地址、CPU核心数。在Ansible高级操作中可以通过该模块先收集信息,然后根据不同主机的不同信息做响应操作,类似Zabbix中的低级别发现自动获取磁盘信息一样

 

copy模块:实现文件复制

1 ansible all -m copy -a 'src=/etc/fstab dest=/etc/fstab owner=root mode=640'
2 ansible all -m copy -a 'content="hello world" dest=/etc/fstab owner=root mode=640 backup=yes'  
3 # src=:定义本地源文件的路径
4 # dset=:定义目标文件路径
5 # content=:用该选项直接生成内容,替代src
6 # backup=:如果目标路径存在同名文件,将自动备份该文件

 

 

 

 

三、查看Ansible模块帮助信息

1、通过ansible-doc -l命令可以显示当前版本所支持的模块信息

 

2、通过ansible-doc -s modulename显示指定模块的详细用法

1 ansible-doc -s yum

 

标签:安装ansible
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐
2020-10-17 14:47:27 关键词:Ansible安装
摘要:简介 ansible是新出现的自动化运维工具,基于python开发,集合了众多运维工具的有点,实现了批量系统部署、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批..
2020-10-16 15:06:28 关键词:安装ansible
摘要:notify notify这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作。 在notify中列..