第38天课堂-ansible自动化管理-集群架构

一、SSH批量一键完成

1、一键创建及分发的秘钥:

#!/bin/bash

ssh-keygen -f ~/.ssh/id_rsa -P '' -q

for ip 61 31

do

sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no 172.16.1.$ip

done
说明:

非交换式创建秘钥对

ssh-keygen -f ~/.ssh/id_rsa -P '' -q 本地创建秘钥对

命令参数讲解:

-f 输入秘钥文件 input_passphrase

-P '' old_passphrase

-q 静默、安静,不输出信息ssh keygen

-t dsa指定秘钥类型

ssh-copy-id #专业拷贝秘钥中的公钥文件

也可以这么写


sshpass 工具
这个脚本既不用确定yes,也不用输入密码直接把公钥推送到远端服务器

二、实例,测试无密码控制远程服务器
1、安装sshpass
yum install sshpass -y


三、ansible软件知识介绍

1、ssh秘钥认证项目+脚本批量管理。简单实用,看起来比较low,需要人工写脚本,

类似inotify。ansible有配置文件,可以多线程直接实现。不需要写脚本,类似sersync

2、批量管理工具历史

SSH+脚本 CFEngine Puppet saltstack ansible

08年以前 07-08年 10-13年 14-17(Python开发) 16-至今(Python开发)

3、为什么用ansible

简单、方便、容易学习、功能同样强大

ansible有配置文件,可以多线程直接实现。不需要写脚本,类似实时复制的sersync

4、Ansible是一个用来批量部署远程主机上服务的工具、这里“远程主机(remote host)”

是指任何可以通过ssh登录的主机,所以它既可以是远程虚拟机或物理机,也可以是本地主机。

Ansible通过ssh协议实现管理节点与远程节点之间的通信。理论上来说,只要能通过ssh登录到远程主机来完成的操作,都可以通过ansible实现批量自动化操作

涉及命令管理操作:复制文件、安装服务、服务启动停止管理、配置管理等等

5、为什么要用批量管理工具运维

提高效率,百度几万台服务器,阿里几十万台服务器

如何省钱?

SSD+SATA 热点存储

6、ansible特点

ansible基于Python语言实现,由parmiko和pyyaml两个关键模块

1)安装部署过程特别简单,学习曲线很平坦

2)不需要单独安装客户端,只是利用现有的SSHD服务即可

3)不需要服务端(no servers)

4)ansible playbook ,采用yaml配置,提高编排自动化任务

5)ansible 功能模块较多,对于自动化的场景支持丰富

官方 http://docd.ansible.com

老师 www.michaelxia.cn/?p=55

第三方 https://www.cnblogs.com/gzxbkk/p/7515634.html

7、ansible 优点

1)轻量级,无需再客户端安装agent,更新时,只需在操作机上执行一次更新即可

2)批量任务执行可以写成脚本,而且不用分发到远程就可以执行

3)使用Python 编程,维护更简单,

4)支持sudo



四、实践安装Ansible
1、ansible实践环境准备
61(m01)=========>31(nfs01)
61(m01)=========>41(backup)

2、安装ansible


3、查看



4、配置文件备份配置说明




/etc/ansible/hosts 主机资产清单文件,用于定义被管理主机的认证信息
例如ssh登录用户名、密码以及key相关信息。如何配置inventory文件

1)、主机支持主机名通配以及正则表达式,例如
web [1:3].oldboy.com代表三台主机
2)、主机支持基于非标准的ssh端口,例如
web1.oldboyedu.com:6666
3)、主机支持指定变量,可对个别主机的特殊配置,如登录用户\密码
4)、主机组支持指定变量[group_name:vars],同时支持嵌套组[game:children]

五、Ansible的使用

1、语法
ansible oldboy -m command -a "df -h"
主机组 模块 参数


2、要想实现如上的结果,可以有如下两种方式
1)基于SSH秘钥认证的前提下(推送公钥到服务端):可以直接执行



2)如果没有做SSH秘钥认证(服务端没有公钥),可以把用户密码写到


3、常见参数说明及实践


4、ansible模块查看和帮助


你可能感兴趣的:(第38天课堂-ansible自动化管理-集群架构)