不会运维的 iOS 开发不是好设计师。这个 Ansible Playbook 能快速配置 iOS 开发需要的服务,安装如 Gogs、GitLab、Countly、Jenkins、Ghost、Ajenti、Seafile 等常用服务。
作为一个 iOS 开发人员,会一些基础的运维技术能使工作流更加顺,并为创业团队节省不少运维成本。 这个 Ansible Playbook 的仓库,可以用来快速配置 iOS 开发需要的一些服务。 当然,如果经费充裕,直接使用优质的收费服务更省时省力。
因为精力有限,大部分配置只在 64bit Debian Jessie(Debian 8) 上跑通部署测试, 理论上 Debian Wheezy 和 Ubuntu 14.04 以上也能用。 请先阅读 Ansible 的入门文档,不然遇到问题可能会没有方向。 如果你用 Mac OS X,建议在 Dash 里安装 Ansible 的文档。
Docker
目前大部分服务都没有运行在 Docker 里。
理想的运行方式是每一个服务都以 Docker container 的形式运行,互不干扰。等有空了再改。
Gogs :443
用 Go 语言编写的 Git 服务,特点是功能精简和速度快,树莓派也能流畅运行。
我自己就在用,用的人比较少的话内存占用稳定在 100M 左右。
GitLab :80
知名的开源 Git 服务,特点是功能全面。
安装完成后默认用户名是
Countly Server :80
知名的开源统计服务,如果你不想用第三方服务,它是不错的选择。
Jenkins :8080
开源的持续集成服务,很多人用它来做自动编译打包 IPA 的事。
不过界面不好看,我个人更喜欢 Atlassian Bamboo。
Ghost :443
如果你想同时建一个 Blog 记录开发中的心得或者创业的艰辛,Ghost 是个不错的工具。
它比 Wordpress 更轻巧,皮肤也都非常简洁。
这个 role 使用 Caddy 提供了 HTTP2 支持,并自动生成 LetsEncrypt 的免费 SSL 证书。
默认会自动装上这些皮肤: ghostium、ghostrayder、ghostwriter、GhostScroll、Readium
NewRelic agent
懒人监控方案,先注册一个 NewRelic 帐号,所有服务器都运行这个 role,再装个 NewRelic iPhone 版,各种预警就有了。
缺点是 agent 占用内存比较夸张,个人的这些小服务其实没有必要使用。
到是可以装后面提到的 Uptime 或 Huginn 来实现简单的监控。
Uptime :8082
默认用户
Ajenti :8000
这是服务器管理工具,功能全,比较重。
如果喜欢把所有服务都装在一起的话,装上这个也不错。默认用户
Huginn :5000
算是 IFTTT 的 geek 版本,可以用来定制各种触发条件,可以自动完成很多事。
默认用户
haproxy
代理 Gmail,装完后设置本地的
本地用 Vagrant 测试会消耗很多时间,尤其是在网速不理想的情况下。并且,请确保你的电脑有至少 2G 的空闲内存。
Travis 设置了测试 playbook 的语法是否正确,以及
from https://github.com/lexrus/ios-dev-playbook
作为一个 iOS 开发人员,会一些基础的运维技术能使工作流更加顺,并为创业团队节省不少运维成本。 这个 Ansible Playbook 的仓库,可以用来快速配置 iOS 开发需要的一些服务。 当然,如果经费充裕,直接使用优质的收费服务更省时省力。
因为精力有限,大部分配置只在 64bit Debian Jessie(Debian 8) 上跑通部署测试, 理论上 Debian Wheezy 和 Ubuntu 14.04 以上也能用。 请先阅读 Ansible 的入门文档,不然遇到问题可能会没有方向。 如果你用 Mac OS X,建议在 Dash 里安装 Ansible 的文档。
服务列表
Docker rake docker
目前大部分服务都没有运行在 Docker 里。
理想的运行方式是每一个服务都以 Docker container 的形式运行,互不干扰。等有空了再改。
Gogs :443 rake gogs
用 Go 语言编写的 Git 服务,特点是功能精简和速度快,树莓派也能流畅运行。
我自己就在用,用的人比较少的话内存占用稳定在 100M 左右。
rake gogs
安装后默认开了注册功能,如果要禁用,运行 rake gogsdr
即可。
新版本升级后,再运行 rake gogs
和 rake gogsdr
可以自动完成升级。
这个 role 默认会用 le.sh 自动生成 LetsEncrypt 的 SSL 证书,
每隔 80 天自动更新证书。
如果不想用 SSL 可以加上 SSL=false
这个参数。
GitLab :80 rake gitlab
知名的开源 Git 服务,特点是功能全面。
安装完成后默认用户名是 root
, 密码为 5iveL!fe
。
GitLab 对内存有一定要求,建议使用最少 1G 内存的主机。
如果内存小于等于 512M 可以用 ansible-playbook 003_swapon.yml -l gitlab
把 swap 设置成内存的两倍,也能勉强运行 GitLab。
注意虽然 512M 内存的 VPS 也能撑住 5 人以下的小团队,
但是 clone 项目时会占用很多内存,通常运维会建议不要使用 swap,
所以还是使用内存多的机器装 GitLab 比较好。
另外,如果已经成功安装,再次运行 rake gitlab
可进行数据备份和程序升级。
手动操作可以看官方的说明。
Countly Server :80 rake countly
知名的开源统计服务,如果你不想用第三方服务,它是不错的选择。
Jenkins :8080 rake jenkins
开源的持续集成服务,很多人用它来做自动编译打包 IPA 的事。
不过界面不好看,我个人更喜欢 Atlassian Bamboo。
Ghost :443 rake ghost
如果你想同时建一个 Blog 记录开发中的心得或者创业的艰辛,Ghost 是个不错的工具。
它比 Wordpress 更轻巧,皮肤也都非常简洁。
这个 role 使用 Caddy 提供了 HTTP2 支持,并自动生成 LetsEncrypt 的免费 SSL 证书。
默认会自动装上这些皮肤: ghostium、ghostrayder、ghostwriter、GhostScroll、Readium
NewRelic agent rake newrelic
懒人监控方案,先注册一个 NewRelic 帐号,所有服务器都运行这个 role,再装个 NewRelic iPhone 版,各种预警就有了。
缺点是 agent 占用内存比较夸张,个人的这些小服务其实没有必要使用。
到是可以装后面提到的 Uptime 或 Huginn 来实现简单的监控。
Uptime :8082 rake uptime
默认用户 root
,密码 admin
。
非常轻巧的服务器可用率监控服务,监控小团队的服务可用率肯定是够了。
如果不想自己搭的话推荐用完全免费的 UptimeRobot 代替。
更全面的监控应该用
Munin /
Nagios /
Sensu 等工具实现。
Ajenti :8000 rake ajenti
这是服务器管理工具,功能全,比较重。
如果喜欢把所有服务都装在一起的话,装上这个也不错。默认用户 root
,密码 admin
。
Ajenti 强烈建议使用 SSL 连接,但是 Safari 访问非 443 端口使用自签证书的服务器会比较麻烦,所以我暂时禁用了,可以进管理界面打开。
不使用 SSL 有安全隐患,请避免在生产环境使用这样的配置。
另外,重签证书可以用 ajenti-ssl-gen hostname.com -f; service ajenti restart
;
Huginn :5000 rake huginn
算是 IFTTT 的 geek 版本,可以用来定制各种触发条件,可以自动完成很多事。
默认用户 admin
,密码 password
。S🀫🀫🀫🀫🀫🀫🀫🀫🀫s
此处打码一百字。COW
此处打码一百字。
haproxy rake haproxy
代理 Gmail,装完后设置本地的 /etc/hosts
,加上:__YOUR_SERVER_IP__ smtp.gmail.com
__YOUR_SERVER_IP__ pop.gmail.com
__YOUR_SERVER_IP__ imap.gmail.com
使用方法
通过 SSH 远程配置,通常是用 Mac 操作远程服务器
sudo pip install ansible docker-py
- 安装 Ansiblegit clone https://github.com/lexrus/ios-dev-playbook.git
- 下载项目cd ios-dev-playbook
- 进入目录cp ansible_hosts.ini{.example,}
- 复制 ansible_hosts.ini.example 到 ansible_hosts.ini,然后修改相应的服务器地址- 如果要备份这些配置,可以用
rake dropbox
,它会把重要的配置备份到~/Dropbox/.ios-dev-playbook
目录下 - 确保你的服务器可以用 SSH key 验证登录
- 安装相应的服务,如 GitLab:
rake gitlab
,更多命令用rake -T
列出 - 如果遇到问题可以试着用
rake deps
更新第三方 roles,用 Ansible Galaxy 更新依赖的 roles(.ansible_galaxy_dependencies) rake jessie
自动升级 Debian Wheezy 没有经过测试,不保证能成功
在当前主机上做本地配置,适合 Debian 或 Ubuntu 单机手动操作
sudo apt-get install ansible docker-py git python python-setuptools python-pip
sudo pip install ansible docker-py
- 安装 Ansiblegit clone https://github.com/lexrus/ios-dev-playbook.git
- 下载项目cd ios-dev-playbook
- 进入目录ansible-playbook 059_uptime.yml -i ansible_localhost.ini
- 安装相应的服务
注意事项
- 备份策略是: 等有空了再备份 @__@#
- 各个服务的使用方法这里就不赘述了,我在上面的列表里加了相应的链接;
- 端口都是 :80 的服务不能装在一起,再设置一个二级域名吧;
测试
测试需要 Vagrant,在本项目目录中rake test_ubuntu
就会拉一个 ubuntu/trusty64 的镜像试着跑大部分配置,测 Debian Jessie 请用 rake test_debian
。
如果你用的是 Mac OS X,推荐先装 Brew 和 Cask,然后运行 brew cask install vagrant virtualbox
。
Vagrant 测试的 roles 都写在 tests/vagrant_test.yml 里了。本地用 Vagrant 测试会消耗很多时间,尤其是在网速不理想的情况下。并且,请确保你的电脑有至少 2G 的空闲内存。
Travis 设置了测试 playbook 的语法是否正确,以及
001_common_utilities.yml
是否能顺利跑通。from https://github.com/lexrus/ios-dev-playbook
No comments:
Post a Comment