一、ad-hoc命令部分

  • ansible [-m module_name] [options]
  • 指令 匹配规则的主机清单 -m 模块名 选项 -a ‘参数’
  • [root@compute ~]# ansible all —list
  • [root@localhost ~]# ansible all -m command -a ‘ls’
  • [root@localhost ~]# ansible all -m ping

    二、常用模块

    1. copy模块
  • 从本地copy文件分发到目录主机路径
  • 参数说明:
  • src= 源文件路径
  • dest= 目标路径
  • 注意src= 路径后面带/ 表示带里面的所有内容复制到目标目录下,不带/是目录递归复制过去
  • content= 自行填充的文件内容
  • owner 属主
  • group 属组
  • mode权限
  • 例:
  • [root@localhost ~]# ansible all -m copy -a “src=/etc/passwd dest=/tmp/passwd mode=600”
    1. fetch模块
  • 从远程主机拉取文件到本地
  • 需指定src和dest,dest只要指定一个接收目录,默认会在后面加上远程主机及src的路径
  • [root@localhost ~]# ansible all -m fetch -a “src=/tmp/passwd dest=/tmp”
    1. command模块
  • 在远程主机上执行命令,属于裸执行;不进行shell解析;
  • [root@localhost ~]# ansible all -m command -a “ip a”
    1. shell模块
  • 由于commnad只能执行裸命令(即系统环境中有支持的命令),至于管道之类的功能不支持,
  • shell模块可以做到
  • [root@localhost ~]# ansible all -m shell -a “ip a|grep lo”
    1. file模块
  • 设置文件属性(创建文件)
  • 常用参数:
  • path目标路径
  • state directory为目录,link为软件链接
  • group 目录属组
  • owner 属主等,其他参数通过ansible-doc -s file 获取
  • 创建目录
  • [root@localhost ~]# ansible all -m file -a “path=/tmp/xld state=directory”
  • 创建软件链接
  • [root@localhost ~]# ansible all -m file -a “src=/etc/fstab dest=/tmp/fstab.link state=link”
    1. yum模块
  • 故名思义就是yum安装软件包的模块;
  • 常用参数说明:
  • enablerepo,disablerepo表示启用与禁用某repo库
  • name 安装包名
  • state (present’ orinstalled’, latest’)表示安装, (absent’ or `removed’) 表示删除
  • 示例:通过安装epel扩展源并安装nginx
  • [root@localhost ~]# ansible all -m yum -a “name=epel-release state=installed”
  • [root@localhost ~]# ansible all -m yum -a “name=nginx state=installed”
  • [root@localhost ~]# ansible all -a “systemctl start nginx”
  • [root@localhost ~]# ansible all -a “systemctl status nginx”
    1. service模块
  • 服务管理模块
  • 常用参数:
  • name:服务名
  • state:服务状态
  • enabled: 是否开机启动 true|false
  • [root@localhost ~]# ansible all -m service -a “name=nginx state=stopped enabled=true”
  • [root@localhost ~]# ansible all -m service -a “name=nginx state=started enabled=true”
    1. script模块
  • 把本地的脚本传到远端执行;前提是到远端可以执行
  • [root@localhost ~]# ansible all -m script -a “/root/test.sh”
    1. user模块
  • 可以快速在被管控主机上批量添加用户
  • state=present : 创建用户
  • state=absent : 删除用户
  • remove=true : 删除用户家目录
  • home= :来指定用户家目录路径;
  • system=true :创建系统用户
  • uid= : 来指定用户uid
  • shell= :指定用户的默认shell
  • 示例:ansible all -m user -a ‘name=ly state=present’
    1. cron模块
  • 为被管控主机在crontab -e列表中添加计划任务
  • name= :表示工作名称
  • job= :表示具体运行什么命令
  • hour=* : 每小时
  • day=* : 每天
  • month=3 : 3月
  • weekday=3 : 周三
  • 示例:ansible all -m cron -a “minute=’*/5’ job=’/usr/sbin/ntpdate 10.10.64.180 &> /dev/null’ name=’sync time’ state=’present’”
  • 为所有被管控主机添加一条计划任务,每5分钟向172.16.0.1同步一次系统时间