ansible 命令格式
ansible 目标主机 [-f N][-m module_name] [-a args]
- -f N :每次向N 个主机发送指令
- -m 模块名:指定使用的模块名称 ,默认为command模块
- -a args :指模块专用的参数 ,args一般是key=value格式
ansible 模块
1.command模块
- 功能:在远程主机上执行命令
- 格式:-m command -a "命令"
案例:在每个主机上执行free -m命令
[root@centos6-1 ~]# ansible myserver -m command -a "free -m"
注意1:因为默认为command模块,可以省略
注意2:指定目标主机可以用all表示,all表示主机清单里的全部主机和主机组
[root@centos6-1 ~]# ansible myserver -a "free -m"
[root@centos6-1 ~]# ansible all -a "free -m"
2.shell模块
- 作用:执行命令,和command类似
- 区别:command只能执行简单命令, shell模块可以执行带参数和变量的命令
- 格式:-m shell -a “命令”
案例:在所有被管理节点上创建用户tom,然后修改tom密码为123
[root@centos6-1 ~]# ansible all -m shell -a "echo 123 | passwd --stdin tom"
3.user模块
- 功能:管理用户
- 格式:-m -user -a "选项"
- password:指定用户密码
- name:指定用户名
- groups:指定用户的属组
- createhome:是否创建家目录 yes|no
- system:是否为系统用户
- remove:当state=absent时,remove=yes则表示连同家目录一起删除
- state:是创建还是删除
案例:在所有被管理节点创建用户jerry,密码设为123
[root@centos6-1 ~]# ansible all -m user -a "name=jerry password=123" [root@centos6-1 ~]# ansible all -m shell -a "tail -n1 /etc/passwd"
4.copy模块
- 功能:复制文件和目录到远程主机
- 格式:-m copy -a"选项"
- 选项:
- src:源文件或源目录
- dest:指定目标主机的目录
- mode:指定将文件复制过去后,将权限修改为多少
- force:是否强制覆盖同名文件,yes/no
案例:将/tmp/a.txt分发到所有被管理节点的/home下,复制后,将权限改为700
[root@centos6-1 ~]# ansible all -m copy -a "src=/tmp/a.txt dest=/ mode=700"
5、file模块
- 作用:创建空文件、拷贝、移动、删除、创建连接
- 格式:-m file -a "选项"
- 选项: name:文件名
- src:源文件
- path:指定目标路径
- mode:相当于执行chmod
- force:是否强制覆盖同名文件,yes/no
- state:表示文件的类型
- link:表示软链接文件
- hard:表示硬链接文件
- directory:表示目录
- touch:创建空文件
- absent:删除文件
案例:在每个被管理主机的tmp下创建空文件abc.txt
方法1 [root@centos6-1 ~]# ansible all -m file -a "name=/tmp/abc.txt state=touch" 方法2 [root@centos6-1 ~]# ansible all -m file -a "path=/tmp/abc.txt state=touch"
6、ping模块
- 作用:检查被管理服务器示是否在线
- 格式:-m ping
案例:检查被管理节点是否在线
[root@centos6-1 ~]# ansible all -m ping
7、reboot模块
- 作用:重启操作系统的模块
- 格式:-m reboot
案例:重启所有被管理节点
方法1: [root@centos6-1 ~]# ansible all -m reboot 方法2: [root@centos6-1 ~]# ansible all -m shell -a "reboot"
8、yum模块
- 作用:安装、卸载软件
- 格式:-m yum -a "选项"
- 选项
- name:指定软件名称
- state:设置安装、卸载
- present:安装
- absent:卸载
案例:在所有被管理节点安装zsh
[root@centos6-1 ~]# ansible all -m yum -a "name=zsh state=present [root@centos6-1 ~]# ansible all -m shell -a "rpm -q zsh"
9.service模块
- 作用:管理系统中的各个服务
- 格式:-m service -a "选项"
- 选项:
- name:指定服务名
- state:设置服务状态
- started启动服务
- stopped停止服务
- restarted重启服务
- reloaded重载服务
- enabled设置服务开机自动启动
- runlevel设置服务的运行级别
案例:在所有被管理主机上安装apache
[root@centos6-1 ~]# ansible all -m yum -a "name=httpd state=present"
10、systemd模块
- 作用:centos7管理服务的方法,和service类似
- 格式:-m systemd -a "选项"
- 选项:
- name:指定服务名
- state:设置服务状态
- started启动服务
- stopped停止服务
- restarted重启服务
- reloaded重载服务
- enabled设置服务开机自动启动
- runlevel设置服务的运行级别
11、script模块
- 作用:将一个脚本文件发送到远程主机,并自动执行
- 格式:-m script -a “脚本”
案例:在被管理节点的/home、/tmp、/root分别创建一个文件,文件名 时间.txt
oot@centos6-1 ~]# cat my.sh #!/bin/bash for dir in /home /tmp /root do touch $dir/`date +%F-%T`.txt done [root@centos6-1 ~]# chmod +x my.sh [root@centos6-1 ~]# ansible all -m script -a "/root/my.sh"
12、unarchive模块
- 作用:将压缩包解压到指定的位置下
- 格式:-m unarchive -a "选项"
- 选项
- src:指定本地的压缩吧
- dest:指定将压缩包解压到目标主机的哪个路径
案例:将nginx的源码包解压到被管理节点的home下
[root@centos6-1 ~]# ansible all -m unarchive -a "src=/root/nginx-1.16.1.tar.gz dest=/home/"
13、cron模块
- 作用:周期完成特定的工作
- 格式:-m cron -a “选项”
- 选项
- minute:以分钟为单位来执行
- state:添加或是删除计划任务
- present:添加计划任务
- abent:删除计划任务
- special_time:在特殊时间节点执行
- reboot重启的时候执行
- daily每天执行一次
案例:每隔2分钟在/tmp/a.txt中写入一行数据
[root@centos6-1 .ssh]# ansible all -m cron -a "name=mycron state=present job='echo 123>>/tmp/a.txt' minute=*/2"