网站首页 > 博客文章 正文
“ 由于互联网的快速发展导致产品更新换代逐渐加快,运维人员每天都要进行大量的维护操作,仍然安装传统的方式进行维护会使得工作效率低下。这时,部署自动化运维就可以尽可能的安全高效的工作。自动化运维一般分为两类:一类是需要使用代理工具,也就是基于专用ABem程序来完成管理功能,如:Puppet、Zabbix等;另一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如:Ansible、Fabric等。”
01 自动化运维工具
1、Pup
Pup基于Rpy开发,支持Linux、UNDX、Windows平台。可以针对用户、系统服务配置文件、软件包等进行管理,有很强的扩展性,但远程执行命令相对较弱。
2、SaltStack
CallStack基于Python开发,允许管理员对多个操作系统创建统一的管理系统。
3、Ansible
Ansible基于python开发,集合了众多优秀运维工具的优点,实现了批量运行命令部署程序、配置系统等功能。默认通过SSH协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台主机并行管理,使管理主机更加便捷。
02 Ansible is simple IT automation
Ansible于其他IT自动化运维技术的区别在于其关注点并非配置管理、应用部署或IT流程工作流,而是提供一个统一的界面来协调所有IT自动化功能,因此Ansible的系统更加易用,部署更加方便。
Ansible可以让用户避免编写脚本或代码来管理应用,同时还能搭建工作流实现IT任务的自动化执行。IT自动化可以降低技术门槛以及对传统IT的依赖,从而加快项目的交付速度。
1、Ansible基本架构由以下六个核心:
- Ansible core核心引擎;
- Host inventory主机清单:用来定义Ansible所管理的主机,默认是在Ansible的host配置文件中定义被管理主机,同时也支持自定义动态主机清单和指定其他配置文件的位置;
- Connection plugins连接插件:负责和被管理主机实现通信。除支持使用SSH连接被管理主机外,Ansible还支持其他的连接方式,所以需要有连接插件将各个主机连到Ansible;
- Playbooks(yaml,injaz2)剧本:用来集中定义Ansible任务的配置文件,即将多个任务定义在一个剧本中由Ansible自动执行,可以由控制主机针对多台被管理主机同时运行多个任务;
- Core modules核心模块:是Ansible自带的模块,使用这些模块将资源分发到被管理主机,使其执行特定任务或匹配特定的状态;
- Custom modules自定义模块:用于完成模块功能的补充,可借助相关插件完成记录日志、发送邮件等功能。
2、Ansible功能特性:
- 应用代码自动化部署
- 系统管理配置自动化
- 支持持续交付自动化
- 支持云计算,大数据平台环境
- 轻量级,无序在客户端安装agent,更新时只需在控制机上进行更行即可
- 批量任务执行可以写成脚本,不用分发到远程就可以执行
- 支持非root用户管理操作,支持sudo
- 使用python编写,维护更简单
03 Ansible安装
Ansible自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或运行任何程序,被管理主机也不需要安装和运行何代理程序。
测试安装环境:
关闭三台主机防火墙:
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
一、安装
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/host
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_host的文件当中。当然就算不ping通也可以用shell脚本实现批量推送公钥。
在版本2.7.0中,没有推送公钥形成密钥对的情况下,无法使用ping模块ping通的情况下,很难用authorized_key模块去推送公钥的。所以需要更改shell脚本,这样就可以在无法使用ping模块ping通的情况下直接实现批量推送公钥形成密钥对。
[root@01 ~]# cd~/.ssh
[root@01 .ssh]#ls
id_rsa id_rsa.pub known_hosts
[root@01 .ssh]# vim known_hosts
//查看已经记录在SSH协议中的主机,不做任何修改
三、编写shell脚本批量推送公钥
[root@01 .ssh]# vim ~/.ssh/pushssh.sh
脚本:
#!/bin/sh cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys host1=`cat /etc/ansible/hosts | awk -F " " '{print $1}' | grep '^192'` #在生产情况中,有很多种获得IP的方法,本脚本最重要的就是获得IP地址,脚本只是提供一个思路。 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 //执行脚本
注明:想要执行这个脚本,首选需要下载并安装expect,同时被管理端主机的密码需要一致。
四、查看脚本是否执行成功
此时就可以进行Ansible批量部署操作了。
[root@01 ~]# ansible all -m command -a 'date'
| 大 道 | . | 源 于 坚 守 | \我们不生产技术,是熟练的搬运工/
猜你喜欢
- 2024-10-10 Nutch-Hadoop-MongoDB搭建分布式爬虫
- 2024-10-10 OpenSSH更新至8.0,修复存在35年的安全漏洞
- 2024-10-10 [python] 基于paramiko库操作远程服务器
- 2024-10-10 利用Zabbix监控系统SSH方式检测远程目标主机
- 2024-10-10 手工方式IPSec VPN配置保障单位与分支之间的数据安全
- 2024-10-10 SSH 简介:安全远程访问的利器(安全远程登录协议ssh)
- 2024-10-10 [ Laravel 5.6 文档 ] 快速入门 —— 重量级开发环境:Homestead
- 2024-10-10 快速上手:Docker环境下的WordPress安装全攻略
- 2024-10-10 阿里云服务器Centos7.3安装Git(阿里云服务器centos装桌面)
- 2024-10-10 如何使用ssh密钥登录远程服务器(如何使用ssh密钥登录远程服务器账号)
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)