目录
Ansible是一种自动化工具,可以帮助你自动化配置、部署和管理系统可以大大简化管理工作,提高效率。相比其他自动化工具,Ansible具有简单明了的语法和易于上手的特点。它使用YAML格式进行配置,不需要编写复杂的脚本或程序代码。它是基于SSH协议进行通信的,可以在各种操作系统上运行,包括Linux、Windows和UNIX等。Ansible使用剧本来描述任务和配置,剧本具有可读性强的结构,可以轻松理解和维护。同时,Ansible还支持任务的并行执行,可以提高执行效率。Ansible拥有庞大的开源社区和活跃的贡献者,可以从中获取到丰富的资源和经验分享。
Ansible是一个基于Python开发的配置管理和应用部署工具,能批量配置、部署、管理上千台主机。它是基于模块工作的,只是提供了一种运行框架,它本身没有完成任务的能力,真正执行操作的是Ansible的模块。
1、部署简单,只需在主控端部署Ansible环境, 被控端无需做任何操作
2、默认使用SSH协议设备进行管理;
3、主从集中化管理
4、配置简单、功能强大、扩张性强;
5、支持API及自定义模块,可以通过Pyhton轻松扩展
6、通过playbooks 来定制强大的配置、状态管理
7、对云计算平台、大数据都有很好的支持
?
通过Inventory文件定义目标主机,然后编写playbook,ansible通过ssh与目标主机建立连接,连接建立完成之后,解析并执行playbook文件,根据playbook的任务逐个执行,执行时调用模块和插件,执行完成时根据清单文件通过ssh将临时文件传给远程主机并返回结果,执行完成后自动删除。
管理端:? ?192.168.246.10? ? ? ? ansible ? ? ? ? ? ? ? ? ? ?
被管理端:192.168.246.11? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
被管理端:192.168.246.12 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
#管理端安装 ansible
yum install -y epel-release?? ??? ??? ?//先安装 epel 源
yum install -y ansible
#配置主机清单 ?
cd /etc/ansible?
vim hosts ? ? ??
[webservers]?? ??? ??? ?#配置组名
192.168.246.10?? ??? ??? ?#组里包含的被管理的主机IP地址或主机名(主机名需要先修改/etc/hosts文件)
[dbservers]
192.168.246.11
192.168.246.12
?
#配置密钥对验证
ssh-keygen -t rsa?? ??? ?#一路回车,使用免密登录
sshpass -p 'abc1234' ssh-copy-id root@192.168.246.11
sshpass -p 'abc1234' ssh-copy-id root@192.168.246.12?
?#免密测试
ssh 192.168.246.11
1.command 模块:在远程主机执行命令,不支持管道,重定向等shell的特性,例如ansible-doc -s command#-s 列出指定模块的描述信息和操作动作。
2.shell 模块:用于在远程主机上执行命令,例如ansible all -m shell -a "rm -rf /tmp/test"可以删除/tmp/test目录;
3.cron 模块:在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除,例如ansible-doc -s cron#按 q 退出。
4.user 模块:用户管理的模块,例如ansible-doc -s user。
5.group 模块:用户组管理的模块,例如ansible-doc -s group。
6.copy 模块:用于将本地文件复制到远程主机上,例如ansible all -m copy -a "src=/path/to/localfile dest=/path/to/remote/directory"可以将本地文件复制到远程主机。