一.Ansible的概念
当下有许多的运维自动化工具(配置管理 ),例如:Chef、Ansible、SaltStack、Puppet、Fabric 等。
Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。
Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。
Ansible 特点:
部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
默认使用 SSH(Secure Shell)协议对设备进行管理。
主从集中化管理。
配置简单、功能强大、扩展性强。
支持 API 及自定义模块,可通过 Python 轻松扩展。
通过 Playbooks 来定制强大的配置、状态管理。
对云计算平台、大数据都有很好的支持。
提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 —- AWX 平台。
Ansible 与 SaltStack的区别:
-
最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。
-
相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及
API,对云计算平台、大数据都有很好的支持。
二.Ansible的配置
实验环境:
主机 | 服务 |
---|---|
server1 | ansible的服务端 |
server2 | ansible的客户端 |
server3 | ansible的客户端 |
补充知识:
ansible的命令参数
-m:要执行的模块,默认为command -a:指定模块的参数 -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置 -b,--become:变成那个用户身份,不提示密码 -k:提示输入ssh登录密码,当使用密码验证的时候用 -s:sudo运行 -U:sudo到哪个用户,默认为root -K:提示输入sudo密码,当不是NOPASSWD模式时使用 -C:只是测试一下会改变什么内容,不会真正去执行 -c:连接类型(default=smart) -f:fork多少进程并发处理,默认为5个 -i:指定hosts文件路径,默认default=/etc/ansible/hosts -I:指定pattern,对已匹配的主机中再过滤一次 -list-host:只打印有哪些主机会执行这个命令,不会实际执行 -M:要执行的模块路径,默认为/usr/share/ansible -o:压缩输出,摘要输出 --private-key:私钥路径 -T:ssh连接超时时间,默认是10秒 -t:日志输出到该目录,日志文件名以主机命名 -v:显示详细日志
ansible server1 -m setup #产看指定主机server1上的facts变量信息 ansible * -msetup #查看指定的所有主机上的facts变量信息
ansible-doc -l #列出有哪些可用的模块,按q退出 ansible-doc -l | wc -l # 列出有多少个可用的模块 ansible-doc -l | grep user # 列出与user有关的模块 ansible-doc -user #查看user模块的帮助文档,按q退出。也可以在最后一行输入/passwd,来过滤与passwd有关的内容
前提:
为了实验环境纯净,我们创建几个新的虚拟机(我是将原本的虚拟机覆盖):
实验过程如下所示:
第一步:部署ansible的服务端
server1
下载ansible的相关rpm包及其依赖包,并进行安装
[root@