Ansible(三)模块


1.查看模块帮助

~]# man-ansible-doc(查看Ansible自带的模块文档信息)

~]# ansible-doc -l(列出支持的所有模块)

~]# ansible-doc -s MODULE_NAME(查看模块支持的配置指令)


2.使用语法

ansible <host-pattern> [-m module_name] [-a args] [options]

OPTIONS

host-pattern:对哪些主机生效,支持组名

-f:启动并发线程数,指定一批处理主机数量

-m:使用模块

-a:模块特有的参数


3.常见模块

command(命令模块,默认模块,用于在远程执行命令)

wKioL1ciE-Chu06yAAJUijMnoGs577.jpg


wKioL1ciGOfQ_pT2AAHhmRrcHUs043.jpg


cron(任务计划)

~]# ansible websrvs -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state=present'
#默认state=present(安装),可省略不写
~]# ansible websrvs -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state=absent'
#state=absent(移除)
~]# ansible websrvs -a 'crontab -l'
#查看任务列表

wKioL1ciHGnAxaSiAACfZRg2wL4360.jpg


wKioL1ciHeqiH-uJAADP8K7Okx0706.jpg


user(用户账号管理)

~]# ansible all -m user -a 'name=user1'


group(组管理)

~]# ansible websrvs -m group -a 'name=mysql gid=306 system=yes'
~]# ansible websrvs -m user -a 'name=mysql uid=306 system=yes group=mysql'
#定义为system用户,则shell为nologin,无需再额外指定


copy

~]# ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640'
~]# ansible all -m copy -a 'content="Hello World\nHello China\n" dest=/tmp/test.ansible'

OPTIONS

src:本地源文件路径,支持相对路径和绝对路径,如果指定目录,则复制目录下所有文件

dest:远端目标文件路径,仅支持绝对路径

owner:属主

group:属组,不指定默认与owner一致

mode:权限

content:取代src,直接生成目标文件内容,两者不能同时使用


file(设置文件属性)

~]# ansible all -m file -a 'owner=mysql group=mysql mode=644 path=/tmp/fstab.ansible'
#path:指定文件路径,可以使用name或dest来替换


~]# ansible all -m file -a 'path=/tmp/fstab.link src=/tmp/fstab.ansible state=link'
#创建符号链接,指定link模式

OPTIONS

src:源文件

path:符号链接文件路径


ping(测试远程主机连通性)

~]# ansible all -m ping


service(指定运行状态)

~]# ansible websrvs -a 'service httpd status'
~]# ansible websrvs -a 'chkconfig --list httpd'
~]# ansible websrvs -m service -a 'enabled=true name=httpd state=started'

OPTIONS

enabled:true/false,定义是否开机启动

name:服务名

state:started/stoped/restarted

wKiom1ci0urw1Z9jAAILABtloR0122.jpg


shell(类似command,用到管道等复杂命令建议使用)

~]# ansible all -m shell -a 'echo test | passwd --stdin user1'
~]# ansible all -m command -a 'echo test | passwd --stdin user1'
#command命令无法传递,上述命令执行后无法设定密码

wKiom1ci1RrQKo8kAAJjrvurwSg554.jpg


script(将本地脚本复制到远程主机,并运行,脚本仅支持相对路径)

~]# vim test.sh
#编辑脚本
#!/bin/bash
echo "hello world" > /tmp/script.ansible
#脚本内容
~]# chomd +x test.sh
#加入执行权限
~]# ansible all -m script -a 'test.sh'
#脚本仅支持相对路径


yum

~]# ansible all -m yum -a 'name=httpd'
#默认安装,可不指定state=present
~]# ansible all -m yum -a 'name=httpd state=absent'

OPTIONS

name:指明安装程序包及版本,不指定版本则安装最新版本

state:present(安装)\latest(安装最新版)\absent(卸载)


setup(收集远程主机的facts)

每个被管理节点在接受并运行管理命令之前,会将自己主机相关信息,如OS版本、IP等报告给远程的ansible主机

~]# ansible all -m setup

#默认显示全部信息














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章