Ansible_Modules - QLGQ/learning-python GitHub Wiki

Introduction

Ansible提供了非常丰富的功能模块,包括Cloud(云计算)、Commands(命令行)、Database(数据库)、Files(文件管理)、Internal(内置功能)、Inventory(资产管理)、Messaging(消息队列)、Monitoring(监控管理)、Net Infrastructure(网络基础服务)、Network(网络管理)、Notification(通知管理)、Packaging(包管理)、Source Control(版本控制)、System(系统服务)、Utilities(公共服务)、Web Infrastructure(Web基础服务),等等。模块默认存储目录为/usr/share/ansible/,存储结构以模块分类名作为目录名,模块文件按分类存放在不同类别目录中。

命令行调用模块格式ansible <pattern_goes_here(操作目标)> -m <module_name(模块名)> -a <module_args(模块参数)>,其中默认的模块名为command,即“-m command”可省略。获取远程webservers组主机的uptime信息格式为:ansible webservers (-m command) -a "uptime"。获得模块的帮助说明信息格式:ansible-doc <模块名>,得到ping模块的帮助说明信息格式为:ansible-doc ping。

Modules

远程命令模块

  1. 功能
    模块包括command、script、shell,都可以实现远程shell命令运行。command作为ansible的默认模块,可以运行远程权限范围所有的shell命令;script功能是在远程主机执行主控端存储的shell脚本文件,相当于scp+shell组合;shell功能是执行远程主机的shell脚本文件。
  2. 例子
    • ansible webservers -m command -a "free -m"
    • ansible webservers -m script -a "/home/test.sh 12 34"
    • ansible webservers -m shell -a "/home/test.sh"

script模块可以实现到对象节点上执行本机脚本,有点类似copy+shell+删除copy的脚本的这样一个综合功能。

copy模块

  1. 功能
    实现主控端向目标主机拷贝文件,类似于scp功能。
  2. 例子
    以下示例实现拷贝/home/test.sh文件至webservers组目标主机/tmp/目录下,并更新文件属主及权限(可以单独使用file模块实现权限的修改,格式为:path=/etc/foo.conf owner=foo group=foo mode=0644)。
ansible webservers -m copy -a "src=/home/test.sh dest=/tmp/ owner=root group=root mode=0755"

stat模块

  1. 功能
    获取远程文件状态信息,包括atime、ctime、mtime、md5、uid、gid等信息。
  2. 例子
    ansible webservers -m stat -a "path=/etc/sysctl.conf"

get_url模块

  1. 功能
    实现在远程主机下载指定URL到本地,支持sha256sum文件校验。
  2. 例子
    ansible webservers -m get_url -a "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes"

yum模块

  1. 功能
    Linux平台软件包管理操作,常见有yum、apt管理方式。
  2. 例子
    • ansible webservers -m apt -a "pkg=curl state=latest"
    • ansible webservers -m yum -a "name=curl state=latest"

cron模块

  1. 功能
    远程主机crontab配置。
  2. 例子
    ansible webservers -m cron -a "name='check dirs' hour='5,2' job='ls -alh > /dev/null'"
    效果如下:
#Ansible: check dirs
* 5,2 * * * ls -alh > /dev/nullsalt '*' file.chown /etc/passwd root root

mount模块

  1. 功能
    远程主机分区挂载。
  2. 例子
    ansible webservers -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext3 opts=ro state=present"

service模块

  1. 功能
    远程主机系统服务管理
  2. 例子
    • ansible webservers -m service -a "name=nginx state=stopped"
    • ansible webservers -m service -a "name=nginx state=restarted"
    • ansible webservers -m service -a "name=nginx state=reloaded"

sysctl包管理模块

  1. 功能
    远程Linux主机sysctl配置。
  2. 例子
    sysctl: name=kernel.panic value=3 sysctl_file=/etc/sysctl.conf checks=before reload=yessalt '*' pkg.upgrade

user服务模块

  1. 功能
    远程主机系统用户管理
  2. 例子
    • 添加用户johnd:ansible webservers -m user -a "name=johnd comment='John Doe'"
    • 删除用户johnd:ansible webservers -m user -a "name=johnd state=absent remove=yes"
⚠️ **GitHub.com Fallback** ⚠️