坚持#第277天~git,云计算高级运维学完啦!!!

ansible回顾,ansible.conf、hosts、模块、yml脚本

模块有:setup、ping、file、copy、user、cron、shell、yum、systemd

ansible-playbookymlName.yml

 

与zabbix监控结合写一个playbook部署客户端,

批量部署,传包、安装、修改配置文件、让他们运行

批量部署zabbix客户端

你看你又多少台虚拟机把他全部部署上去就行了,看有没有成功就行了

 

批量部署zabbix客户端:

 

1.主服务器上先把软件拷贝过去

2.安装

3.修改配置文件

4.启动服务

vim/etc/ansible/hosts

[zabbix-agents]

clone[]添加主机,保存退出

vimzabbix-agent.yml

---

 - name: zabbix-agent anzhuang

   hosts:zabbix-agents

   tasks:

       - name: copy the packages

        copy:

           src=/root/zabbix3.2/zabbix-agent-3.2.11-1.el....rpm

           dest=/

       - name: install the zabbix-agent

        yum: name=/zabbix-agent-3.2.11-1.el....rpm使用yum模块进行安装操作

       用shell脚本修改配置文件

 

vimzabbix-agent.sh

file=/etc/zabbix/zabbix_agentd.conf脚本常识,把路径赋值给变量,用在sed中

server_ip=真实服务器ip

#sed -r ‘/^Server/s/127.0.0.1/真实服务器ip/’

sed -i -r “/^Server/s#127.0.0.1#$server_ip#”$file

#sed -n -r “/^Hostname/s#Zabbixserver#$HOSTNAME#p” $file测试一下没问题写上去

sed -i -r “/^Hostname/s#Zabbixserver#$HOSTNAME#” $file

egrep^HostMetadata $file &> /dev/null || sed -i “$ a HostMetadata=$(uname)”$file

保存退出,现在本机上执行以下

chmod +x zabbix-agent.sh

egrep “^$|^#”/etc/zabix/zabbix/agentd.conf

 

sh -x/zabbix-agent.sh脚本调试脚本

 

vimzabbix-agent.yml

---

 - name: zabbix-agent anzhuang

   hosts:zabbix-agents

   tasks:

       - name: copy the packages

        copy:

           src=/root/zabbix3.2/zabbix-agent-3.2.11-1.el....rpm

           dest=/

       - name: install the zabbix-agent

        yum: name=/zabbix-agent-3.2.11-1.el....rpm

       用shell脚本修改配置文件

       - name: modify conf_file

        script: /zabbix-agent.sh

        notify: start zabbix-agent

    handlers:一般是启动服务操作放在这个里面

       - name: start zabbix-agent

        systemd: name=zabbix-agent state=started enabled=yes保存退出

查看systemd模块相关东西、感悟sed

 

ansible-playbookzabbix-agent.yml

绿颜色的就是没有修改成功,黄色的就是修改成功了,可以之前有些安装了就不需要安装了所以就显示成绿色的

 

netstat |100

systemctlstatus zabbix-agent

服务起来了,查看配置文件是否配置成功

 

 

Git:

最好的版本控制器:Git

还有其他版本控制器:SVN,我们还学习Git

SVN:版本库都放在中央服务器上,下载考试题到自己电脑上再作答,然后上传上去

Git:没有中央服务器,版本库就在自己的电脑上,直接在自己电脑上作答

步骤:工作区完成后git add到版本库的stage暂存区,然后从暂存区git commit到版本库

 

start:

yum install-y git可以直接安装

git config--global user.name “uplooking”起个名字叫uplooking

git config--global user.email "uplooking@localhost"邮箱

git --help获取所有命令的帮助信息,命令 --help

git helpconfig获取具体命令帮助信息

mkdir /git创建工作区

cd /git

git init初始化版本库

ls -a可以看到隐藏的目录.git,这个是工作区

cp/etc/passwd . 使用的话就两步,暂存区、版本库

ls

git addpasswd提交到暂存区

git status查看状态

git rm--cached是删除

git commit-m “create file”提交暂存区的所有内容到版本库,-m是描述信息

git status

vim ./passwd我要修改passwd,直接修改

git status再看状态可以出现变更

git checkout-- passwd修改的丢到,回到之前的

git status干净

cat ./passwd再看一下文件

vim ./passwd修改太多了,只留一行,删除

git status查看

修改完之后提交到暂存区

然后提交到版本库

checkout -- 文件名是撤销修改

git diffpasswd查看文件历史的修改操作

-是删掉的东西,+是添加的东西

git add./passwd

git commit-m “change to aaaa”

还可以回退到之前的版本

git log查看有哪些版本

commit后面的就是版本号,公司人员有很多,可以利用这个看文件代码是谁修改的

git reset--hard HEAD^使用这个可以把我们的指针往回拨一个版本

注意:HEAD^^是回退两个版本

cat  ./passwd使用之后再查看文件内容发现确实恢复了

 

HEAD就是一个指针,指到我们的一个分支master,回退就是将HEAD指向之前的

git log已经没有版本号了

git reflog可以看到所有的版本,git log可以看到详细的信息,reflog简陋

第一列就是版本号

git reset--hard 版本号,这个可以不用指针,直接恢复到版本号对应的内容

cat ./passwd

git checkout-- 文件名

vim ./passwd

删除 所有,添加aaaa,bbbbb保存退出

git addpasswd

vim ./passwd

添加ccccc

git status这时候信息比较多

git checkout-- ./passwd可以回到提交到暂存区的内容

cat ./passwd

aaaa,bbbbbb

git status

git resetHEAD passwd不想修改就用这个

 

修改好一个版本记得提交到版本库

 

需要提交到commit版本库才能恢复删除的文件,而且文件都是放在/git里面的

rm -rf./passwd删掉了

ls发现真的删掉了

git log查看版本号或reflog

git log--pretty=oneline比上面的更简洁,一行显示

git reset--hard 版本号6b716373fb恢复删除的文件

 

 

给版本打标:
git tag -a v1.0 -m "release 1" \\给最近的版本打标
git tag -a v0.9 -m "change bin upper" c5076eb \\给之前的某个版本打标
git checkout v0.9 \\回退到打标的某个版本

 

在master分支上创建新的分支dev,master和dev都指向版本

HEAD指向哪个分支,那么当前就是那个分支

git branch 新的分支名字  可以创建新的分支

start:

git branchdev

git branch查看有哪些分支

git checkoutdev切换到dev分支上

git checkoutmaster切换到master分支上

目前dev分支和master分支内容是一样的,因为是在那个master分支上创建的分支

分支就是个指针,指到哪里就显示哪个版本的内容

git checkoutmaster

cat ./passwd

git branchtest

git checkouttest

cat ./passwd分支test和master分支上面的内容是一样的

为什么一开始有master分支?系统默认创建的吗?是的,master一开始就有

一开始有一个master分支那还怎么切换分支?创建的分支不都是和master内容一模一样吗?这就涉及到了给版本打标,git tag

start:

git tag -av0.1标名 -m “给版本打标” 版本号

git checkoutv0.1就能切换到v0.1这个版本号分支上了,然后可以在这个分支上创建新的分支,这个版本号里面的内容就和master分支里面的内容不一样了

怎么查看自己在哪个版本号上?

git branch查看自己在哪个分支上

tree .git/refs/这个打标的标记怎么查看呢,怎么删除呢,怎么查看哪个版本号对应的哪个标记呢,哪个版本号对应的哪个分支呢:

查看标记用git tag -l

删除标记用git tag -d 标记名

查看哪个版本号对应的哪个标记用git show 标记名

 

在当前分支上做的修改不影响其他分支上的文件内容

要弄懂创建分支和切换分支

 

合并分支:

切换到分支1

git merge 分支2  这样就将分支1和分支2合并了

合并后可以删掉之前的分支1:

git branch-d 分支1

没有合并的分支想删除掉的话使用-D

git checkout-b test创建新的分支并能直接切换到那个创建的新分支里面去

 

分支的冲突:原因是都提交到库了,但电脑不知道要保留哪一个分支上面的内容导致冲突

现在在master分支上

git branch test

ls

vim ./passwd

AAAAA

bbbbb

ccccc

git add./passwd

git commit-m “change aa to AA”

git checkouttest

vim ./passwd

BBBBB

bbbbb

ccccc

git add./passwd

git commit-m “change aa to BBB”

git checkoutmaster

git mergetest告诉冲突于./passwd

需要手动修改./passwd再进行提交,就能完成合并

vim ./passwd

git addpasswd

git commit-m “merge test”

 

 

git总结:

初始化之后会有一个默认的分支,叫master,分支可以理解为是虚拟目录

查看git的所有分支并显示当前在哪个分支上:git branch

拷贝分支并重命名为test:git branch test相当于cp -r并给目录改名

切换到test分支:git checkout test相当于cd 目录名

合并分支:git merge test一般都是将其它分支上的内容合并到master主分支上,而不是将主分支master合并到其它分支上,相当于把其它分支的里面的文件拷贝到主分支里面

 

 

在文本中有超链接,所以叫

OSI中应用层

www服务,80端口,

上网的流程

请求行  包括 请求方法GET和POST,URL 

请求头部  GET:  HOST:

空行   结束

请求主体  给客户端回应一条响应报文,状态码200,404,500

 

git实例:

通过主分支来开发,主力开发分支是develop

绿色的是测试分支,测试没有问题就合并到主分支

红色的是hostfixes分支,解决bug 的分支

 

 

git多人协作、远程版本库(这个和公司里面差不多,属于局域网的github),互联网的

先学远程版本库:

安装

克隆

关联

 

远程版本库

start:

环境

真实服务器:192.168.10.12

客户端:192.168.10.13

 

真实服务器:

yum install-y git

useradd -s/usr/bin/git-shell git

mkdir -p/git/pub.git

chown Rgit.git /git

git init--bare /git/pub.git初始化裸库

cd/git/pub.git

ls -a

把公钥拷贝给git用户的家目录里面去

cd /home/git

mkdir .ssh

cd .ssh

touchauthorized_keys

cd ..

chown -Rgit.git .ssh

ll -a

创建一个密钥,把公钥拷贝过去

 

客户端:

yum install-y git

ssh-keygen-C “clone3@up.com”  指定邮箱

vim.ssh/id_rsa.pub这个就是客户端的公钥

 

服务器:

vim.ssh/authorized_keys

粘贴客户端的公钥

 

客户端:

git config--global user.name “clone3”

git config--global user.email “clone3@up.com”

mkdir /git

git clonegit@服务器ip:/git/pub.git/git克隆命令会自动添加关联

cd /git

ls -a

出现了.git

echo clone3 >clone3.txt

git addclone3.txt

git commit-m “create clone3.txt” 提交,不提交会推送报错

git remote-v查看具体的信息,origin是远程仓库的默认名称,pull是拉取,push是推送

git remoteadd origin给关联的服务器起一个名字叫origin

git pushorigin master将客户端master分支推送到origin服务器

报错

git status

干净的说明已经提交了之前的clone3.txt

ls

还存在clone3.txt

 

服务器:

这边做完init之后要chown -R git.git /git才行,不然客户端那边推送会报错无法推送,还有可能是客户端那边没有提交

客户端向服务器推送完了是推送到服务器哪个里面啊?也就是推送的怎么在服务器里面看到?而且裸机的服务器里面有很多命令都不能用是怎么回事啊?

git log可以看

git reflog不能用

git reset --hard版本号 不能用

因为git内置就是这个样的

 

新机器:clone1

mkdir/server.git

ssh-keygen-C “clone1@up.com”

vim.ssh/id_rsa.pub复制内容

 

服务器:

vim/home/git/.ssh/authorized_keys

粘贴

 

新机器:

git clonegit@服务器ip:/git/pub.git/server.git克隆的会自动关联

cd/server.git

ls

catclone3.txt

 

就相当于什么呢,相当于真实服务器是一个资源共享站台git hub

其它机器推送到真实服务器上面的东西其它机器都能够用git clone拷贝下来

上传用push

 

 

拉取的总结:

客户端:

从真实服务器上拉取:

git pull 真实服务器ip:/git/pub.git这个写法是错的,从真实服务器上拉取是这样的:

git remote-v先看有没有关联,没有关联的话要做一个与服务器的关联

git pull 关联服务器起的名字  分支名

 

从其他客户端上直接拉取

git pull 其他客户端ip:/git        这个是直接拉取其他客户端的/git目录

 

服务器上有分支,只是看不到

拉取是拉取分支里面的文件,并没有把分支给拉取下来

推送要推送分支

 

推送要传公钥,拉取不用传公钥

 

如果已经有了仓库git,不想用克隆关联,想要直接关联服务器,就使用:

git remoteadd server git@服务器ip:/git/pub.git这个add后面是给关联服务器起的名字

 

高级课程结束啦!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值