Ansible简介
Ansible是一种自动化运维工具,基于Python开发,模块化工作,实现了批量系统配置、批量程序部署、批量运行命令等功能,其提供了框架,本身并无批量部署的能力,真正实现功能的是其运行的模块,不需要在远程主机上安装client/agents,因为基于ssh通讯。
批量管理工具历史
08年之前:SSH+脚本 08~10年:CFEngine 10~13年:Puppet 14~17年:saltstack 17~现在:ansible
Ansible优点与作用
优点:简单、方便、容易学习、功能强大。
作用:用来批量远程管理服务器,这里的远程主机是任何可以通过SSH登陆的主机。
涉及管理操作:复制文件、安装服务、服务启动停止、配置管理等等。
Ansible特点:基于Python,由Paramiko和PyYAML两个关键模块构建。
无服务端,无进程,
Ansible架构简介
1.连接插件connectior plugins用于连接主机,用来连接被管理端
2.核心模块 core modules连接主机实现操作,它依赖于具体的模块来做具体的事情
3.自定义模块 custom modules,根据自己的需求编写具体的模块
4.插件 plugins,完成模块功能的补充
5.剧本 playbooks, ansible的配置文件,将多个任务定义在剧本中,由 ansible自动执行
6.主机清单 inventor,定义 ansible需要操作主机的范围
安装Ansible
服务器端(m01):
yum install ansible -y
yum install libselinux-python -y
客户端(web01、web02 这个一般系统都自带):
yum install libselinux-python -y
ansible程序目录结构:
- 配置文件:
/etc/ansible/
- 执行文件目录:
/usr/bin/
- lib依赖库:
/usr/lib/python2.7/site-packages/ansible/
- help文件:
/usr/lib/python2.7/site-packages/ansible
配置文件
服务器端:
主机列表配置文件:/etc/ansible/hosts
ansible配置文件:/etc/ansible/ansible.cfg
测试(web01、web02已经做好秘钥认证,backup使用用户名密码)
注:第一次使用该命令时会报错,因为此时m01服务器秘钥文件/root/.ssh/known_hosts中还没有backup的信息,需要先用ssh远程登录以下:ssh 172.16.1.41
总结:使用秘钥认证连接,需保证已经向远端服务器发送公钥文件并保存在~/.ssh/authorized_keys中
使用密码连接,需保证本地~/.ssh/known_hosts文件中有对方对应的秘钥(可通过ssh连接自动生成)
取消ssh第一次连接时需要输入yes/no提示的2种方法:
1.更改/etc/ansible/ansible.cfg中的第71行,取消注释,host_key_checking = False
2.更改/etc/ansible/ansible.cfg中的第375行