ansible经常使用模块使用方法

ansible 默认提供了非常多模块来供我们使用。

在 Linux 中,我们能够通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,通过 ansible-doc  -s  模块名  又能够查看该模块有哪些參数能够使用。

       以下介绍比較经常使用的几个模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
copy模块
file模块
cron模块
group模块
user模块
yum模块
service模块
script模块
ping模块
command模块
raw模块
get_url模块
synchronize模块




copy模块:

    目的:把主控端/root文件夹下的a.sh文件复制到到指定节点上

    命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/'

    运行效果:

wKioL1TB_EWytdwHAALpQ_NZj_Y676.jpg




file模块:

    目的:更改指定节点上/tmp/t.sh的权限为755。属主和属组为root

    命令:ansible all -m file -a "dest=/tmp/t.sh mode=755 owner=root group=root"

    运行效果:

spacer.gifwKiom1TB-23S6GIaAAFkf3LCV0I648.jpg


cron模块:

    目的:在指定节点上定义一个计划任务,每隔3分钟到主控端更新一次时间

    命令:ansible all -m cron -a 'name="custom job" minute=*/3 hour=* day=* month=* weekday=* job="/usr/sbin/ntpdate 172.16.254.139"'

    运行效果:

wKioL1TB_EXAZ9npAAKlZcJk-2A313.jpg


group模块:

    目的:在全部节点上创建一个组名为nolinux,gid为2014的组

    命令:ansible all -m group -a 'gid=2014 name=nolinux'

    运行效果:

spacer.gifwKiom1TB-22w2EHsAAEyGxpaZ1Q696.jpg


user模块:

    目的:在指定节点上创建一个username为nolinux,组为nolinux的用户

    命令:ansible 10.1.1.113 -m user -a 'name=nolinux groups=nolinux state=present'

    运行命令:

wKioL1TB_EajzhgWAAKh8udIwfU616.jpg

补充:删除用户演示样例

spacer.gifwKiom1TB-27BpMDGAAJUaZVZKlQ882.jpg


yum模块:

    目的:在指定节点上安装 lrzsz 服务

    命令:ansible all -m yum -a "state=present name=httpd"

    运行效果:

wKioL1TB_EaTCw3xAAo06fOJT9o358.jpg


service模块:

    目的:启动指定节点上的 puppet 服务,并让其开机自启动

    命令:ansible 10.1.1.113 -m service -a 'name=puppet state=restarted enabled=yes'

    运行效果:

wKiom1TB-27BK1j6AAE7uhMosLQ824.jpgspacer.gif


script模块:

    目的:在指定节点上运行/root/a.sh脚本(该脚本是在ansible控制节点上的)

    命令:ansible 10.1.1.113 -m script -a '/root/a.sh'

    运行效果:

wKioL1TB_EehJLUgAAFvF7DUzTA542.jpgspacer.gif


ping模块:

    目的:检查指定节点机器是否还能连通

    命令:ansible 10.1.1.113 -m ping

    运行效果:

wKioL1TB_EfDOcX3AAD56pSs8vw739.jpg


command模块:

    目的:在指定节点上执行hostname命令

    命令:ansible 10.1.1.113 -m command -a 'hostname'

    运行效果:

wKiom1TB-2_TVLsoAAH9514heiw532.jpgspacer.gif


raw模块:

    目的:在10.1.1.113节点上执行hostname命令

    命令:ansible 10.1.1.113 -m raw-a 'hostname|tee'

    运行效果:

wKioL1TB_EfiXSlvAAD6X2f-nZ4937.jpg


get_url模块:

    目的:将http://10.1.1.116/favicon.ico文件下载到指定节点的/tmp文件夹下

    命令:ansible 10.1.1.113 -m get_url -a 'url=http://10.1.1.116/favicon.ico dest=/tmp'

    运行效果:

wKiom1TB_ZvyFnXpAAQItOAiI4M141.jpg


synchronize模块:

    目的:将主控方/root/a文件夹推送到指定节点的/tmp文件夹下

    命令:ansible 10.1.1.113 -m synchronize -a 'src=/root/a dest=/tmp/ compress=yes'

    运行效果:

delete=yes   使两边的内容一样(即以推送方为主)

compress=yes  开启压缩,默觉得开启

--exclude=.git  忽略同步.git结尾的文件

wKioL1TB_EjxkmYpAAYA5Ai3IPg889.jpg

因为模块。默认都是推送push。因此。假设你在使用拉取pull功能的时候。能够參考例如以下来实现

mode=pull   更改推送模式为拉取模式

    目的:将10.1.1.113节点的/tmp/a文件夹拉取到主控节点的/root文件夹下

    命令:ansible 10.1.1.113 -m synchronize -a 'mode=pull src=/tmp/a dest=/root/'

    运行效果:

wKiom1TB-3CwhN2dAASKTtTpOxI903.jpg

       因为模块默认启用了archive參数,该參数默认开启了recursive, links, perms, times, owner。group和-D參数。假设你将该參数设置为no,那么你将停止非常多參数。比方会导致例如以下目的递归失败。导致无法拉取

wKiom1TB-3CwM88JAAKGdhDvVqI952.jpg

其他相关的參数解释:

1
2
3
dest_port=22    # 指定目的主机的ssh端口。ansible配置文件里的 ansible_ssh_port 变量优先级高于该 dest_port 变量
rsync_path      # 指定 rsync 命令来在远程server上执行。这个參考rsync命令的--rsync-path參数,--rsync-path=PATH     # 指定远程server上的rsync命令所在路径信息
rsync_timeout   # 指定 rsync 操作的 IP 超时时间,和rsync命令的 --timeout 參数效果一样


OK!

       以上暂且列举这些日常运维中常常会用到的一些模块,很多其它的模块信息后期会继续完好,大家也能够去官网查看很多其它的信息。

       官网地址:http://docs.ansible.com/synchronize_module.html

posted @ 2016-04-14 16:49  zfyouxi  阅读(367)  评论(0编辑  收藏  举报