TureNAS系统在浪潮定制系统上的安装

无锡浪潮TrueNAS系统的安装 这一版的浪潮定制NAS机器比较特别,没有任何Raid卡,配了Avago的一块pcie sas直通卡:搏通9400卡 然后是定制机,整体4U的高度,满配是60块16T的大盘,主板在机箱侧面立着,2块小盘做系统。 由于机房限制,无法直接从本地访问10.18.30.97,导致无法将本地文件挂入idrac的cdrom,只能曲线救国,在172.18.31.2建立一个nfs share,把光盘文件放进去 到 idrac 的 Remote control , 再到Virtual media,配好nfs共享 ip: 172.18.31.2 path: /export/nfsshare 在remote image redirction中可以看到光盘文件,点击Start 然后重启,CDROM是第一启动媒介 开始安装,缺省会进入第一项进行安装 然后会报这个错,panic: AP #1 (PHY# 2) failed! 见了鬼了,唯一的地方可能是主板部分和博通卡冲突,我们重启进入BIOS,到SATA和sSATA的地方 把主板的SATA给关掉,禁止AHCI 同样关掉sSATA,也禁止AHCI 然后重启安装TrueNAS,这次就可以通过了 安装盘选择前两块SSD小盘,230G openbsd会自动将这两款小盘做成软Raid 提示会抹掉两块盘的所有数据 输入root的密码 选择Boot via BIOS 建立16G的swap空间 然后就开始安装,这里没什么动静,也没有进度条,会等很久 安装完成后会让你重启,然后出来配置界面 我们首先要配置第二项,Bonding端口 然后再配第一项的静态IP 再配第四项缺省路由 配完就http和https显示正确地址 输入地址:http://172.18.30.97 登录就完成安装了

2023年3月30日

GlusterFS的实际应用

特别注意 两台GFS主机172.18.30.18和172.18.30.36上面务必配置/etc/hosts,否则peer的时候会有问题 172.18.30.18 renhe-18-30-18 172.18.30.18 renhe-18-30-36 客户端安装 yum -y install epel-release 然后 yum install glusterfs-fuse 就可以了 挂载: mount.glusterfs 172.18.30.18:/borui-vol /data/br/nfs fstab 自动挂载 172.18.30.18:/borui-vol /data/br/nfs glusterfs defaults,_netdev,backupvolfile-server=172.18.30.36 0 0 在172.18.30.18上建立新卷,因为只有2个节点,就必须force了 gluster volume create test-zhichi-vol replica 2 transport tcp 172.18.30.18:/glusterfs/test-zhichi-vol 172.18.30.36:/glusterfs/test-zhichi-vol force 启动 gluster volume start test-zhichi-vol 查看一下 gluster volume info test-zhichi-vol 查看卷信息(禁止查看inode,太多了) gluster volume status test-zhichi-vol detail gluster volume status test-zhichi-vol clients gluster volume status test-zhichi-vol mem gluster volume status test-zhichi-vol fd gluster volume status test-zhichi-vol inode 开启限额 gluster volume quota test-zhichi-vol enable gluster volume quota test-zhichi-vol limit-usage / 50GB gluster volume quota test-zhichi-vol list 限制IP访问 例如允许172.18.31.*网段的主机访问rep-volume: ...

2023年3月30日

使用ipset来禁止国外的用户登录openvpn

突然来的个需求,要求屏蔽国外的用户登录公司的openvpn,防止滥用,搜了一下教程倒是真不少,问题不少都是要去下载那个无比大的ip地址库,好不容易找了一个可用的。 记录下来,备用,原理很简单,ipset建立一个china的hashset,不停添加条目,最后用iptalbes阻挡一下: #!/bin/sh ipset create china hash:net hashsize 10000 maxelem 1000000 ipset add china 1.0.1.0/24 ...... ipset add china 91.234.36.0/24 iptables -I INPUT -m set --match-set china src -p udp -m udp --dport 1194 -j ACCEPT iptables -A INPUT -p udp --dport 1194 -j DROP 相应脚本的下载: ipset-rules.txt

2023年3月29日

核心交换机的配置过程

换了公司,也搞起了桌面运维,配置交换机的过程记录一下,其实很简单,就是命令记不住。 拿到一台华为交换机,重新初始化后,配置如下: <HUAWEI>dis cur !Software Version V200R008C00SPC500 # sysname HUAWEI # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password irreversible-cipher %^%#7:.iL]+u"4\j8ZFhGeg/-m.&"^0}kMznjk%>;BaUDO/'6m\X\=V8JGY:W;i,%^%# local-user admin service-type http # interface Vlanif1 # interface MEth0/0/1 # interface GigabitEthernet0/0/1 # interface NULL0 # user-interface con 0 authentication-mode password set authentication password cipher $1a$~!;$-JF0-W$Z><1.F]<sF.R_NBj34CJ/JPe=/tZDMM(Ws3'9u%+$ user-interface vty 0 4 user-interface vty 16 20 # return 一、配名称 sysname BJ_FANGHENG_JIERU 二、配置登录用户 1、aaa local-user admin password irreversible-cipher abcdefg local-user admin privilege level 3 local-user admin service-type telnet terminal ssh 2、user-interface con 0 authentication-mode aaa 3、user-interface vty 0 4 authentication-mode aaa protocol inbound all 三、配置下联交换机端口 interface GigabitEthernet0/0/23 description == H3cSW --> 24 port link-type trunk port trunk allow-pass vlan 2 to 4094 四、配置上联交换机端口 interface GigabitEthernet0/0/24 description == RuijieRoute --> lan0 port link-type trunk port trunk allow-pass vlan 2 to 4094 五、配置vlan地址 vlan 11 vlan 100 vlan 11 interface Vlanif11 ip address 10.8.0.7 255.255.254.0 vlan 100 interface Vlanif100 ip address 192.168.10.7 255.255.255.0 六、配置缺省路由 ip route-static 0.0.0.0 0.0.0.0 10.8.0.1 七、批量配置端口 port-group group-member GigabitEthernet0/0/1 to GigabitEthernet0/0/23 port link-type access port default vlan 11 stp edged-port enable 八、lldp lldp enable 九、dhcp dhcp enable ip pool 11 gateway-list 10.8.0.1 network 10.8.0.0 mask 255.255.254.0 static-bind ip-address 10.8.0.4 mac-address 8005-88f1-fa62 dns-list 114.114.114.114 interface Vlanif11 description === Ke hu duan ip address 10.8.0.1 255.255.254.0 dhcp select global 十、telnet和ssh dsa local-key-pair create telnet server enable stelnet server enable ssh authentication-type default password 这样就完成了一台核心设备的简单配置 ...

2023年3月24日

Hubot集成企业钉钉

换了公司,现在的公司用的是钉钉,不是企业微信,那么 hubot 就得改接入钉钉了 前文回顾:Hubot集成企业微信+jenkins+ansible 不明白的可以先看那一篇,那么首先的步骤是一样的,同样要去钉钉开放平台,用管理员登录: https://open.dingtalk.com/ 登陆后,点击应用开发–>企业应用开发: ’ 然后应用开发,机器人,点击创建应用: 建好后,点击应用信息,可以看到应用凭证 我们记录下来 AppSecret,之后要用到 然后再点击开发管理,这里需要你把 hubot 的服务器地址给公布出去,需要有个公网地址 因为hubot是监听的8080端口,所以映射是 xxxx.ip:80 –> hubotip:8080 服务器出口 IP 的地方 , 需要在 hubot 的服务器上,curl http://ipinfo.io,得到地址,然后填上(我们的 ip 非常特殊,每一次访问都有可能会换个ip,所以只好把整段填写进去,而且把公网映射ip也填进去) 消息接收地址填上映射后的地址:https://bot.rendoumi.com/hubot/dingtalk/message/(用不用nginx加证书变https随具体情况定) 然后去hubot安装dingtalk插件,在hubot安装根目录运行 npm install hubot-dingtalk export HUBOT_DINGTALK_AUTH_TYPE=sign export HUBOT_DINGTALK_SECRET=xxxxxxxxxx export HUBOT_DINGTALK_MODE=1 ./bin/hubot -a dingtalk 然后我们去用浏览器访问 https://bot.rendoumi.com/hubot/dingtalk/message/,会返回这个 然后就可以了。至于把 hubot 做成服务,就参考上一篇文章,把jenkins和ansible都加上,做一个好用的机器人。

2023年3月1日

yearning集成进freeIPA进行统一认证

接上上一篇,Freeipa接完confluence,接下来是接入数据库上线软件Yearning. 先下结论:同样存在先有 Yearning 账户、然后才有的 FreeIPA LDAP 目录,这次要命了,因为 Yearning 不支持 LDAP 认证方式用户与已有用户进行合并!所以,等于ldap新建了一个用户,跟老用户的邮箱一模一样,但是是个 Newbee,没有权限,需要重新赋权。比较麻烦!希望之后能pr修改一下!!!! 连接属性如下: ldap地址:freeipa.bybon.cn:389 LDAP管理员DN:uid=manager,cn=users,cn=accounts,dc=bybon,dc=cn LDAP管理员密码:xxxxxx LDAP_Search Filter:(&(objectclass=inetorgperson)(memberOf=cn=confluence-users,cn=groups,cn=accounts,dc=bybon,dc=cn)(uid=%s)) LDAP_SCBASE:cn=users,cn=accounts,dc=bybon,dc=cn LDAP用户属性:{ "real_name": "displayName", "email": "mail", "department": "技术中心" } 解释一下: LDAP_Search Filter 指搜索用户时所用的filter,这里偷了个懒,按道理应该是独立建一个组yearning-users,懒得干了,复用confluence-users好了。admin组更懒得建,必须用freeipa的admins组 LDAP_SCBASE 指搜索用户的BASE DN LDAP用户属性指yearning中的属性与ldap属性之间的映射关系,department是没有对应的,也没有人会没事干建一个去吧。 截图如下:

2023年2月28日

kubernetes中用户rbac的建立

k8s里面建立一个用户,然后给特定权限,再做rolebinding的过程,给个标准的建立jenkins-admin的用户的过程: 简单来说,三步,ServiceAccout –> Role –> Rolebinding apiVersion: v1 kind: ServiceAccount metadata: name: jenkins-admin namespace: devops-tools --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: jenkins namespace: default labels: "app.kubernetes.io/name": 'jenkins' rules: - apiGroups: [""] resources: ["pods"] verbs: ["create","delete","get","list","patch","update","watch"] - apiGroups: [""] resources: ["pods/exec"] verbs: ["create","delete","get","list","patch","update","watch"] - apiGroups: [""] resources: ["pods/log"] verbs: ["get","list","watch"] - apiGroups: [""] resources: ["secrets"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: jenkins-role-binding namespace: default roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: jenkins subjects: - kind: ServiceAccount name: jenkins-admin namespace: default 资源的链接:https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/ ...

2023年2月22日

Gitlab集成进freeIPA进行统一认证

接上一篇,Freeipa接完confluence,接下来是接入Gitlab. 先下结论:同样道理,也是存在先有 Gitlab 账户、然后才有的 FreeIPA LDAP 目录,这也不要紧,因为 Gitlab 同样支持 LDAP 认证方式的用户与现有用户进行合并。 举个例子,如果我已经在 Gitlab 中创建了用户名为 zhangranrui、邮箱为 zhangranrui@rendoumi.com 的用户,那么我在 LDAP 目录中只需要把 mail 字段也写成 zhangranrui@rendoumi.com 即可被 Gitlab 识别成同一用户。或者说,我们可以在 Gitlab 中增加 LDAP 目录中的 mail 字段的邮箱(Gitlab 支持同一用户绑定多个邮箱),这样在 Gitlab 中使用 LDAP 认证的时候也会被视为同一用户。跟 Confluence 是一模一样的。 注意:这样改了之后,无论登录或是拉取代码,就只能使用LDAP的账号密码,不能使用旧的 GitLab Standard 的账号。 我们的 Gitlab 版本比价老11.1.0,所以改的是 gitlab.yml ldap: enabled: true servers: main: # 'main' is the GitLab 'provider ID' of this LDAP server label: 'LDAP' host: 'freeipa.bybon.cn' port: 389 uid: 'uid' encryption: 'plain' # "start_tls" or "simple_tls" or "plain" verify_certificates: false ca_file: '' ssl_version: '' bind_dn: 'uid=admin,cn=users,cn=accounts,dc=bybon,dc=cn' password: 'xxxxxx' timeout: 10 active_directory: false allow_username_or_email_login: false block_auto_created_users: false base: 'dc=bybon,dc=cn' user_filter: '(&(objectclass=inetorgperson)(memberOf=cn=gitlab-users,cn=groups,cn=accounts,dc=bybon,dc=cn))' attributes: username: ['uid'] email: ['mail'] name: 'displayName' first_name: 'givenName' last_name: 'sn' lowercase_usernames: false 新版本的话,按字段比较即可。注意上面,我是提前建立了一个 gitlab-users 的组,把用户先都放进组里,这样方便管理。 ...

2023年2月17日

Confluence集成进freeIPA进行统一认证

公司决定用统一用户管理系统,那必然是微软的 AD 和开源的 LDAP 二选一了 自然用 Freeipa 作为首选。 花时间仔细调研了一下,先说结论: 如果 confluence 已经有很多用户,那么对不起,这些用户的密码都必须通知到个人,强制进行修改,旧有的密码完全无法导出(除非一个一个人问出来)。 confluence 实际上是用了一个内置的目录软件来管理用户的,用户唯一存在的凭据就是邮箱。 confluence 支持同时从多个目录树中按照顺序来查询用户,查询到的结果会合并。举例来说,排第一的目录树是freeipa,排第二位的目录树是内置目录,两个目录树都有一个用户,两条记录的邮件是一致的,那么会在排第一的 freeipa 树中认证用户,但会把两个目录树中用户的信息拼接合并起来总体返回。 这样就明白了把,我们只用第一个 freeipa 目录树来认证用户,原有的组权限还是用第二个内置目录树中的信息,保持两棵树中用户的 mail 保持一致即可,步骤如下。 我们首先要提前在freeIPA里面建立两个组: confluence-administrators confluence-users 然后跑到 Confluence 里,用户目录,添加一个 freeipa 的目录服务放在前面 详细配置的参数如下: 配置如下: Server Settings: - Namel: freeipa - Directory Type: OpenLDAP - Server: example.com - Port: 389 - Use SLL: false - Username: uid=admin,cn=users,cn=accounts,dc=bybon,dc=cn - Password: <insert password here> LDAP Schema: - Base DN: dc=bybon,dc=cn - Additional User DN: cn=users,cn=accounts - Additional Group DN:cn=groups,cn=accounts LDAP Permissions: Select Read/Write Advanced Settings: Default User Schema Settings - User Object Class: inetorgperson - User Object Filter: (&(objectclass=inetorgperson)(memberOf=cn=confluence-users,cn=groups,cn=accounts,dc=bybon,dc=cn)) - User Name Attribute: uid - User Name RDN Attribute: uid - User First Name Attribute: giveName - User Last Name Attribute: sn - User Display Name Attribute: displayName - User Email Attribute: mail - User Password Attribute: userPassword - User Password Encryption: SHA - User Unique ID Attribute: uid Group Schema Settings - Group Object Class: groupofnames # all lowercase - Group Object Filter: (objectclass=groupofnames) # all lowercase - Group Name Attribute: cn - Group Description Attribute: description Membership Schema Settings - Group Members Attribute: member #lowercase - User Membership Attribute:memberOf 放全中文的图如下: ...

2023年2月16日

traefik自动签发并续费证书+端口转发

nginx和traefik都可以做ingress,在入口处做证书的卸载,并转发tcp、udp、https、http流量 nginx是比较通常的做法,traefik配置比较简单,尤其是配置自动续签的证书 wget https://github.com/traefik/traefik/releases/download/v2.4.8/traefik_v2.4.8_linux_amd64.tar.gz 解压释放出来traefik文件,建立目录/export/servers/traefik 结构如下: traefik.yml log: level: DEBUG api: insecure: false dashboard: true entryPoints: http: address: ":80" #http: # redirections: # entryPoint: # to: https # scheme: https https: address: ":443" certificatesResolvers: letsEncrypt: acme: storage: /export/servers/traefik/acme.json email: zhangranrui@rendoumi.com tlsChallenge: {} httpChallenge: entryPoint: http providers: file: directory: /export/servers/traefik/dynamic watch: true 上面我们定义了log的level为DEBUG,并且开放了dashboard 定义了2个入口,http和https,可以直接用中间件强制http跳转https 然后定义了letsEncrypt的证书机构 最后定义了动态监控 /export/servers/traefik/dynamic 目录,如果下面有增加文件会自动更新配置。 然后再dynamic目录下定义转发routes 注意命名文件,test7是域名,01是序列号,文件内容中svc的序列号最好跟文件名一致,如果多文件重复会导致配置不可用!!! test7-01.yml http: routers: https_01: rule: "Host(`test7.ddky.com`)" service: svc_01 tls: certresolver: letsEncrypt http: rule: "Host(`test7.ddky.com`)" service: svc_01 entryPoints: - http services: svc_01: loadBalancer: servers: - url: "http://172.16.8.1:80" test8-02.yml ...

2023年1月31日