ansible组件——Ad-hoc

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"

4.用户管理

原文地址:https://www.cnblogs.com/yangmingxianshen/p/12656369.html