命令中间加参数 -o “StrictHostKeyChecking no” 即可跳过
ssh ,scp ,ssh-copy-id之类的都有效
ansible 可以编辑配置文件 /etc/ansible/ansible.cfg 设置 host_key_checking = False 保存生效
命令中间加参数 -o “StrictHostKeyChecking no” 即可跳过
ssh ,scp ,ssh-copy-id之类的都有效
ansible 可以编辑配置文件 /etc/ansible/ansible.cfg 设置 host_key_checking = False 保存生效
set nu
"代码显示行号
syntax on
"关键词高亮显示
set cindent
"c语法自动缩进
set autoindent
"新行自动缩进
set shiftwidth=4
"缩进宽度4
set tabstop=4
"tab键宽度4
set softtabstop=4
"制表符宽度4
把相关代码放到 /etc/vim/vimrc 则打开vim自动生效,否则需要每次打开输入生效
${var#pattern} 最小匹配左删除
${var##pattern} 最大匹配左删除
${var%pattern} 最小匹配右删除
${var%%pattern} 最大匹配右删除
var为变量 pattern为匹配格式
比如var=”/var/logs/nginx/access.log”,
[root@mail k8s]# var="/var/logs/nginx/access.log"
[root@mail k8s]# echo ${var##*/}
access.log
[root@mail k8s]# echo ${var%/*}
/var/logs/nginx
所以这里的*/ 和 /* 都是匹配的格式,删左边的*写标记符/左边,删右边*就写/右边
还有种用法是重命名”aafad23aa54d11eaaa3efa163e57590a_09Pod管理与使用.pdf”这种类型的文件为”09Pod管理与使用.pdf”,还是讲下逻辑过程:
var=”aafad23aa54d11eaaa3efa163e57590a_09Pod管理与使用.pdf” ,这里要删除”aafad23aa54d11eaaa3efa163e57590a_”部分,很明显可以找出
最终的表达式就是 ${var#*_} 或则 ${var##*_}
[root@mail k8s]# var="aafad23aa54d11eaaa3efa163e57590a_09Pod管理与使用.pdf"
[root@mail k8s]# echo ${var##*_}
09Pod管理与使用.pdf
[root@mail k8s]# echo ${var#*_}
09Pod管理与使用.pdf
添加普通用户使用管理员权限,只需用visudo 命令修改/etc/sudoers文件。格式说明
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
#%wheel ALL=(ALL) ALL
#%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
模块 | 含义 |
---|---|
用户名或群组名 | 表示系统中的那个用户或群组,可以使用 sudo 这个命令。 |
被管理主机的地址 | 用户可以管理指定 IP 地址的服务器。这里如果写 ALL,则代表用户可以管理任何主机;如果写固定 IP,则代表用户可以管理指定的服务器。如果我们在这里写本机的 IP 地址,不代表只允许本机的用户使用指定命令,而是代表指定的用户可以从任何 IP 地址来管理当前服务器。 |
可使用的身份 | 就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略。 |
授权命令 | 表示 root 把什么命令命令授权给用户,换句话说,可以用切换的身份执行什么命令。需要注意的是,此命令必须使用绝对路径写。默认值是 ALL,表示可以执行任何命令。多命令逗号分隔 |
浏览器报错的证书链的问题,我们一般会有三种证书:
某些厂商的rCA和mCA是需要用户自己下载的。为了让浏览器能够信任我们的证书,我们需要配置一条完整的证书链,证书链由sCA和mCA构成就好,rCA是浏览器内置,不需要服务器给提供。nginx配置证书链的时候,就是指定一个证书文件,这个文件中含有我们整个证书链的所有证书就好,证书合并的时候,
正确的合并方法: 是把 mCA 合并到 sCA 中。当有多个 mCA 文件时,mCA 从下级到上级(根证书为最上级)依次合并到 sCA 中。在这个过程中,rCA 被视为多余的文件。
# Combined Certificates
-----BEGIN CERTIFICATE-----
...... sCA ......
------END CERTIFICATE------
-----BEGIN CERTIFICATE-----
...... mCA (lower) ......
------END CERTIFICATE------
-----BEGIN CERTIFICATE-----
...... mCA (upper) ......
------END CERTIFICATE------
证书链的问题解决后,基本应该就可以正常工作了。
.crt服务器证书文件直接通过记事本打开,.cer中级证书也直接通过记事本打开,然后按照如上规则,将两个文件合并(服务器证书内容在最上面,中级证书内容在下面),最后直接使用合并后的文件即可,这样就不会再报中级证书(证书链)的问题了。
注:实际上.crt跟.cer证书文件内容一样,只是扩展名不同而已。
注:服务器证书包含.crt和.key文件
附证书链检测网站: https://csr.chinassl.net/ssl-checker.html
如果jenkins 主节点不能直接连接待部署项目的服务器A,但是A可以访问互联网,主节点也暴露在互联网上,可以通过在A所在的网络的选一台B主机安装agent ,通过这个agent来构建和发布。
相关配置注意点:
在master上新建节点完成上面的操作后,返回节点列表,此时的点击显示未连接状态。点解刚创建的节点名称“test”,如下图
点击如图2的agent.jar 下载后传到agent所在服务器,然后在agent节点运行给出的命令启动agent服务。
启动后等待一会,就可以看到节点列表显示已经连接状态。
ansible-doc modulename 模块用法的查询
playbook tasks下多条命令的写法
- name: use ";"
shell: command 1 ; command 2
#方法二
- name: Install prerequisites
shell:
chdir: '{{ zuul.project.src_dir }}'
executable: /bin/bash
cmd: |
set -e
set -x
echo "IPV4_ADDRS_SAFE_TO_USE=10.1.0.0/20" >> localrc
./tools/install_prereqs.sh
添加删除用户,修改密码。
修改密码 ansible host -m user -a 'name=root password="加密的密码"’
密码加密方法python交互界面:
[root@test-hub .ssh]# python3
Python 3.6.8 (default, Nov 16 2020, 16:55:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt
>>> crypt.crypt("admin@123")
'$6$Ag2/sdXufJ0CY2pP$XkxspT1V/sf3O7TXTcGZk5Kmd6YlxZtwezzIlvH/GNHeeWC14n54OpEE0oSg5FtDV9glFs.bdwXL.8IY8LiM51'
>>>
服务器的硬件信息
ansible host -m setup -a ‘filter=”*mem*”‘
origin: 代表远端仓库的别名(比如远端仓库地址 http://github.com/jimywu19/py.git),可任意修改其他名字。
分支: 指向 commit 对象的可变指针.
HEAD: 指向你正在工作中的本地分支的指针,可以理解为当前分支的别名
一、创建分支dev并切换到分支
git checkout -b dev
二、开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
(说明:以下代表git的dev分支已经有最新代码,在本地合并)
## 场景说明:dev 分支由开发人员甲写完代码并已经推送到git的dev分支,master管理员来做分支合并工作
git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master
三、当master代码改动了,需要更新开发分支(dev)上的代码
#场景说明: dev分支开发人员操作,
git checkout master
git pull
git checkout dev
git merge master
git push -u origin dev
官网链接 Git 分支 – 分支的新建与合并
四、个人理解:
经常会忘记,mergn是怎么样的一个操作。是A并到B,还是B并到A.做下记录
新的东西在dev, dev 合并到master
那基点是master , git merge 后面跟的是 dev
总结,合并到哪里,需要先checkout到那里。
# 场景说明:以下为dev分支开发者视角,自己开发,自己有权合并到master
#创建并切换到分支
git checkout -b dev
#提交开发好的代码
git add .
git commit -m "commit infomation"
git push origin dev
#切回master分支
git checkout master
git pull master
#把本地分支合并到master
git merge dev
#把本地合并后的master同步到远程
git push orign master
另外解释下 git push [<repository>] [<refspec>] ,
之前公司代码的管理不统一,一部分人用SVN,一部分人用Git,对于习惯了使用Linux或者Mac命令行的人来说,Git的操作更方便和快捷,和小伙伴商量了一下把整个代码管理工具切换成了Git,GitHub如果不是开源项目的话是需要付费使用,所以选择使用GitLab,由于公司没有网络安全专家,对公司的网络边界以及代码库进行扫描,如果扫描到邮箱,暴力破解后,可能就会获取代码,所以采用在自己内网搭建GitLab服务的方式,在讲正文之前,先来说说Git和SVN的区别。
这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。需要做一点声明,GIT并不是目前第一个或唯一的分布式版本控制系统。还有一些系统,例如Bitkeeper, Mercurial等,也是运行在分布式模式上的。但GIT在这方面做的更好,而且有更多强大的功能特征。
GIT跟SVN一样有自己的集中式版本库或服务器。但GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。
同样,这种分布式的操作模式对于开源软件社区的开发来说也是个巨大的恩赐,你不必再像以前那样做出补丁包,通过email方式发送出去,你只需要创建一个分支,向项目团队发送一个推请求。这能让你的代码保持最新,而且不会在传输过程中丢失。github.com就是一个这样的优秀案例。
所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。感谢Ben同学指出这个特征。所以,经常会发生有些分支被遗漏的情况。
然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
目前为止这是跟SVN相比GIT缺少的最大的一个特征,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。
GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物, 包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态,SVN更适用于项目管理, Git更适用于代码管理。
首先打开公司内网部署GitLab的服务器,由于是内部员工使用,所以注册时候Username和Full name最好用自己的名字,这样管理员给用户分配项目权限的时候能够一目了然。
image.png
以管理员的身份登入gitlab,点击Settings,然后选择Members
image.png
可以通过输入名字选择要分配权限的小组成员,然后分配角色,选择权限有效时间,点击Add to Project就把人员拉近到项目中。GitLab的角色有以下四种:
image.png
可以通过HTTP和SSH去做克隆和提交代码,由于HTTP需要每次提交的时候输入邮箱号和密码,所以常用电脑上配置SSH,只要配置好了以后,下次提交的时候就方便了。SSH的方式主要是通过生成一个密钥和一个公钥,这个公钥可以使用在GitHub,GItLab,内网GitLab中。
大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。生成公钥的过程在所有操作系统上都差不多。首先你要确认一下本机是否已经有一个公钥。
SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看:
image.png
看一下有没有id_rsa和id_rsa.pub(或者是id_dsa和id_dsa.pub之类成对的文件),有 .pub 后缀的文件就是公钥,另一个文件则是密钥。
假如没有这些文件,甚至连 .ssh 目录都没有,可以用 ssh-keygen 来创建。该程序在 Linux/Mac 系统上由 SSH 包提供,而在 Windows 上则包含在GitBash里面里:
$ ssh-keygen -t rsa -C "6789346623@qq.com"
Creates a new ssh key using the provided email # Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa):
然后直接三次Enter键就可以了,完了之后大概是这样:
Your public key has been saved in /home/you/.ssh/id_rsa.pub.
The key fingerprint is: # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db 6789346623@qq.com
image.png
1、查看你生成的公钥:
vim id_rsa.pub
就可以查看到你的公钥
2、登陆GitLab账号,点击用户图像,然后 Settings -> 左栏点击 SSH keys
image.png
3、复制公钥内容,粘贴进“Key”文本区域内,取名字
4、点击Add Key
无需任何身份验证即可克隆公共项目。
它们还将在公共访问目录(/public)上列出。
任何登录的用户都将对该项目具有来宾权限。
公共项目登录和未登录GitLab的人都可以看到该项目并可以进行克隆下载,相当于公开。
任何登录的用户都可以克隆内部项目。
它们还将在登录用户的公共访问目录(/public)中列出。
任何登录的用户都将对该项目具有来宾权限。
内部项目只有登录GitLab的用户才会看到该项目和进行克隆,未登录用户是看不到该项目的
只有创建者和项目组员才可以访问
私有项目在创建之后,刚开始是只有创建者可以访问看到,其他用户是访问不了(就是看不到这个项目)。只有创建者或者有权限的组员添加了用户为该项目的组员,用户才会看到该项目并访问,具有较好的私有性。
1、首先把服务器上的代码克隆下来
git clone git@192.168.200.109:snailå/GitTest.git
刚克隆下来的是在master分支,可以通过命令行或者IDE工具查看当前分支
2、将所有有改动的全部添加到要提交的本地库中
git add .
也可以用git add 文件名进行单独文件的提交
3、将修改提交到本地库
git commit -a -m "提交添加的注释信息"
4、将本地库的commit推送到远程服务器
git push
image.png
拉取服务器上最新资源:
git pull
在不同的分支之间切换:git checkout 分支名
注意事项:切换分支的时候,如果当前分支有改动没有提交,是不能切换分支的,需要先把改动的内容提交或者放入缓存区
git checkout release/v1.0.0
合并分支:git merge 分支名
git merge feature/login
从当前分支merge feature/login分支的内容,如果有两个人修改了同一个文件的同一行,则会有冲突,可以在IDE工具上先解决当前冲突然后再提交。
首先申请账号,然后在自己的账号里面加入ssh key,让管理员开通项目的权限,然后就可以克隆项目,然后提交了。git的分支分类型分为以下几种:
作者:CodingSnail
链接:https://www.jianshu.com/p/bf7b09e234c8