一丶Ansible Modules
ansible的命令格式
ansible 目标主机 [-f N] [-m module_name] [-a args]
- -f N:每次向N个主机发送指令
- -m 模块名:指定使用的模块名称,默认是command
- -a 参数: 指明模块专用参数;args一般为key=value格式
1.command模块
作用
• 默认模块,可以省略
• 用于在远程主机执行命令,
• 缺点就是在远程主机执行命令的时候,不能使用变量和参数
格式
• ansible host_list [-m command] -a 命令
[root@localhost ~]# ansible webserver -m command -a "date"
192.168.253.177 | CHANGED | rc=0 >>
2020年 06月 27日 星期六 20:26:24 CST
192.168.253.178 | CHANGED | rc=0 >>
2020年 06月 27日 星期六 20:26:25 CST
2、shell模块
作用:
• 和command类似,区别是这个模块有变量
区别:
• command只能执行简单命令
• shell模块可以执行带参数和变量的命令
格式:
-m shell -a “命令”
[root@localhost ~]# ansible all -m shell -a "echo 123 | passwd --stdin hhh"
192.168.253.178 | CHANGED | rc=0 >>
更改用户 hhh 的密码 。
passwd:所有的身份验证令牌已经成功更新。
192.168.253.177 | CHANGED | rc=0 >>
更改用户 hhh 的密码 。
passwd:所有的身份验证令牌已经成功更新。
3.user模块
作用
• 用来实现用户管理的
选项
• groups :指定用户的属组
• password :指定用户的密码
• name :指定用户名
• createhome :是否创建家目录 yes|no
• system :是否为系统用户
• remove :当 state=absent 时, remove=yes 则表示连同家目录一起删除
• state :是创建还是删除
[root@localhost ~]# ansible all -m user -a "name=tom password=123" #在所有被管理节点创建tom用户,并设置密码为123
[root@localhost ~]# ansible all -m user -a 'name="tom" state="absent"' #在所有被管理节点删除tom用户
4.copy模块
作用
• 实现文件复制的模块
选项
• src 本地对象文件或者文件夹,可以是绝对路径,也可以是相对路径。
• dest 被复制到远程主机的本地对象文件或者文件夹
• mode 设置复制后文件的权限 ,比如 644
• backup 设置是否先将源文件备份 . 设定值: yes/no 缺省为 yes
• force 是否强制覆盖 . 设定值: yes/no 缺省为 no
• owner 指定复制后的文件的属主
• content 可替换 src ,也就是直接用这个内容生成文件内容
ansible all -m copy -a "src=a.txt dest=/ mode=700" #将a.txt分别复制到被管理节点的/下,将权限改为700
5.file模块
作用:
• file 模块它包含了文件、文件夹、超级链接类的创立、拷贝、移动、删除操作。
选项
•
• force 强制执行
• mode 等同于 chmod
• path 目标路径,也可以用 dest,name 代替
• src 待拷贝文件 / 文件夹的原始位置。
• state 代表拷贝后是文件类型; link 代表最终是个软链接; directory 代表文件夹; hard 代表硬链接; touch 代表生成一个空文件; absent 代表删除
[root@localhost ~]# ansible all -m file -a "name=/tmp/abc.txt state=touch" #在每个被管理主机的tmp下创建空文件abc.txt
[root@localhost ~]# ansible all -m file -a "src=/tmp/abc.txt path=/tmp/soft.txt state=link" #在每个被管理主机的tmp下创建空文件abc.txt,创建软链接soft.txt
6.ping模块
作用:
• 这是个测试模块,测试主机是否都正常连接
[root@localhost ~]# ansible webserver -m ping #检测被管理主机是否在线
7.reboot模块
作用:
•
[root@localhost ~]# ansible all -m reboot #重启所有被管理节点
8.yum模块
作用
• 安装程序包的模块
选项
• name= 要安装的软件
• state= present , latest 表示安装, absent 表示卸载
[root@localhost ~]# ansible all -m yum -a "name=zsh state=present" #在所有被管理节点安装zsh
9.service模块
作用:
• 这模块很重要,是用来管理服务的
选项
• enabled 表示是否设置开机自动启动
• state 有多个子选项 stared/ stoped /restarted/reloaded , service 最终操作后的状态。
• enabled 和 state 至少要有一个被定义
• name 表示要控制的服务的名称
• runlevel 设置在哪些级别下自动启动
[root@localhost ~]# ansible all -m service -a "name=httpd state=started enabled=on" #启动所有被管理主机上的httpd服务,并设置为开机自动启动
10.systemd模块
作用:
• centos7管理服的方法和service类似
选项
•
• state:设置服务状态
stared/stoped/restarted/reloaded
• enable设置服务开机自动启动
• runlevel设置服务的运行级别
11.script模块
作用: 将一个脚本文件发送到远程主机,并自动执行
[root@localhost ~]# vim jb.sh
#!/bin/bash
yum install httpd -y
[root@localhost ~]# ansible all -m script -a "/root/jb.sh"
12.unarchive模块
作用:将压缩包解压到指定的位置下
选项
src:指定本地的压缩吧
dest:指定将压缩包解压到目标主机的哪个路径
[root@localhost ~]# ansible all -m unarchive -a "src=/root/nginx-1.16.1.tar.gz dest=/home/" #将nginx的源码包解压到被管理节点的home下
13.cron模块
作用:
• 在指定时间运行指定的命令
选项:
• state :有两个选项, present 表示要安装某个任务; absent 表示移除某个任务
•
[root@localhost ~]# ansible all -m cron -a "name=mycron state=present job='echo 123>>/a.txt' minute=*/2" #每隔2分钟在/a.txt中写入一行数据