ansible的常用模块
一、ansible Ad-Hoc命令集
1、ansible提供两种方式去完成任务,一是 Ad-Hoc 命令,一是写 ansible playbook。
2、Ad-Hoc更注重于解决一些简单或者平时工作中临时遇到的任务,相当于Linux系统命令行下的Shell命令,后者更适合于解决复杂或需固化下来的任务,相当于Linux系统的Shell Scripts。
3、Ad-Hoc 使用场景:
(1)关闭所有不必要的服务器
(2)临时更新Apache或Nginx的配置文件
4、ansible的并发特性
Ansible和Ansible-playbook默认会fork 5个线程并发执行命令,如果同时操作的主机数比较多的话,可以调整到一个更大的值,用-f
指定线程数。
ansible webserver -m ping -f 6
5、ansible提供了类似于man功能的help说明工具ansible-doc,ansible-doc用法:
显示所有可用模块 | ansible-doc -l |
列出指定模块 | ansible-doc 模块名称 |
简要列出指定模块 | ansible-doc -s 模块名称 |
ansible-doc -l | grep shell
ansible-doc -l | wc -l
ansible-doc ping
ansible-doc -s shell
二、ansible的命令参数
参数 | 功能 |
---|---|
-i |
指定hosts文件路径,默认在/etc/ansible/hosts |
-m |
指定使用的module名称,默认command模块 |
-a |
指定模块参数 |
-k(小写) |
提示输入ssh密码,并非基于ssh密钥认证 |
-K(大写) |
提示输入sudo密码 |
-b |
使用sudo执行命令 |
-become-user= |
指定sudo的用户 |
-f,-forks=NUM |
NUM默认是整数5,指定fork开启同步进程的个数 |
-u |
指定远程主机的执行用户 |
-v |
详细模式,如果执行成功,输出详细结果,-vv -vvv 更详细过程 |
-C |
预执行检测 |
-T |
执行命令的超时时间,默认10s |
--list |
显示主机列表,也可以用--list-hosts |
--version |
显示版本 |
ansible的基本颜色代表
绿色 | 执行成功但未对远程主机做任何改变 |
黄色 | 执行成功并对远程主机做改变 |
红色 | 执行失败 |
三、ansible的常用模块
- 以下实验的配置文件如下
1、command模块
在远程主机执行命令,此模块为默认模块
常用参数 | 功能 |
---|---|
chdir |
执行命令前先进入到指定目录 |
cmd |
运行命令指定 |
creates |
如果文件存在将不运行 |
removes |
如果文件存在将运行 |
ansible demo -m command -a "useradd lee"
ansible demo -m command -a "chdir=/mnt touch file1 file2"
ansible demo -m command -a "chdir=/mnt creates=/mnt/file1 rm -fr file1"
ansible demo -m command -a "chdir=/mnt removes=/mnt/file2 rm -fr file2"
file1未被删除,file2被删除
Linux中的很多通配符在command模块中不支持
2、shell模块、script模块
(1)shell模块
shell模块与command模块类似
常用参数 | 功能 |
---|---|
chdir |
执行命令前先进入到指定目录 |
cmd |
运行命令指定 |
creates |
如果文件存在将不运行 |
removes |
如果文件存在将运行 |
executable |
指定执行环境,默认为sh |
ansible demo -m shell -a "chdir=/mnt/ touch test{1..3}"
ansible demo -m shell -a "ps ax | grep $$"
ansible demo -m shell -a "executable=/bin/bash ps ax | grep $$"
shell模块支持通配符
echo $$
:输入当前会话的进程号
(2)script模块
在ansible主机中写好的脚本在受控主机中执行
vim test.sh
ansible demo -m script -a "test.sh"