什么是Ansible:
Ansible是一种IT自动化工具。它可以帮助我们批量配置系统,部署软件以及协调更高级的IT任务,例如连续部署或零停机滚动更新。Ansible的主要目标是让工作变得简单和易操作,它同时也非常关注安全性和可靠性,传输过程是基于openssh来实现的,保证了传输的数据的安全性!大大降低安全风险!
特点:
- Ansible采用无代理方式(agentless)管理机器,因为Ansible的通信是通过openssh来实现的,所以你无需考虑如何远程升级受管机器的代理程序!只要可以保证openssh可以正常通信即可!因为现在几乎所有的Linux平台都自带了openssh,Ansible在部署阶段无需考虑在远程机器上安装客户端软件!这样极大的减少了前期部署的工作!
- Ansible有丰富的模块可以让你直接使用,当然在Ansible的社区也有很多优秀的开发者在贡献新的模块,所以你总会找到适合自己的模块,当然你也可以自己开发模块!
- Ansible是使用python开发,所以关于Ansible的二次开发和模块开发成本相对较低
工作流程:
Ansible的安装
在Centos6版本的系统上ansible安装包还未被加入到yum的base源中,需要安装:
yum -y install epel-release
yum -y install ansible
centos 7 直接安装即可
yum -y install ansible
Ansible安装完毕后可以直接使用,无需启动!
新版本安装包可以去官方获取:
https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/
1. ssh无密码连接配置
生成密钥对
ssh-keygen -t rsau
拷贝公钥到托管节点
ssh-copy-id 托管节点用户@ip
首次拷贝需要再输入一次密码才可以将公钥复制过去,输入完毕后以后再连接就不需要输入账号密码了!
编辑主机清单文件
vi /etc/ansible/hosts
例如如下格式添加:
192.0.2.50
aserver.example.org
bserver.example.org
当然我们也可以分组:
[webservers]
192.0.2.50aserver.example.org
bserver.example.org
中括号中的webservers就是定义的组名,
下面3台服务器是这个组的成员主机
我们也可以按如下格式添加主机
[webservers]
192.0.2.[50:100]
web[a:f]server.example.org
例如:
ansible执行一条任务的语法格式:
ansible 主机/主机组 -m 模块 -a ‘模块的参数‘
当然我们也可以指定组或者主机操作
ansible webservers -m ping
我们再来在托管节点执行一条命令,查看托管节点的ip信息
ansible all -a 'ifconfig'