ansible常用模块好些个介绍

简介: ansible常用模块好些个介绍

ansible命令行方式语法※

ansible <host-pattern> [-m module_name] [-a args]
ansible 主机清单 -m 模块名 -a 参数

选项:

  • –version:显示版本
  • -m module:指定模块,默认为command,可以省略不写
  • -v:详细过程;-vv:更详细
  • –list-hosts:显示主机列表
  • -k:提示输入ssh连接密码,默认key验证
  • -K:提示输入sudo时口令
  • -C:检查语法,并不执行过程
  • -T,–timeout=TIMEOUT:执行命令超时时间,默认10s
  • -u,–user=REMOTE_USER:执行远程执行的用户
  • -b:切换用户执行

※执行结果颜色表示※

  • 绿色:执行成功且不做出任何改变
  • 红色:执行失败
  • 黄色:执行成功且对目标主机做出变更
  • 蓝色:显示详细过程
  • 粉色:警告、建议,可以用但不建议

※ansible显示模块帮助命令※

ansible-doc [options] [module]

选项:

  • -a:显示所有模块文档
  • -l;–list:列出可用模块
  • -s;–snippet:显示指定模块的playbook片段

示例:

ansible-doc -l
ansible-doc yum
ansible-doc -s yum
ansible-doc -l |wc -l
3387
# 目前ansible可用模块多达3387个

※常用模块介绍※

※模块:ping※

  • 测试主机连通性,返回值为pong代表成功
  • 示例:测试主机连通性
ansible all -m ping

※模块:command※

  • 命令模块,ansible默认模块,建议处理简单命令
  • 示例:查看被控主机磁盘利用率
ansible all -m command -a ’df -h‘

※模块:shell※

  • 这是个万能模块
  • 命令模块,与command类似,支持复杂命令特殊符号等
  • 示例:

※模块:scripts※

  • 脚本模块,在远程主机执行脚本
  • 示例:在远程主机上执行脚本
[root@localhost data]# vim host.sh
[root@localhost data]# cat host.sh 
#!/bin/bash
hostname
[root@localhost data]# chmod +x host.sh 
[root@localhost data]# ansible all -m script -a '/data/host.sh'
192.168.10.4 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.10.4 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 192.168.10.4 closed."
    ], 
    "stdout": "localhost.localdomain\r\n", 
    "stdout_lines": [
        "localhost.localdomain"
    ]
}
192.168.10.3 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.10.3 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 192.168.10.3 closed."
    ], 
    "stdout": "localhost.localdomain\r\n", 
    "stdout_lines": [
        "localhost.localdomain"
    ]
}

※模块:copy※

  • 将本地文件复制到远程主机
  • 常用选项:
src:源文件地址
dest:目标文件地址
owner:文件所有者
group:文件所属组
mode:文件权限
backup:如果目标主机已有此文件,是否对目标主机原文件进行备份
content:生成内容至目标文件
  • 示例:将本地/etc/hosts文件复制到远程主机/date目录下
ansible all -m copy -a 'src=/etc/hosts dest=/date'

※模块:fetch※

  • 将客户端文件复制到服务端(只能是文件,不能是目录)
  • 常用选项
src:源文件地址(远程主机)
dest:目标文件地址(本地),会生成一个源文件主机的目录
  • 示例:将远程主机的messages日志复制到本地/data目录
ansible 192.168.10.3 -m fetch -a 'src=/var/log/messages dest=/data'
 tree /data/
/data/
├── 192.168.10.3
│   └── var
│       └── log
│           └── messages
└── host.sh
3 directories, 2 files

※模块:file※

  • 设置文件属性,创建、删除文件或文件夹
  • 常用选项:
name:将要创建文件的名称
state:决定创建的属性,touch、directory、hard、link、absent(递归删除)
owner:属主
group:属组
mode:权限
  • 示例:为文件做软链接
ansible all -m file -a 'src=/etc/fstab dest=/data/fstab.link state=link'

※模块:hostname※

  • 修改主机名(注意:需要配合变量,不然批量主机名都是一样的)
  • 示例:修改单一节点主机名
ansible 192.168.10.3 -m hostname -a 'name=node01'

※模块:cron※

  • 计划任务模块
  • 常用选项
minute:分
hour:时
day:日
month:月
weekday:周
job:任务
name:任务名
disabled:禁用任用
  • 示例:每五分钟同步一次时间
 ansible all -m cron -a 'minute=5 "job=/usr/sbin/ntpdate ntp.aliyun.com" name=ntpdate'

※模块:yum

  • 包管理模块,可安装多个包,本地包
  • 常用选项
name:包名
list:列出
state:状态;present、installed、latest;absent、removed
  • 示例:安装httpd服务;多个包用“,”隔开
ansible all -m yum -a ‘name=httpd state=present’

※模块:yum_repository※

  • 仓库管理模块,为远程主机设置yum源
  • 常用选项
name:仓库名,仓库id;例:name=[centos]
file:配置文件名,即*.repo;不设置默认以仓库id为名
enabled:是否使用源,默认yes;即:enabled=1
gpgcheck:是否开始rpm包验证,默认no;即:gpgcheck=0
state:值为absent时删除源
baseurl:设置仓库的baseurl
  • 示例:设置阿里源为yum源
ansible all -m yum_repository -a 'name=aliyuan file=aliyuan baseurl=http://mirrors.aliyun.com/repo/Centos-7.repo'

※模块:service※

  • 服务管理模块
  • 常用选项
name:服务名
state:状态;started、stopped、restarted、reloaded
enabled:是否开机启动;yes、no
  • 示例:启动httpd服务,并设置开机启动
ansible all -m service -a ‘name=httpd state=started enabled=yes’

※模块:user※

  • 用户管理模块
  • 常用选项:
name:用户名
shell:shell类型
uid:用户uid
gid:用户gid
system:是否为系统用户;yes、no
group:用户组
groups:附加组
home:家目录
state:状态;absent,删除用户
remove:是否删除家目录;yes、no
  • 示例:创建一个系统用户nginx
ansible all -m user -a ‘name=nginx shell=/sbin/nologin system=yes’

※模块:selinux※

  • selinux管理模块
  • 常用选项
configfile:配置文件,默认为/etc/selinux/config
state:状态;disabled、enforcing、permissive
  • 示例:禁用selinux
ansible all -m selinux -a ‘configfile=/etc/selinux/config state=disabled’

※模块:mount※

  • 挂载模块
  • 常用选项
src:要挂载的“设备”
path:挂载点的路径
state:状态;mounted:挂载,没有挂载点将创建;unmounted:卸载;absent:从fstab文件中删除;remounted:重新挂载
fstype:挂载类型;nfs
  • 示例:将192.168.10.4:/data挂载到远程主机/data下
ansible 192.168.10.3 -m mount -a ‘src=192.168.10.4:/data path=/data fstype=nfs state=mounted’

※模块:unarchive星

  • 解压缩
  • 常用选项
src:tar包源路径,可以是ansible服务端,也可以时远程主机路径,远程主机copy=no
copy:yes为在ansible服务端找包,no为在远程主机找
dest:解压绝对路径
mode:权限
owner:属主
group:属组
  • 示例:解压本地11.tar.gz至远程主机/data目录下
ansible all -m unarchive -a ‘src=/data/11.tar.gz dest=/data copy=yes’


目录
相关文章
|
运维 Shell Linux
Ansible自动化运维工具之常用模块使用实战(5)
Ansible自动化运维工具之常用模块使用实战(5)
387 0
|
网络协议 网络安全
Ansible模块介绍——防火墙模块
Ansible模块介绍——防火墙模块
266 0
|
3月前
|
缓存 Shell Linux
[ansible]常用内置模块
[ansible]常用内置模块
|
4月前
|
Shell 应用服务中间件 Linux
Ansible的常用模块
Ansible的常用模块
98 6
|
4月前
|
Shell 数据安全/隐私保护
Ansible Ad-hoc,命令执行模块
Ansible Ad-hoc,命令执行模块
44 1
|
4月前
|
运维 Linux 应用服务中间件
Linux之自动化运维工具ansible、ansible模块(2)
Linux之自动化运维工具ansible、ansible模块(2)
|
4月前
|
运维 Linux Shell
Linux之自动化运维工具ansible、ansible模块(1)
Linux之自动化运维工具ansible、ansible模块(1)
|
6月前
|
算法 安全 Linux
Ansible 中的copy 复制模块应用详解
Ansible 中的copy 复制模块应用详解
445 1
|
运维 Linux
Ansible自动化运维工具之常用模块使用实战(6)
Ansible自动化运维工具之常用模块使用实战(6)
188 0
|
网络安全 数据安全/隐私保护
ansible的get_url模块
ansible的get_url模块
136 1