一、Ansible介绍
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
二、ansible工作机制
架构组成:ansible核心、ansible模块、ansible-playbook(剧本)、host inventry(主机清单)等
工作原理:单个模块,单个命令执行方式;剧本执行方式
三、ansible的参数:
参数 | 参数说明 |
-m | 指定使用的module名称,默认使用command模块 |
-a | 指定使用的命令,如ansible all -m shell -a "date" |
-v | --verbose 详细信息 |
all | 针对hosts 定义的所有主机执行 |
-U | --sud-user=SUDO_User sudo到哪个用户,默认为 root |
-k | --ask-pass 登录密码,提示输入SSH密码而不是假设基于密钥的验证 |
-s | --sudo sudo运行 |
-S | --su 使用su命令 |
四、ansible的常用模块
模块名称 | 模块说明 |
ping | 测试主机是否是通的,用法很简单,不涉及参数 |
command | 执行命令模块,ansible命令执行默认模块 |
shell | 执行shell命令模块 |
copy | 复制文件到远程主机 |
script | 脚本模块 |
file | file模块主要用于远程主机上的文件操作 |
service | 用于管理服务 |
cron | 用于管理计划任务 |
synchronize | 使用rsync同步文件 |
yum | 使用yum包管理器来管理软件包 |
mount | 配置挂载点 |
get_url | 该模块主要用于从http、ftp、https服务器上下载文件(类似于wget) |
user | user模块是请求的是useradd, userdel, usermod三个指令 |
group | goup模块请求的是groupadd, groupdel, groupmod 三个指令 |
五、ansible的语法格式
ansible all -m shell -a "date"
ansible | all | -m | shell | -a | date |
ansible命令 | 主机清单 | ansible参数 | ansible模块 | 指定使用的命令 | date命令 |