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