由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下。部署自动化运维就成为了首先,自动化运维能够帮助工程师尽可能安全、高效的完成工作。自动化运维的工具一般分为两类:一类是需要使用代理工具,也就是基于专用的Agent程序来完成管理功能;另一类是不需要管理工具,可以直接基于SSH服务来完成管理功能。
简述Ansible
Ansible基于python开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能。默认通过SSH协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台主机并行管理,使得管理主机更加便捷。
Ansible具有独特的设计理念:
- 安装部署过程特别简单,学习曲线很平坦;
- 管理主机便捷,支持多台主机并行管理;
- 避免在被管理主机上安装客户代理,打开额外端口,采用无代理方式,只是利用现在的ssh后台进程;
- 用于描述基础架构的语言无论对机器还是对人都是友好的;
- 关注安全,很容易对执行的内容进行审计、评估、重写;
- 能够立即管理远程被管理主机,不需要预先安装任何软件;
- 不仅仅支持Python,可运行使用任何动态语言开发的模块;
- 非root账号也可以使用;
- 成为最简单、易用的IT自动化系统
环境准备
- 关闭防火墙及selinux防火墙
systemctl stop firewalld setenforce 0
- 虚拟机规划
角色 | 系统版本 | IP地址 | 所用软件 |
---|---|---|---|
管理主机 | CentOS-7-x86_64 | 172.16.10.34 | ansible 2.6.2 |
被管主机 | CentOS-7-x86_64 | 172.16.10.30 | \ |
被管主机 | CentOS-7-x86_64 | 172.16.10.38 | \ |
被管主机 | CentOS-7-x86_64 | 172.16.10.39 | \ |
部署ansible服务
安装软件
yum install epel-release -y
yum -y install ansible
配置主机清单
将多台主机添加到同一个人组中进行集中管理,在使用管理命令时只需要使用类名称,即可管理整个类
cd /etc/ansible/
vim hosts
[web] //被管理主机分类,名称自定义
172.16.10.30
172.16.10.38
[mysql]
172.16.10.39
设置SSH无密码登陆
SSH以非对称加密实现身份验证。身份验证有多种途径,例如其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程中私钥本身不会传输到网络中。
生成公私钥
ssh-keygen -t rsa
下发公钥到被管主机
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.10.30 //依次修改IP,发送到三台被管主机
设置ssh自动代理,避免交互
ssh-agent bash
ssh-add
测试ansible是否搭建成功
以一条简单命令测试是否成功,分别使用IP、组名、以及查看所有被管主机的时间
使用IP地址
ansible 172.16.10.30 -m command -a 'date'
使用组名
ansible web -m command -a 'date'
查询所有被管主机
ansible all -m command -a 'date'
转载于:https://blog.51cto.com/13643643/2153354