前言
工欲善其事,必先利其器。经过多次的重复配置 ubuntu 开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本。服务器实例:ubuntu 16.04,技术栈:shell,python。
1. 主机名
可以通过 修改主机名,不过最好是写入 /etc/hostname 文件,重启生效。为了让同一内网段的主机可以通过主机名访问,应在 /etc/hosts 中添加私有ip的解析。
2. 命令提示符
与命令提示符相关的环境变量是 PS1,初始值为:,各字符解释如下:
对于我来说我只需要 \u、\h、\W(\w 如果多进几个目录敲命令的体验就很差了),为了让命令行一目了然,最好给命令提示符加个颜色 ,颜色代码解释如下:
3. GNU Readline Library
Readline 的解释:从终端获取用户输入的字符流,辩认其中一些特定的字符序列,然后执行这些序列对应的函数或者宏。通俗一点讲就是绑定热键,比如在 bash 中默认按下 执行的是光标回到行首的命令。
此处我需要优化的是:1、 补全时忽略大小写;2、通过 查询已输入关键字的历史记录。
4. 历史记录
我需要:1、忽略重复的历史命令;2、保存更多的历史记录;3、忽略特定的历史记录;4、新建的终端同步 history。
5. Git 配置
想要流畅地使用 git,我认为有几点必须配置:
5.1 在命令提示符上显示 git 基本信息
安装完 git 之后,在 目录中会生成一个 文件:
打开,注释里面写了完整的操作步骤:
接下来还需赋值几个 git 环境变量让提示符显示更多 git 状态:
显示效果:
5.2 多账号配置
我有两个 git 账号,分别是 gitee 和 github,且分别拥有各自的 name、email 和 ssh-key,我需要:
Ⅰ、两个账号都可以使用各自的密钥对免密码访问
生成密钥对:
编辑
联通测试:
Ⅱ、 到达各自的仓库时自动切换用户名和邮箱
为了保证各仓库能够以正确的用户信息提交版本,需要取消全局的用户设置(我不理解为什么 global 中的用户信息要去覆盖各仓库的,反过来不是更好吗)。
实现自动切换能想到的方案有很多,我更倾向于去修改 ,在 函数末尾处增加一段逻辑:
顺带多提一下,git 默认忽略文件大小写,然而作为轻微的强迫症患者,我一定要和远程仓库保持完全一致:。
6. 密钥对管理
我可能会一次性创建n台云服务器组成一个个集群,每个集群中有一个 leader 和 n 个 follower,follower 只是提供计算能力,它应该把自己全权交给 leader,那么在 leader 上必须能够访问所有的
follower。这时候统一密钥对管理就非常有必要了,只需要一个私钥就可以访问所有的服务器,其实上一节提到的 git 密钥对也可以一起管理。本节展开的话其实就是一些脚本实现,所以统一交给下一节归纳。
7. 自动配置脚本编写
现在我需要思考的是如何使用一行命令来自动完成以上所有的配置。由于配置中涉及到一些私钥等铭感信息,所以脚本必须放置于 git 私有库中,但是 ubuntu 初始化的时候并没有安装 git,所以还需要一个公有库来放置初始脚本,职能是安装 git 和访问私有库。最终我需要实现执行以下一行代码就完成整个 ubuntu 环境的配置:
初始的入口脚本比较简单(安装 git,下载私有库并执行 python 脚本):
以下是 python 部分的结构:
代码比较简单,都是一些读写文件和结合系统命令的操作(步骤和说明都写在注释中了,不再赘述)。
:
(一些可以公用的函数单独抽离出来):
:
结语
终于剔除了一块疙瘩,以后一拿到服务器就可以愉快地玩耍了。当然,以上脚本只适合我个人的使用习惯,部分代码逻辑比较粗暴,各位看官参考就好,切勿直接使用。
领取专属 10元无门槛券
私享最新 技术干货