内容简介:--三台主机关闭防火墙:
一、概述分析
由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行
大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下。这时,部署自动
化运维就可以尽可能安全、高效地完成这些工作。
一般会把自动化运维 工具 划分为两类:一类是需要使用代理工具的,也就是基于
专用的ABem程序来完成管理功能,如: Puppet、Func、 Zabbix等;另外一类是不需
要配置代理工具的,可以直接基于SSH服务来完成管理功能,如: Ansible、 Fabric等。
-
下面介绍几款功能类似的自动化运维工具:
1. Puppet
Pup基于Rpy开发,支持Linx、UNDX、 Windows平台,可以针对用户、系统服务
配置文件、软件包等进行管理,有很强的扩展性,但远程执行命令相对较弱。
2. SaltStack
CallStack基于 Python 开发,允许管理员对多个操作系统创建统一的管理系统,比
pet更轻量级
| 工具 | 开发语言 | 结构 | 配置文件 格式 | 运行任务 |
|---|---|---|---|---|
| Ansible | Python | 无 | YAML | 支持命令行 |
| SaltStack | Python | C/S | YAML | 支持命令行 |
| Puppet | Ruby | C/S | Ruby语法格式 | 通过模块实现 |
Ansible
Ansible基于 Python开发,集合了众多优秀运维工具的优点,实现了批量运行命令
部署程序、配置系统等功能。默认通过SSH协议进行远程命令执行或下发配置,无需
部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台
主机并行管理,使得管理主机更加便捷。
官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。
Ansible通过SSH协议实现远程节点和管理节点之间的通信。理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到。
Ansible跟其他IT自动化技术的区别在于其关注点并非配置管理、应用部署或IT流程工作流,而是提供一个统一的界面来协调所有的IT自动化功能,因此Ansible的系统更加易用,部署更快。
Ansible可以让用户避免编写脚本或代码来管理应用,同时还能搭建工作流实现IT任务的自动化执行。IT自动化可以降低技术门槛及对传统IT的依赖,从而加快项目的交付速度。
Ansible基本架构由六个部分组成:
Ansible core 核心引擎。
Host inventory 主机清单:用来定义Ansible 所管理的主机,默认是在Ansible的host配置文件中定义被管理主机,同时也支持自定义动态主机清单和指定其他配置文件的位置。
Connection plugins连接插件:负责和被管理主机实现通信。除支持使用ssh连接被管理主机外, Ansible还支持其他的连接方式,所以需要有连接插件将各个主机用连接插件连接到 Ansible。
Playbooks(yaml, injaz2)剧本:用来集中定义 Ansible任务的配置文件,即将多个任务定义在一个剧本中由 Ansible自动执行,可以由控制主机针对多台被管理主机同时运行多个任务。
Core modules核心模块:是 Ansible自带的模块,使用这些模块将资源分发到被管理主机,使其执行特定任务或匹配特定的状态。
Custom modules自定义模块:用于完成模块功能的补充,可借助相关插件完成记录日志、发送邮件等功能。
-
ansible功能特性:
- 应用代码自动化部署
- 系统管理配置自动化
- 支持持续交付自动化
- 支持云计算,大数据平台环境
- 轻量级,无序在客户端安装agent,更新时只需在控制机上进行更行即可
- 批量任务执行可以写成脚本,不用分发到远程就可以执行
- 支持非root用户管理操作,支持sudo
- 使用python编写,维护更简单
二、Ansible安装
Ansible 自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或运行任何程序,被管理主机也不需要安装和运行任何代理程序。
实验安装环境:
| 角色 | 主机名 | IP地址 | 组名 |
|---|---|---|---|
| 控制主机 | 01 | 192.168.100.129 | |
| 被管理主机 | 02 | 192.168.100.128 | webserver |
| 被管理主机 | 03 | 192.168.100.130 | mysql |
三台主机关闭防火墙:
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0
安装步骤:
控制主机安装ansible并生成密钥对批量发送给被管理主机
1.yum安装环境包与ansible:
yum install epel-release -y yum install ansible –y
2.查看ansible版本
[root@01 ~]# ansible --version
3.yum安装完成后会生成3个文件
[root@01 ~]# cd /etc/ansible/ [root@01 ansible]# ls
4.配置被管理端主机IP清单
[root@01 ansible]# vim /etc/ansible/hosts //配置主机清单
5.虽然ansible的配置文件已经设置完成被管理端的IP地址,但是因为ansible是基于ssh协议,所以还需要配置密钥对验证
[root@01 ~]# ssh-keygen -t rsa //生成密钥对
6.ssh协议免交互代理
[root@01 ~]# ssh-agent bash [root@01 ~]# ssh-add
shell脚本批量发送公钥
(1).下载安装expect
[root@01 .ssh]# yum install expect -y //yum安装expect
(2). ping通所有可互通的主机
[root@01 .ssh]# ansible all -m ping //使用ansible中的ping模块
ansible是基于SSH协议,所以可以ping通的主机储存在.ssh/known_hosts的文件当中。
[root@01 ~]# cd ~/.ssh/ [root@01 .ssh]# ls id_rsa id_rsa.pub known_hosts [root@01 .ssh]# vim known_hosts //查看下已经记录在SSH协议的主机,不做任何修改操作
(2).编写 shell 脚本实现批量推送公钥
[root@01 .ssh]# cd ~ [root@01 ~]# chmod 777 .ssh/ //更改 .ssh/ 的权限,有利于后面脚本的执行
[root@01 .ssh]# vim ~/.ssh/pushssh.sh
脚本如下:
#!/bin/sh
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
host1=`cat known_hosts | awk -F " " '{print $1}'`
for i in $host1;
do
command1="scp ~/.ssh/authorized_keys root@$i:~/.ssh/authorized_keys"
password="123123"
/usr/bin/expect -c "
spawn ssh-copy-id root@$i
expect {
\"*password\" { send \"$password\r\"; exp_continue }
}
expect eof"
done
#编写脚本完成后保存退出
[root@01 .ssh]# sh pushssh.sh //执行脚本
PS:想要执行这个脚本,首先需要下载安装expect,并且把 .ssh/ 的权限放到最大便于shell脚本的执行,同时被管理端主机的密码需要是一致的。
----------------------验证-------------------
查看下脚本是否执行成功:
此时就可以进行ansible批量部署操作
[root@01 ~]# ansible all -m command -a 'date'
以上所述就是小编给大家介绍的《自动化运维Ansible批量部署服务+shell脚本批量推送公钥》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- bitcoin:压缩公钥与未压缩公钥
- [学习笔记] “付款到公钥” 和 “付款到公钥哈希”
- Golang代码搜集-基于RSA的公钥加密私钥解密-私钥签名公钥验证
- 随处可见的公钥证书
- 工业网络安全趋势:公钥加密
- Crypto-RSA-公钥攻击小结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pro Django
Marty Alchin / Apress / 2008-11-24 / USD 49.99
Django is the leading Python web application development framework. Learn how to leverage the Django web framework to its full potential in this advanced tutorial and reference. Endorsed by Django, Pr......一起来看看 《Pro Django》 这本书的介绍吧!
图片转BASE64编码
在线图片转Base64编码工具
随机密码生成器
多种字符组合密码