一. ansible#
ansible
是什么?由哪些组成?
有什么作用?
paramiko --> 这个库 / 模块 ansible 实现 ssh 功能
是什么?
ansible 是一个自动化运维工具的名称
由哪些组成?
ansible 组成:
1、host inventory --# 定义客户机,可以对客户机进行分类:db 类,web 类... 等等
2、playbook --# 剧本 让主机按照我给定的剧本去完成一些事情
3、module --# 模块 实现一个个功能的程序
4、pluging --# 插件 实现一些额外的小功能
---------------------------------------
有什么作用?
装软件、卸软件、改配置、打补丁、做备份、跑脚本(运维工作)
---------------------------------------
ansible 是 python 写的,底层是 ssh
---------------------------------------
paramiko --》 这个库 / 模块 ansible 实现 ssh 功能
---------------------------------------
sshpass 模块 --》linux 命令 实现 ssh 登录
---------------------------------------
[root@cPen_A ~]# ansible --version # 注:查看版本
ansible 2.9.15
二. grep#
#grep相关命令
[root@cPen_B network-scripts]# cat /etc/passwd|grep -B 5 mail #注:查看前5行
[root@cPen_B network-scripts]# cat /etc/passwd|grep -A 5 mail #注:查看后5行
[root@cPen_B network-scripts]# cat /etc/passwd|grep -C 5 mail #注:中间 查看前后5行
[root@cPen_A ~]# vim /etc/ansible/ansible.cfg #注:ansible配置文件
forks = 5 #注:起5个进程去处理 -f 选项
ip地址显示不出来
service NetworkManager stop #注:这个服务影响的
service network restart
template 模板 --> 绝大部分固定的,有几个是变量,根据ansible取机器上的值
[root@cPen_A ansible]# ansible web -m setup #注:查看节点服务器的信息 以字典形式展示
192.168.0.79 | SUCCESS => {
"ansible_facts": {
……
}
[root@cPen_A ansible]# ansible web -m setup -a "filter=ansible_all_ipv4_addresses"
#注:过滤获得指定信息
#注:获取 ansible-demo3 主机的 IPV4 地址
192.168.0.79 | SUCCESS => {
"ansible_facts": { #注:ansible_事实
"ansible_all_ipv4_addresses": [
"192.168.0.79"
],
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false
}
==========================================================
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用户名", "口令")
==========================================================
解决使用密码连接,第一ssh过去的时候,需要输入yes的问题
[root@C ansible]# vim hosts
[web]
192.168.0.77
[db]
192.168.0.35 ansible_ssh_user=root ansible_ssh_pass=123456
[root@C ansible]# vim ansible.cfg
# uncomment this to disable SSH key host checking
host_key_checking = False
api 接口 --> application interface
#注:写接口
json 有什么用?轻量级的数据交换格式
[root@cPen_A ansible]# ansible-doc -l #注:查看ansible的模块
#注:doc 文档,l list
lastest表示安装 不是指最新的
项目
ansible
项目名称:使用ansible批量部署nginx集群和mysql集群
项目环境:centos8.2,ansible2.9.15,nginx1.19.5,mysql5.7.31
项目描述:
使用ansible去批量部署6台nginx服务器,1台NFS文件服务器,3台MySQL服务器,其中nginx采用源码编译安装,MySQL采用二进制安装,NFS采用yum安装方法。nginx的编译安装和MySQL的二进制安装过程提前编写好脚本,通过ansible下发到nginx和MySQL服务器上执行,全程采用playbook来实现批量自动化部署
项目步骤:
1.部署好11台linux虚拟机,全部的配置,采用1核2G的内存的配置,安装好centos8.2的系统。
2.然后在一台linux系统里安装部署ansible,采用yum安装。
3.编写好一键安装nginx的脚本,连同nginx.conf配置文件都指定好内容,方便后面的playbook使用。
4.编写好一键安装MySQL的脚本,连同my.cnf配置文件都指定好内容,方便后面的playbook使用。
5.在ansible服务器和所有的nginx,MySQL,NFS服务器之间建立ssh免密通道
6.最后编写ansible的playbook文件去统一部署nginx,MySQL,nfs服务器
7.测试整个安装部署是否成功
项目心得:
1.对ansible的在大规模集群里的使用有了一些了解,深入体会到批量部署的便捷
2.对集群有了一定的认识
3.编写脚本的能力有了提升
4.自己对*个故障的排除,提升自己的troubleshooting的能力
============================================================================================
写项目时
1.摆数据
nginx
是什么?有什么用?
nginx 是一个 web 服务器
web 就是网站
dns
domain name system 域名解析系统
www.aliyun.com --> ip
为什么需要 DNS?
方便记住某个网站名字
ip 很难记
正向解析:域名 --> ip
反向解析: ip --> 域名
在浏览器输入 www,baidu.com 回车后发生了什么?
1、浏览器缓存
2、hosts 文件
3、本地 dns 服务器
4、转发服务器
5、根域名服务器
6、迭代过程
7、递归返回
8、直接访问
CDN 内容分发网络:加速 (就近解析)
#注:缓存有滞后的
#注:视频业务大量使用 CDN
记录类型
A 记录 --> address record
www --> 120.77.248.190
需要上线一个自己的网站,有哪些流程 (工作要做)?
1、购买云服务器,部署 nginx,mysql,Python 等环境
2、购买域名 www.chenpeng.com,绑定域名和云服务器 --> A 记录 --> 备案 (服务器在国内必须备案)
3、开发网站 --> 写网站
4、测试网站
5、上传到云服务器的 nginx 网页根目录下 --> 上线
[root@cPen_C lianxi]# yum provides nslookup
#注:查看命令从哪个包安装
NFS
network file system 网络文件系统
有什么用?
共享文件 --> 多台服务器使用相同的内容
#注:NFS 是最廉价的解放方案,受网络影响、服务器硬件配置低,磁盘的速度,CPU,内存,网络带宽 都是比较差的
#注:比较贵的解决方案:上专业存储
#注:更好的是 SAN 光纤设备
SAN -->
NAS --> 网络附加存储
SAN 一般指存储区域网络。存储区域网络(Storage Area Network,简称 SAN)采用网状通道(Fibre Channel ,简称 FC,区别与 Fiber Channel 光纤通道)技术,通过 FC 交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络
NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为 “网络存储器”。
ansible
项目
dns
nginx 一键部署
网站上线
NFS
SAN
NAS
nginx一键安装 脚本
#!/bin/bash
#author:cali
#time:2020-49
#company:sanchuang
#email:695811769@qq.com
mkdir -p /nginx2
cd /nginx2
#download nginx
curl -O http://nginx.org/download/nginx-1.17.9.tar.gz
#创建用户
useradd lihu
#解压
tar xf nginx-1.17.9.tar.gz
#进入解压目录
cd nginx-1.17.9
#解决依赖关系
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make
#配置
./configure --prefix=/usr/local/nginx9 --user=lihu --group=lihu --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --with-stream
#编译和安装
make -j 2 ; make install
#开机启动
echo "/usr/local/nginx9/sbin/nginx" >>/etc/rc.local
chmod +x /etc/rc.d/rc.local
#修改PATH变量
echo "PATH=/usr/local/nginx9/sbin:$PATH" >>/etc/profile
PATH=/usr/local/nginx9/sbin:$PATH
#启动
nginx