由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下。部署自动化运维就成为了首先,自动化运维能够帮助工程师尽可能安全、高效的完成工作。自动化运维的工具一般分为两类:一类是需要使用代理工具,也就是基于专用的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

部署自动化运维服务——Ansible_第1张图片
部署自动化运维服务——Ansible

下发公钥到被管主机

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]  //依次修改IP,发送到三台被管主机

部署自动化运维服务——Ansible_第2张图片

设置ssh自动代理,避免交互

ssh-agent bash
ssh-add

部署自动化运维服务——Ansible

测试ansible是否搭建成功

以一条简单命令测试是否成功,分别使用IP、组名、以及查看所有被管主机的时间

使用IP地址

ansible 172.16.10.30 -m command -a 'date' 

部署自动化运维服务——Ansible

使用组名

ansible web -m command -a 'date'

部署自动化运维服务——Ansible_第3张图片

查询所有被管主机

ansible all -m command -a 'date'

部署自动化运维服务——Ansible_第4张图片