jobcher

jobcher

欢迎关注

JOBCHER BLOG
ansible 命令
ansible 命令 Inventory:Ansible 管理的主机信息,包括 IP 地址、SSH 端口、账号、密码等 Modules:任务均有模块完成,也可以自定义模块,例如经常用的脚本。 Plugins:使用插件增加 Ansible 核心功能,自身提供了很多插件,也可以自定义插件。例如 connection 插件,用于连接目标主机。 Playbooks:“剧本”,模块化定义一系列任务,供外部统一调用。Ansible 核心功能。 编辑主机清单 1[webservers] 2192.168.0.20 ansible_ssh_user=root ansible_ssh_pass=’200271200’ 3192.168.0.21 ansible_ssh_user=root ansible_ssh_pass=’200271200’ 4192.168.0.22 ansible_ssh_user=root ansible_ssh_pass=’200271200’ 5 6[dbservers] 710.12.0.100 810.12.0.101 1sed -i "s/#host_key_checking = .*/host_key_checking = False/g" /etc/ansible/ansible.cfg 命令行 1ansible all -m ping 2ansible all -m shell -a "ls /root" -u root -k 常用模块 在目标主机执行 shell 命令。 shell 1- name: 将命令结果输出到指定文件 2 shell: somescript.sh >> somelog.txt 3- name: 切换目录执行命令 4 shell: 5 cmd: ls -l | grep log 6 chdir: somedir/ 7- name: 编写脚本 8 shell: | 9 if [ 0 -eq 0 ]; then 10 echo yes > /tmp/result 11 else 12 echo no > /tmp/result 13 fi 14 args: 15 executable: /bin/bash copy 将文件复制到远程主机。 1- name: 拷贝文件 2 copy: 3 src: /srv/myfiles/foo.
JOBCHER BLOG
Ant中如何添加第三方jar包依赖
Ant 中如何添加第三方 jar 包依赖 如果使用 ant 进行 java 项目的编译部署,那怎么添加第三方 jar 包的依赖呢?方法如下: 在项目的根目录下创建 lib 目录,并把所有需要的第三方 jar 包放到此目录下。 在 build.xml 中依次添加:path、property,并在 javac 中添加 classpath,添加 unjar。完整配置如下: 1<?xml version="1.0" encoding="UTF-8"?> 2<project name="MyTool" default="build" basedir="."> 3 <description>The ant project to build MyTool.</description> 4 <property name="srcDir" location="src" description="源文件的存放目录" /> 5 <property name="libDir" location="lib" description="第三方jar包的存放目录" /> 6 <property name="antDir" location="ant" description="编译后所有文件存放的根目录" /> 7 <property name="binDir" location="${antDir}/bin" description="编译后class文件的存放目录" /> 8 <property name="jarDir" location="${antDir}/jar" description="打包后jar包的存放目录" /> 9 <property name="jarFile" location="${jarDir}/MyTool.
JOBCHER BLOG
k8s本地联调神器kt-connect
k8s 本地联调神器 kt-connect 转载自 Bboysoul’sBlog k8s 集群内部的服务网络怎么和我们本地网络打通。kt-connect 就是用来解决这个问题的 使用方法 下载安装什么的都很简单,一个二进制而已 1https://github.com/alibaba/kt-connect 如果你安装好了,那么直接使用下面的命令使用就好了 1sudo ktctl connect 当然也可以指定配置文件 1sudo ktctl --kubeconfig ~/.kube/local connect 执行完成之后,这个集群的所有svc都可以直接在本地解析,当然直接 ping pod 的 ip 也是可以的
JOBCHER BLOG
OpenELB:让k8s私有环境对外暴露端口
OpenELB:云原生负载均衡器插件 OpenELB 是一个开源的云原生负载均衡器实现,可以在基于裸金属服务器、边缘以及虚拟化的 Kubernetes 环境中使用 LoadBalancer 类型的 Service 对外暴露服务。 在 Kubernetes 中安装 OpenELB 1kubectl apply -f https://raw.githubusercontent.com/openelb/openelb/master/deploy/openelb.yaml 查看状态 1kubectl get po -n openelb-system 使用 kubectl 删除 OpenELB 1kubectl delete -f https://raw.githubusercontent.com/openelb/openelb/master/deploy/openelb.yaml 1kubectl get ns 配置 OpenELB 1kubectl edit configmap kube-proxy -n kube-system 2 3# 修改 网卡 4ipvs: 5 strictARP: true 重启组件 1kubectl rollout restart daemonset kube-proxy -n kube-system 为 master1 节点添加一个 annotation 来指定网卡: 1kubectl annotate nodes master1 layer2.openelb.kubesphere.io/v1alpha1="192.168.0.2" 创建地址池 layer2-eip.yaml 1apiVersion: network.
JOBCHER BLOG
kubernetes ansible自动化部署
kubernetes ansible 自动化部署 服务器规划 角色 IP 组件 k8s-master1 10.12.12.15 kube-apiserver kube-controller-manager kube-scheduler etcd k8s-master2 10.12.12.17 kube-apiserver kube-controller-manager kube-scheduler etcd k8s-02 10.12.12.22 kubelet kube-proxy docker etcd k8s-03 10.12.12.21 kubelet kube-proxy docker etcd load Balancer(master) 10.12.12.15 10.12.12.23(VIP) nginx keepalived load Balancer(backup) 10.12.12.17 nginx keepalived 系统初始化 关闭 selinux,firewalld 关闭 swap 时间同步 写 hosts ssh 免密(可选) etcd 集群部署 生成 etcd 证书 部署三个 ETC 集群 查看集群状态 部署 Masterß 生成 apiserver 证书 部署 apiserver、controller-manager 和 scheduler 组件 启动 TLS Bootstrapping 部署 Node 安装 Docker 部署 Kubelet 和 kube-proxy 在 Master 上运行为新 Node 颁发证书 授权 apiserver 访问 kubelet 部署插件(准备好镜像) Flannel Web UI CoreDNS Ingress Controller Master 高可用 增加 Master 节点(与 Master1 一致) 部署 nginx 负载均衡器 Nginx+Keepalived 高可用 修改 Node 连接 VIP
JOBCHER BLOG
Git 规则
Git 飞行规则(Flight Rules) 编辑提交(editting commits) 我刚才提交了什么? 我的提交信息(commit message)写错了 我提交(commit)里的用户名和邮箱不对 我想从一个提交(commit)里移除一个文件 我想删除我的的最后一次提交(commit) 删除任意提交(commit) 我尝试推一个修正后的提交(amended commit)到远程,但是报错: 我意外的做了一次硬重置(hard reset),我想找回我的内容 暂存(Staging) 我需要把暂存的内容添加到上一次的提交(commit) 我想要暂存一个新文件的一部分,而不是这个文件的全部 我想把在一个文件里的变化(changes)加到两个提交(commit)里 我想把暂存的内容变成未暂存,把未暂存的内容暂存起来 未暂存(Unstaged)的内容 我想把未暂存的内容移动到一个新分支 我想把未暂存的内容移动到另一个已存在的分支 我想丢弃本地未提交的变化(uncommitted changes) 我想丢弃某些未暂存的内容 分支(Branches) 我从错误的分支拉取了内容,或把内容拉取到了错误的分支 我想扔掉本地的提交(commit),以便我的分支与远程的保持一致 我需要提交到一个新分支,但错误的提交到了 main 我想保留来自另外一个 ref-ish 的整个文件 我把几个提交(commit)提交到了同一个分支,而这些提交应该分布在不同的分支里 我想删除上游(upstream)分支被删除了的本地分支 我不小心删除了我的分支 我想删除一个分支 我想从别人正在工作的远程分支签出(checkout)一个分支 Rebasing 和合并(Merging) 我想撤销 rebase/merge 我已经 rebase 过, 但是我不想强推(force push) 我需要组合(combine)几个提交(commit) 安全合并(merging)策略 我需要将一个分支合并成一个提交(commit) 我只想组合(combine)未推的提交(unpushed commit) 检查是否分支上的所有提交(commit)都合并(merge)过了 交互式 rebase(interactive rebase)可能出现的问题 这个 rebase 编辑屏幕出现’noop’ 有冲突的情况 Stash 暂存所有改动 暂存指定文件 暂存时记录消息 使用某个指定暂存 暂存时保留未暂存的内容 杂项(Miscellaneous Objects) 克隆所有子模块 删除标签(tag) 恢复已删除标签(tag) 已删除补丁(patch) 跟踪文件(Tracking Files) 我只想改变一个文件名字的大小写,而不修改内容 我想从 Git 删除一个文件,但保留该文件 配置(Configuration) 我想给一些 Git 命令添加别名(alias) 我想缓存一个仓库(repository)的用户名和密码 我不知道我做错了些什么 其它资源(Other Resources) 书(Books) 教程(Tutorials) 脚本和工具(Scripts and Tools) GUI 客户端(GUI Clients) 编辑提交(editting commits) 我刚才提交了什么?
JOBCHER BLOG
shell 脚本(1)
shell 脚本之变量 变量替换 语法 说明 ${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除 ${变量名##匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除 ${变量名%匹配规则} 从变量尾部进行规则匹配,将符合最短的数据删除 ${变量名%%匹配规则} 从变量尾部进行规则匹配,将符合最长的数据删除 ${变量名/旧字符串/新字符串} 变量内容符合旧字符串则,则第一个旧字符串会被新字符串取代 ${变量名//旧字符串/新字符串} 变量内容符合旧字符串则,则全部的旧字符串会被新字符串取代 字符串处理 计算字符串长度 - 语法 说明 方法一 ${#string} 无 方法二 expr length “$string” string 有空格,则必须加双引号 获取子串在字符串中的索引位置 语法: expr index $string $substring 计算子串长度 语法: expr match $string substr 抽取子串 ${string:position} :从 string 中的 position 开始 ${string:position:length}:从 position 开始,匹配长度为 length ${string:-position}:从右边开始匹配 ${string:(position)}:从左边开始匹配 expr substr $string $position $length:从 position 开始,匹配长度为 length
JOBCHER BLOG
kubernetes 脚本快速安装
kubernetes 脚本快速安装 1、三台机器设置自己的 hostname(不能是 localhost) 1# 修改 hostname; k8s-01要变为自己的hostname 2hostnamectl set-hostname k8s-01 3# 设置 hostname 解析 4echo "127.0.0.1 $(hostname)" >> /etc/hosts 2、所有机器批量执行如下脚本 1#先在所有机器执行 vi k8s.sh 2# 进入编辑模式(输入i),把如下脚本复制 3# 所有机器给脚本权限 chmod +x k8s.sh 4#执行脚本 ./k8s.sh 1#/bin/sh 2 3#######################开始设置环境##################################### \n 4 5 6printf "##################正在配置所有基础环境信息################## \n" 7 8 9printf "##################关闭selinux################## \n" 10sed -i 's/enforcing/disabled/' /etc/selinux/config 11setenforce 0 12printf "##################关闭swap################## \n" 13swapoff -a 14sed -ri 's/.*swap.*/#&/' /etc/fstab 15 16printf "##################配置路由转发################## \n" 17cat <<EOF | sudo tee /etc/modules-load.
JOBCHER BLOG
Maven 安装编译
Maven 安装编译 Maven 就是专门为 Java 项目打造的管理和构建工具,它的主要功能有: 提供了一套标准化的项目结构; 提供了一套标准化的构建流程(编译,测试,打包,发布……); 提供了一套依赖管理机制。 默认结构: 1a-maven-project 2├── pom.xml 3├── src 4│ ├── main 5│ │ ├── java 6│ │ └── resources 7│ └── test 8│ ├── java 9│ └── resources 10└── target 项目的根目录a-maven-project是项目名, 它有一个项目描述文件pom.xml, 存放Java源码的目录是src/main/java, 存放资源文件的目录是src/main/resources, 存放测试源码的目录是src/test/java, 存放测试资源的目录是src/test/resources, 最后,所有编译、打包生成的文件都放在target目录里。 这些就是一个 Maven 项目的标准目录结构。 pom.xml 文件: 1<project ...> 2 <modelVersion>4.0.0</modelVersion> 3 <groupId>com.itranswarp.learnjava</groupId> 4 <artifactId>hello</artifactId> 5 <version>1.0</version> 6 <packaging>jar</packaging> 7 <properties> 8 ... 9 </properties> 10 <dependencies> 11 <dependency> 12 <groupId>commons-logging</groupId> 13 <artifactId>commons-logging</artifactId> 14 <version>1.
JOBCHER BLOG
Nodejs 安装编译
Nodejs 安装编译 Node.js 平台是在后端运行 JavaScript 代码,必须首先在本机安装 Node 环境。 安装 Node.js 安装 npm npm 其实是 Node.js 的包管理工具(package manager)。
JOBCHER BLOG
ruoyi-cloud docker部署
基础环境安装 1# docker 脚本安装 2curl -sSL https://get.daocloud.io/docker | sh 3 4#docker compose 脚本安装 5curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 6 7 8#可执行权限 9sudo chmod +x /usr/local/bin/docker-compose 10#创建软链: 11sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 12#测试是否安装成功 13docker-compose --version 下载安装 1git clone https://gitlab.sanjiang.com/it-group/ruoyi-cloud.git 编译 1cd ruoyi-cloud 2mvn clean install -DskipTests 复制 jar 包 1cd ./docker 2./copy.sh 部署 docker 1./deploy.sh base 2./deploy.sh modules 检查 docker 1docker ps -a | grep ruoyi 2docker logs -f ruoyi-auth 3docker logs -f ruoyi-gateway 4docker logs -f ruoyi-modules-system
JOBCHER BLOG
git版本控制
git 版本控制 版本回退 1.查看 git 提交历史 1#查看git提交历史 2git log 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数 1git log --pretty=oneline 2.回退到上一个版本 Git必须知道当前版本是哪个版本,在 Git 中,用HEAD表示当前版本,也就是最新的提交b534d741..(注意我的提交 ID 和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上 100 个版本写 100 个^比较容易数不过来,所以写成HEAD~100 1git reset --hard HEAD^ 最新的那个版本已经看不到了,可以顺着往上找,找到那个版本的 ID 1git reset --hard c8275ca Git 在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git 仅仅是把HEAD从指向update 1┌────┐ 2│HEAD│ 3└────┘ 4 │ 5 └──> ○ update 6 │ 7 ○ Create README.md 8 │ 9 ○ init 改为指向 Create README.md: 1┌────┐ 2│HEAD│ 3└────┘ 4 │ 5 │ ○ update 6 │ │ 7 └──> ○ Create README.