jenkins小试

在看了某公司的质量管理之后,决定自己尝试下jenkins的持续集成功能。

参考资料是《Jenkins: The Definition Guide》,这本书第一章提到了持续集成的七个阶段,很有借鉴意义。

以下jenkins的安装配置和使用参照第二章。个人使用jenkins的版本为1.55,如有和书本或者和我操作不一致的请参照你的版本。
个人使用的测试工程是 https://github.com/xnnyygn/attic ,书本中提到的game of life下载太慢而且构建不成功,就换了个自己的工程。

Read More

使用puppet配置本网站

以下只是一个示例,描述LNMP使用puppet配置的大致方案,里面的用户名和密码不是真实数据。

LNMP主要包含nginx,mysql,php和网站(site,这里是blog)模块。文件结构如下:

Read More

自制vagrant box的优化

前一篇讲到自制vagrant box,本篇来讲一些优化的方法。

启动速度

box的速度受原来的虚拟机启动的影响。
我在安装debian的虚拟机完之后发现grub默认有5秒的选择时间,这可以通过修改/etc/default/grub种的GRUB_TIMEOUT为0来取消,注意修改完之后执行update-grub应用变更。
第二是启动时的MTA,据说这个邮件相关的东西会进行DNS查询所以速度比较慢。一般情况下不需要邮件,所以可以安装rcconf取消exim的服务,这样速度就快很多了。

SSH连接速度

我的box在没有优化时连接会卡在 debug1: SSH2_MSG_SERVICE_ACCEPT received 上(通过ssh -v 查看调试信息)。因为之后的Authentications that can continue 没有GSSAPI什么的,应该和GSSAPI无关。后来查到服务器端sshd(/etc/ssh/sshd_config)可能需要配置UseDNS=no,实际配置并重启服务后确实解决问题了。

顺便说一句,macosx连接ssh时可能会碰到locale的问题。这个问题很可能不是由服务器端引起的,注意本地的/etc/ssh_config,把SendEnv LANG LC_* 注释掉基本就可以了。

常用程序

因为是自制的,为了方便,自己复制了一份vim的配置,安装了默认没有的curl、tree等等。

至此,自制的vagrant box应该比原先的要好用一些,特别是启动和连接速度上。

自制vagrant base box

最近在学习puppet,自然而然地想到使用vagrant配置一些虚拟机练手。默认的vagrant的box大多都是带puppet,但是很神奇的是没有/etc/puppet这个目录,估计不是使用类似apt-get的方式安装的。解决方法之一是使用人家未安装puppet的base box,比如这里有一个列表。个人比较习惯ubuntu/debian的环境,所以试着找了几个相关的base box,但是不是很满意。另外还有一个解决方法,就是自己做base box。

虽然vagrant的文档上说不是很推荐自制base box,因为比较耗时间。但是如果你对系统管理比较熟悉的话,亲手做一下也不是特别麻烦。我参考这篇文章自己尝试做了一个基于debian-7.3.0-i386,通过aptitude安装了puppet的base box。

首先虚拟机自身的配置,内存设定不要太大,动态分配的空间不要太小,还有大部分时候音频和USB是没有用的。
理论上vagrant的base box和普通的虚拟机映射文件区别不大,只是安装系统的时候有几个地方需要注意:

  • root password: vagrant
  • 附加的用户名和密码 vagrant, vagrant
  • hostname: vagrant
  • 只安装必须的软件,大部分时候桌面环境是不需要的

安装完之后,需要增加一个admin组,把vagrant用户加入admin组,并且修改/etc/sudoers文件允许admin组用户执行sudo时不输入密码。
默认debian是没有sudo的,需要用aptitude安装,安装完之后才有/etc/sudoers这个文件。
最后aptitude安装puppet,清理一些东西之后就可以用vagrant做base box了。

做完之后加入vagrant的box列表,自己尝试启动一个,如果vagrant up成功就说明可以了。