Ansible提供了两种管理工具:Ad-Hoc和playbook。
Ad-Hoc类似于shell命令,playbook类似于shell脚本,是对于Ad-Hoc命令的执行。
Ansible自带了非常多的模块,使用Ansible-doc -l可以显示Ansible所有的自带模块。
在Ansible1.9中,自带模块只有200多个,而最新的版本中已经有了2000多个,不得不说Ansible这个开源工具发展之迅速。
下面展示部分:
如果你要查看某个模块的帮助信息:ansible-doc ***
需要注意的是:使用Ad-Hoc命令,有些插件和模块的功能无法使用。
1.执行命令
我们最常使用的模块是shell模块
需要说明的是,Ansible的命令都是并发执行的:
forks = 5
默认是启动5个进程来执行任务。当配置的机器比较多的时候,比如1000台主机,5个肯定不够用,
但是线程本身就非常的耗费资源,当机器比较多的时候也许Ansible就有另外的用法。
使用多线程会直接影响Ansible的执行速度,我们可以通过下面示例看出:
#!/usr/bin/python # -*- coding: UTF-8 -*- import time import os def run(num): start_time = time.time() ret = os.system('ansible servers -m shell -a "uname -r" -o -f %d'%num) run_time = time.time() - start_time print("run_time:",run_time) if __name__ == "__main__": run(2)
现在有两台机器,当开启一个进程时耗时2.2秒
当开启两个进程的时候,耗时1.5秒
虽然执行效率并没有随着进程数量呈线性增长,但是确实有提升。
既然可以并发执行,Ansible也支持异步执行:-P选项
使用异步执行的之后,不会马上返回结果,会返回job_id,我们可以根据job_id来查询结果。
当-P大于0的时候,Ansible会根据job_id自动轮询获取结果。
2.复制文件
查看原始目录:
使用ansible复制:
src:本地路径
dest:目标路径
结果查看:
copy模块当然还有许多其它的功能,比如group指定属组,mode指定权限等。
更多关于copy模块的信息可以查看官网:https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module
3.包和管理服务
(1)使用ansible安装apache
安装apache:
启动apache:
验证服务运行情况:
在使用yum模块的时候,发现ansible会默认使用服务器的“python”命令,如果此时python是python3就会报错。
(2)使用mysql安装myriadb
安装:
ansible centos02 -m yum -a "name=mariadb-server state=lates
启动:
ansible centos02 -m systemd -a "name=mariadb state=started"
查看:
ansible centos02 -m shell -a "netstat -nltp|grep 3306"