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后面是给关联服务器起的名字
高级课程结束啦!!!