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 – 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…

WD Mycloud + Frp 内网穿透

Frp内网穿透这个真的是折腾了很久很久,WD MYycloud板块的各种帖子、Frp的Github中文文档、Issue页问答、各种技术博主的笔记、域名的配置等等,看的我晕头转向,期间还不断的被误导。总之折腾了很久总算把Frp内网穿透搞明白了,也稍微窥见了Linux的好玩之处。刚开始本来成功在路由器上配置了Frpc,看到说明页上写着必须使用虚拟内存,而陪伴我多年的U盘很争气的在格式化后光荣退伍。于是想到把Frpc运行到WD Mycloud上,看了那是云网站WD Mycloud板块非常含糊的教程后照猫画虎始终无法成功。最后看Frp的Github issue问答的时候才发现我从论坛附件下载的客户端文件版本太旧了。下载新版Frpc后成功穿透,然后开心的各种域名配置…… 服务端环境:CentOS7 + lnmp 1.4 客户端环境:WD Mycloud 顶级域名:需要有一个 一、Frps 服务端的安装 1、用Putty登陆到VPS,依次输入以下代码

  2、安装过程中需要手动输入一些参数 Please input frps bind_port [1-65535](Default Server Port: 7000): #输入frp提供服务的端口,用于服务器端和客户端通信 Please input frps dashboard_port [1-65535](Default dashboard_port: 7500): #输入frp的控制台服务端口,用于查看frp工作状态 Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80): #输入frp进行http穿透的http服务端口 Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): Read more…

nginx通过传参做动态代理

nginx通过传参做动态代理:可以访问http://172.20.47.38/console/?host=172.20.47.11, 来直接代理到gotty的172.20.47.11:50000 的websocket

  可以将参数进行base64加密, 如:

然后通过访问http://172.20.47.38/console/?host=MTcyLjIwLjQ3LjM4 来访问gotty: 参考: http://man.hubwiz.com/docset/OpenResty.docset/Contents/Resources/Documents/set-misc-nginx-module.html#set_unescape_uri nginx要添加set-misc-nginx-module模块, 具体安装方式如下:

配置文件如下, 逻辑为: 第一次访问时, $uri是/console/ 则进行set_decode_base64解码,设置cookie 然后再访问几个js文件, 匹配.js, js再调用ws

      —- 旧的请求根目录版:

 

容器集成sftp服务

有个需求, 需要用户在调试时能方便地将文件拷贝到容器里, 需要做个带ftp功能的容器, 参考了: https://github.com/rlesouef/alpine-sftp 整个工程目录结构:

其中download为各文件下载目录 拿tomcat来作例: 配置文件config_x86_online.yml:

  也可以定义arm64架构的config来构建:

  首先Dockerfile, 下面是Dockerfile模板: base_alpine.j2

  tomcat.j2

  sftp-entrypoint.sh改了一下, 把后面启动sshd的删除了, 放到了supervisor管理, 另外增加了传环境变量来支持进行多目录挂载, 比如传: -e “SFTP=sftp:sftp:1001:100:/usr/local/tomcat,tomcat;/etc/supervisor.d,supervisor.d” 可以将/usr/local/tomcat挂载到/home/sftp/tomcat 也可将/etc/supervisor.d挂载到/home/sftp/supervisor.d

运行用户自定义的脚本bindmount.sh

  总的entrypoint.sh:

  总构建脚本build.py:

  后期可以基于base-alpine.j2来灵活定制, 如nginx.j2模板

  node.j2:

  最后执行命令构建:python Read more…

在arm64机器上快速搭建openvpn

由于测试需要直接通过内网上华为云测试, 需要搭建vpn进行访问, 在arm64机器上搭建方法如下: 下载openvpn aarch64架构的rpm包:

yum安装时会报pkcs11找不着, 所以下载此包:

安装:

下载一键配置脚本:

在运行脚本之前, 需要先创建目录:

server.conf配置:

  配置防火墙:

  打开内核转发: net.ipv4.ip_forward = 1   也可以配置udp和tcp都监听, 方法如下:

   

KataContainer 实践

Kata container 简介 Kata Container 是两个现有的开源项目合并:Intel Clear Containers和Hyper runV。 Intel Clear Container项目的目标是通过英特尔®虚拟化技术(VT)解决容器内部的安全问题,并且能够将容器作为轻量级虚拟机(VM)启动,提供了一个可选的运行时间,专注于性能(<100ms启动时间),可与Kubernetes 和Docker 等常用容器环境互操作。英特尔®Clear Container表明,安全性和性能不必是一个折衷,将硬件隔离的安全性与容器的性能可以兼得。 hyper runV优先于技术无关支持许多不同的CPU架构和管理程序。 容器安全 使用Docker轻量级的容器时,最大的问题就是会碰到安全性的问题,其中几个不同的容器可以互相的进行攻击,如果把这个内核给攻掉了,其他所有容器都会崩溃。如果使用KVM等虚拟化技术,会完美解决安全性的问题,但响应的性能会受到一定的影响。 单单就Docker来说,安全性可以概括为两点: 不会对主机造成影响 不会对其他容器造成影响 所以安全性问题90%以上可以归结为隔离性问题。而Docker的安全问题本质上就是容器技术的安全性问题,这包括共用内核问题以及Namespace还不够完善的限制: /proc、/sys等未完全隔离 Top, free, iostat等命令展示的信息未隔离 Root用户未隔离 /dev设备未隔离 内核模块未隔离 SELinux、time、syslog等所有现有Namespace之外的信息都未隔离 当然,镜像本身不安全也会导致安全性问题。 kata 隔离技术 我们都知道 Docker 等一类的容器使用 Cgroup 进行资源限制,使用 linux 的 namespace 机制对容器进行隔离,但在实际运行中,仍是由宿主机向容器直接提供网络、存储、计算等资源,虽然性能损失很小,但存在一定的安全问题。 Kata Containers是一个开放源代码社区,致力于通过轻量级虚拟机来构建安全的容器运行时,这些虚拟机的感觉和性能类似于容器,但是使用硬件虚拟化技术作为第二防御层,可以提供更强的工作负载隔离。 kata 底层实现了Intel Clear Containers的最佳部分与Hyper.sh RunV合并,并进行了扩展,以包括对主要架构的支持,包括x86_64之外的AMD64,ARM,IBM Read more…