docker和harbor启动失败解决

今天启动harbor时启动失败, 有几个问题, 记录一下: 重启docker,报错: msg=”Error starting daemon: layer does not exist” 解决:只能是清空docker数据目录了,实际上官方还提供了一个略微安全的删除脚本:

将该脚本保存到本地后运行sh fix.sh /data/docker,清空/data/docker目录,重启docker服务 docker-compose启动harbor, harbor-log启动失败 Changing password for root. sudo: unable to change expired password: Authentication token manipulation error sudo: Account or password is expired, reset your password and try again 解决: 参考:https://kb.vmware.com/s/article/79497 重新拉取镜像:docker pull goharbor/harbor-log:v1.10.3 修改配置文件,重启成功 Read more…

CentOS 7 上使用Certbot申请通配符证书

在CentOS7上安装Certbot有三种方式: 使用Certbot官方提供的对应平台的RPM包安装 使用Certbot官方的提供的certbot-auto安装 使用pip安装Certbot,因为Certbot是Python程序 本文使用虚拟环境,使用pip安装Certbot 创建虚拟环境:可参考https://meaninglive.com/2020/06/15/%E5%88%9B%E5%BB%BA%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83-ansible-python3-and-virtualenvs-on-centos-and-rhel/ 创建所需环境:

用如下命令申请证书 注意替换成自己的域名;执行该命令时不依赖nginx:

介绍下相关参数: certonly,表示安装模式,Certbot 有安装模式和验证模式两种类型的插件。 –manual 表示手动安装插件,Certbot 有很多插件,不同的插件都可以申请证书,用户可以根据需要自行选择 -d 为那些主机申请证书,如果是通配符,输入 *.devapi.haoshiqi.net(可以替换为你自己的域名) –preferred-challenges dns,使用 DNS 方式校验域名所有权 –server,Let’s Encrypt ACME v2 版本使用的服务器不同于 v1 版本,需要显示指定。 输入应急邮箱,证书到期前会有邮件提示 如果想跳过输入邮箱的步骤,可在申请命令后面加上:

之后出现如下提示:要公开记录申请该证书的IP地址,是否同意?不同意就无法继续。 同意之后,出现如下提示,第一个“Press Enter to Continue”处直接回车,第二个“Press Enter to Continue”不要按回车:

为DNS解析增加TXT记录 进入自己域名的DNS记录管理页面,增加两条TXT记录,多数情况下,仅需在域名(Name)处填入_acme-challenge,在内容(Target)处填入上一步Certbot生成的内容即可(记得填写两个,多个文本记录之间以换行符(Enter键)分隔),不同DNS提供商处可能会略有不同,根据实际情况修改, 如果是www.name.com的域名的话, 就分别写两条相同主机名的记录, 填写不同的记录 稍等片刻,等TXT记录解析生效。查看是否生效的命令和生效后的查询结果如下: host -t Read more…

自签名证书详解

总结下来,其实生成证书就两句话:

  ———————————————- 有一个shell脚本来自动生成证书:

另一个脚本:

  参考:https://www.fullstackmemo.com/2018/05/10/openssl-gen-https-self-signed-cer/ nginx配置:

  —————证书知识补充——————————- 自签名证书 + Nginx 实现 HTTP 升级 HTTPS 很多内网平台在开发时候并没有考虑 HTTPS,想要从 HTTP 升级到 HTTPS 一般有两种方法:一种是更新所有相关前后端代码;另一种是基本不改变代码,用 Nginx 把 HTTPS 反向代理到 HTTP 接口。第一种方法工作量有点大,本文介绍下第二种方法,当然首先要做的是生成自签名证书。 准备工作 内网 环境受影响的是 软件安装升级 和 证书申请,所以需要 制作本地 yum 和 自签名证书,自签名证书稍后讲,制作本地 yum 库可参考链接内容, HTTPS 和 CA 基础知识 查看这里 。 制作本地 yum 库,为了自动处理软件之间的依赖关系,一般都会用 yum 等软件包管理器来安装更新软件,默认 yum 是从互联网获取各种软件包的,内网环境就需要制作本地 yum Read more…

内网一键生成 LetsEncrypt HTTPS证书

HTTPS当前越来越重要,所以经常会有公司去花钱买,我们也一样,有时候确实需要https,但是收费的用不起,所以打起了免费的主义。 LetsEncrypt是不错的选择,但是我们如果在内网该如何克服呢,没错,使用ngrok。 一键生成。 ngrok是在内网用户可以获得公网访问的一个非常棒的软件。 找一台有公网地址的机器 我们找到了假设是公网A 找一个域名,用于传输流量 我们找到了,假设是ops.ac.cn,注意,ac.cn是域名哦,虽然是二级域名,但是ac.cn是中科院相关的域名机构。 而且我们要设置 泛域名 A记录到 公网A 搭建ngrok 如下脚本一气呵成, 胆儿大的可以直接试试。最终的目录是在/usr/local/ngrok下面

  ngrok服务启动

客户端连接

  ngrok出现”bad certificate”的原因: 1. 看准了, server_address居然是直接使用的主域名, 2. 编译出来的ngrok程序一定是使用和server相同的证书产生的。如果server编译出来的在本地运行的时候出现“segment fault“,那么可以尝试着将/usr/local/ngrok放到本地,然后运行编译客户端的几行代码重新编译即可。 3. 客户端启动的配置文件中,trust_host_root_certs选项,除非你的证书是第三方的,否则就乖乖的使用false吧 ssl脚本执行目录:/root/ssl/ www目录: /root/www/challenges , python -m SimpleHTTPServer 80 sendemail放置地方:/root/ssl/sendemail HTTP服务器准备 如果胆儿大,直接执行如下的内容即可

生成的时候会要求输入一些东西,比如国家,省会,城市,公司名称,common name最重要,这个就是域名哦。 生成完成后,会自动打包发送邮件。 转自: https://blog.csdn.net/vbaspdelphi/article/details/53185943 可参考:https://learnku.com/articles/19999

How To Setup DNS Slave Auto Configuration Using Virtualmin/Webmin

实现步骤 由于bind主从集群安装完成后, 用webmin管理的话, 在新创建主区域后, 无法自动同步到从节点, 现在找到解决办法了 用Virtualmin去做主dns,去管理slave dns 在Post-Installation Wizard界面配置主从节点信息 在server index里将从节点加入, 用户名密码可以用webmin的主帐号 admin 在bind dns管理里在cluster slave servers里   加入dns slave cluster改变的文件还是蛮多的: 改变文件: /etc/webmin/virtual-server/config /etc/webmin/bind8/config /etc/webmin/servers/1592326172.serv /etc/named.rfc1912.zones  /etc/named.conf 所以最好调cgi接口去做改动 完了以后, 就可以主从自动同步了 其中修改完的virtual-server/config文件是这样的:

ansible-playbook实现 ansible-playbook是这样写的: bind.yml: 其中配置virtual server时, 一开始本来想调用uri,但是发现步骤太多麻烦而不生效,后来就直接用模板来做了

templates/virtual-server-config.j2模板:

defaults/main.yml

    参考以下文章: Introduction This tutorial will Read more…

创建虚拟环境: Ansible, Python3, and Virtualenvs on CentOS and RHEL and MacOS

要为ansible运行创建一个最新的虚拟环境, 以下是步骤: 下载最新的python3.8.3安装包:

解压:

创建虚拟环境目录: mkdir /root/.python_env 编译安装python

配置一下pip国内源, 以增加安装速度

安装virtualenvwrapper

安装过程中报错: ImportError: No module named ‘_ctypes’, 解决方法是(参考https://stackoverflow.com/questions/27022373/python3-importerror-no-module-named-ctypes-when-using-value-from-module-mul):

然后重新编译安装python3 定义环境变量

  创建ansible虚拟环境:

  The prompt change tells us we’ve successfully made, and activated, our first python 3 virtualenv. Validate it is configured as Read more…

ansible sysctl模块使用

修改系统内核参数,可以使用ansible sysctl模块来做批量修改:

测试发现, 运行很慢, 基本一条一秒, 要是这样, 还不如直接拷贝过去算了, 此模块适合修改条目比较少的选项

批量插入/替换整段代码到指定位置

需求是用ansible来修改nginx配置文件,添加代理gotty打开终端的逻辑,如下:

  map.txt:

location.txt:

注意: 需要插入/替换的新内容:map.txt和location.txt 开始和结束的匹配字段也要写上去(Bstr和Estr)

ansible安装k3s

一, ansible安装k3s集群 下载ansible安装k3s脚本: ansible-galaxy install xanmanning.k3s ansible role目录结构: ├── hosts.ini ├── roles │   ├── k3s │   │   ├── defaults │   │   │   └── main.yml │   │   ├── files │   │   │   ├── docker │   │   │   │   ├── bin │   │   │   │   │   ├── containerd │   │   │   │   Read more…

ansible – Appending To Lists And Dictionaries

今天在整理ansible安装k3s时,遇到了个问题,想法是在安装过程中对node能打多个label,  如: 定义hosts.ini

  其中k3s.service.j2模块中的定义如下:

  而生成的k3s.service应是这个结果:

  可以看到, 应该给node打两个label, 经反复尝试,终于生成了, 下面是我的k3s.yml:

  定义了: k3s_node_labels: “{{ k3s_node_labels|default([]) + [{‘node.kubernetes.io/’+item: ”}] }}” 意思是定义一个列表k3s_node_labels,将with_items中的变量append到列表中, 结果是这样:

  除了用+号, 也可以用union([item])   而如果这样定义的话: k3s_node_labels: “{{ k3s_node_labels|default([]) | combine({‘node.kubernetes.io/’+item: ”}) }}” 或 k3s_node_labels: “{{ k3s_node_labels|default({}) | combine({‘node.kubernetes.io/’+item: ”}) }}” 都将会这种结果:

  Read more…