本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Ansible
  • Ansible教程(2)Ansible Ad-Hoc命令行与常用模块

Ansible教程(2)Ansible Ad-Hoc命令行与常用模块

发布:TangLu2020-9-21 18:14分类: Ansible 标签: 自动化运维 ansible

一、什么是Ad-Hoc

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

1、ansible命令行语法格式:

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



2、ansible命令行示例

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


ansible4.png


二、Ansible常用模块介绍


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

ansible 192.168.44.130 -a 'date'


ansible2.png


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

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


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

ansible webserver -m user -a "name=mysql system=yes" 
 

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

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


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

ansible all -m ping 

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

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

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


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

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


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

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

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


copy模块:实现文件复制

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


三、查看Ansible模块帮助信息

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

ansible2.png


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

ansible-doc -s yum


ansible3.png


ansible1.png


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《Ansible教程(2)Ansible Ad-Hoc命令行与常用模块
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-274.html  [生成短网址]

已有 0/3579 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~