Ansible 的开发工具
在开始撰写 Ansible Playbooks 前,让冻仁先来介绍平日会用到的开发工具和相关技巧。
冻仁在「Ansible 如何操作」一文时早有提到 Playbooks 其实是使用 YAML 的语法在撰写,虽说我们只要有纯文字编辑器就可以进行开发,但冻仁还是会借由些自动补齐 (Auto-complete)、缩排提示、语法 (Syntax) 高亮 (Highlighting) 和检查 (Check) 等扩充套件工具来补助。
纯文字编辑器 (Text Editor)
Vim
Vim 是冻仁多年来主要使用的文字编辑器,不管是编写程式、文件还是设定档都是一套打天下,而现在也用它来开发 Playbooks。冻仁自己除了会在 Terminal 使用 Vim 之外,还会额外安装 GVim (GNU/Linux, Windows) 和 MacVim (macOS) 来使用 Vim。
▲ 以上为使用 MacVim 撰写 Playbooks 的 demo,其 colorscheme 为 Tomorrow Night Eighties。
- ag.vim:在 Vim 里跑 ag 的套件。
- ansible-vim:支持 Ansible 档案 syntax highlighting 的套件。
- ctrlp.vim:模糊搜寻档案的套件。
- dash.vim:让 Vim 整合使用 Dash.app 的套件,但只支持 macOS。
- EnhCommentify.vim:可快速对多行注解和反注解的套件。
- indentLine:使用垂直线显示缩排提示的套件。
- neobundle.vim:Vim 的套件管理员,可参考冻仁 3 年前写过的「12. Vim 套件管理 - NeoBundle | 完全用 GNU/Linux 工作」一文。
- nerdtree:在 Vim 里使用分割视窗开启档案管理员的套件。
- syntastic:支持多种语言的程式码检查套件,可另外用
pip
安装 ansible-lint 来检查 syntax 和 style。 - vim-gitgutter:在 Vim 里观看 git diff 还有新增修改等状态的套件。
- Vim-Jinja2-Syntax:支持 Jinja2 档案语法高亮的套件。
- YouCompleteMe:自动补齐文字的套件。
- zeavim.vim:让 Vim 整合使用 Zeal 的套件。
Syntastic
要让 Syntastic 可以完整支持 Ansible,我们还需安装 ansible-vim 和 ansible-lint 才行。
使用 pip 安装 ansible-lint。
$ sudo pip install ansible-lint
使用 NeoBundle 安装 Syntastic 和 ansible-vim,并调整设定。
$ vi ~/.vimrc ... " ansible-vim NeoBundle 'pearofducks/ansible-vim' " Syntastic NeoBundle 'scrooloose/syntastic' let g:syntastic_enable_highlighting = 1 let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* " ignore files of Ansible Roles. let g:syntastic_ignore_files = ['\m^roles/']
Syntastic 的细部设定可从 GitHub 上找到,特别要提一下的是上面多了停止检查
roles/
目录的设定,在冻仁的习惯里 Roles 大多会另外维护,这部份在再往后的章节才会多加说明。如只想用 Syntastic 来检查语法错误 (syntax error) 而不想检查 style 的话,可把 style 的部份关掉。
let g:syntastic_quiet_messages = { "type": "style" }
MacDown
MacDown 是 macOS 上 open source 的 Markdown 文字编辑器,冻仁会在撰写 README.md
时会用到,但近来发现 Livedown 这个工具后,就比较常用 Vim 在写 Markdown 文件了。
题外话,冻仁连现在这篇文章都是用 Vim + Livedown 在写的呢!
Atom
Atom 是 GitHub 释出的 open source 文字编辑器,业界也有不少使用者,冻仁虽不常使用,但它的自动补齐功能非常之强大,若本身没有在使用 Vim,不妨可以用它来开发 Playbooks。
▲ 以上为使用 Atom 撰写 Playbooks 的 demo,其 UI Theme 为 One Dark,而 Syntax Theme 为 Tomorrow Night Eighties。
- ansible-snippets:Snippets for Ansible.
- autocomplete-ansible:Ansible 自动补齐的套件。
- Linter-Ansible-Linting:检查 Ansible 语法的套件,需手动使用
pip
安裝 ansible-lint。 - dash:让 Atom 整合使用 Dash.app 的套件,但只支持 macOS。
Terminal (終端機)
在 GNU/Linux 和 macOS 上都已內建 terminal,但冻仁较惯用以下三个 terminal emulator。
- iTerm2:macOS 上的 Terminal 不二选择,为了要相容 Terminator 的习惯,冻仁还下了不少功夫调整。
- Terminator:GNU/Linux 上支持画面分割的 Terminator,是个比 Gnome Terminal 顺手的工具。
- rxvt-unicode:GNU/Linux 上极轻量的 Terminal。
虚拟环境 (Virtual Environment)
- Docker:冻仁曾在「Ansible 用 Docker 练习 Ansible」一章提过,在此就不多加说明了。
- Vagrant:冻仁主要开发 Playbook 的环境,曾在「Ansible 用Vagrant练习Ansible」一章提起过。
API 文件浏览器 (API Documentation Browser)
Ansible 是 2012 才开始的专案,可 Module 的总数已经高达 836 之多,虽说各个 Module 的使用文件在官网上都查的到,但冻仁还是习惯在本机存一份离线版以备不时之需。
Dash:macOS 上查询、自动更新 API 文件的工具,其 license 为 US$ 24.99。
Zeal:open source 版的 Dash,支持 GNU/Linux 和 Windows。
- DevDocs:网页版的 Zeal。
- LovelyDocs:Android 上类似 Dash 的离线 API 文件浏览器。 1
其它
Alfred 3:macOS 上的快捷搜神兵,在此冻仁拿它整合 Dash 以快速搜寻 Ansible 文件。
Git:版本控制系統 (Version Control System),用来纪录、追踪 playbooks 版本的工具,这对 Infrastructure as Code 而言是必不可缺的。
相关连结
- YAML Syntax | Ansible Documentation
- How to use Syntastic plugin for Vim | Code Yarns
- VIM + Syntastic: how to disable the checker? | Stack Overflow
- chusiang/vimrc | GitHub
- 推荐两款很安逸的离线 API 文档查询工具 Dash 和 Zeal | 每日头条
1. LovelyDocs 是冻仁 2016/12/24 在 Galaxy Note 3 上逛 Google Play 时找到的 Dash like Apps,其 release 日期为 2016/11/23。 ↩