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(命令模块,默认模块,用于在远程执行命令)
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' #查看任务列表
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
shell(类似command,用到管道等复杂命令建议使用)
~]# ansible all -m shell -a 'echo test | passwd --stdin user1' ~]# ansible all -m command -a 'echo test | passwd --stdin user1' #command命令无法传递,上述命令执行后无法设定密码
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
#默认显示全部信息