Deprecation of tags= in include

碰到這個訊息:

[DEPRECATION WARNING]: You should not specify tags in the include parameters. All tags should be specified using the task-level option. This feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

這是因為這樣寫:

- include: setup.yml tags=myrole,setup
- include: myrole.yml tags=myrole

論壇有人問,開發團隊回答說,建議的作法是把 tags 拿下來,不要放在 include: xxx 的後面,也就是:

- include: setup.yml
  tags=myrole,setup
- include: myrole.yml
  tags=myrole

Automate Django createsuperuser in Ansible

Ansible 有個 django_manage 模組,可以很方便的執行 django 裡的 manage.py,但是受限於 createsuperuser 的關係,並沒辦法在建立 superuser 的同時,一併設定密碼。

一般網路上的解決方法是自己寫個小 python 腳本 (可以看這篇 How to automate createsuperuser on django? ),丟給 shell 去執行。我是想到可以利用 manage.py 提供的 changepassword 並搭配 expect 來做,大致上是這樣子:

另外也做了避免重複建 superuser 的機制。

Ansible notify

notify 很方便,可以先不執行 task,等到都執行完了才執行 handler 裡的 task。

但我遇到明明有 notify ,handler 裡的 task 卻沒有執行到,試了很久,找了好久才知道,必須 task 的狀態有改變的時候才會 notify ,而 ansible 的每個 task 的狀態並不是都會改變的,例如 ansible 發現檔案跟要變更的一致就不會改變狀態。

如果要強制改變,可以加上 changed_when: true ,這樣在執行完 task 時,永遠都把狀態設定為改變,也就會 notify 了。

- name: Install nginx configuration
  template: src=nginx.conf.j2 dest=/etc/nginx/sites-enabled/default
  notify:
    - reload nginx
  changed_when: true

Swift 2.2

今天網路上除了 PHP 7 釋出的消息外,就是 Apple 開放 Swift 2.2 源碼的消息了。

上 Swift.org 看,現在已經可以安裝在 Ubuntu 上,就寫了一個簡單的腳本來安裝。

執行完會安裝到 /opt/swift-2.2 下,PATH 需要自己加。

中文的學習手冊可以看 The Swift Programming Language中文版

這篇則是知名開發者 zonble 的心得分享,但要注意的是,這篇心得分享文是在 Swift 剛剛推出的時候所寫的,與現在可能有不小的差距:Swift

關於接下來幾個月的變化可以參考 Apple 釋出的計劃表:https://github.com/apple/swift-evolution

Github ATOM

Github 推的編輯工具,還蠻好用,跟 Sublime Text 比起來,至少可以打中文… XD

安裝相當簡單,到 ATOM 網站,下載對應的安裝檔案安裝就可以了,我是用 Ubuntu,下載 .deb 用 dpkg -i 安裝就可以了。

安裝以後,需要調校一下,因為字型的關係,中文會顯示不出來。設定可以參考下面來進行調整:

不過說真的,我不是很常用這個,大部份還是用 vim。這兩天再拿出來用,才發現多了一個 apm 的指令,顧名思義就是管理 ATOM packages 用的,像是安裝、反安裝或更新等等,都可以透過這個指令進行。

不過,要檢查 ATOM 更新的話,就比較麻煩了,還好有 package 可以幫忙做這件事情,我是用 atom-update 這個 package。

補充:參考這篇 Atom 使用心得與 Package 推薦 跟根據自己需求,裝了一些 packages/themes:

  • atom-beautify
  • atom-hexo
  • atom-material-syntax
  • atom-material-ui
  • atom-update
  • autocomplete-python
  • color-picker
  • ex-mode
  • file-icons
  • git-blame
  • git-log
  • git-plus
  • highlight-selected
  • indent-helper
  • linter
  • linter-flake8
  • markdown-preview-plus
  • markdown-toc
  • merge-conflicts
  • minimap
  • project-manager
  • recent-projects
  • vim-mode

Migrate ghost to hexo

Hexo 是一個快速、簡單且強大的網誌框架,Ghost 是一個用 javascript 寫的 Blog 平台。

我在公司有用 Ghost 架一個小小的 Blog ,紀錄一些事情,後來想把 Ghost 搬到 Raspberry PI 上,但是 Raspberry PI 的效能不是很好,就轉念改用 Hexo。Raspberry PI 只架設單純的 Web server,桌機用 Hexo,在產生完網頁之後,再 Deploy 到 Raspberry PI 上。

要搬家基本上不難,Hexo 這邊先安裝 hexo-migrator-ghost,然後依照說明,先到 Ghost 那邊 (http://yourblog.com/ghost/debug/) 匯出資料,然後回到 Hexo ,用 hexo migrate ghost exported_json 匯入剛剛在 ghost 匯出的檔案就可以了。

圖片的話,要自己處理,最快的方法是複製 your_ghost_folder/content/images 到 your_hexo_folder/source/images ,然後將文章裡圖片路徑的 /content 移掉就可以了。

Hexo 在處理文章圖片上有更好的方式,可以參考這篇文章:Asset Folders ,在 _config.yml 裡啟用 post_asset_folder: true 以後,在建立新文章時,hexo 會自動建立以文章標題為名的資料夾,把圖片放到該資料夾下面,然後引用就可以了。這樣做比大堆頭的擺在 source/images 下自己管理來的好。

gitlab 的備份檔

gitlab 的備份是一個 tar 檔案,用 tar xf 解開以後,會依照你 gitlab 裡的 user/group 區分目錄,解開以後,會發現裏面又是一堆 .bundle 檔案。

.bundle 該怎麼解開呢?其實它也是一個 tar 檔案,用 tar tf 就可以看到內容,所以如果要還原的話,就先建一個目錄,再切到該目錄下解開就可以了。

Zabbix discoverer processes more than 75% busy

在公司 Zabbix dashboard 上看到這訊息,但明明 CPU 就沒飆到那麼高,後來去 google 了一下,主要是參考這兩篇:

文章裡提到的訊息有點差異,不過都是改 /etc/zabbix/zabbix_server.conf 裡的 StartXXXX 設定,將數值調高即可。例如 discoverer 就調高 StartDiscoverers 的數值,ping 就調高 StartPingers 的數值,以此類推。

改完,重新啟動即可,Zabbix Dashboard 上應該就看不到這訊息了。

P.S. 好像應該來開個 「IT 日常」的分類?!

pyenv: no such command `virtualenv-init’

最近開 terminal 時,都會看到這樣的錯:

pyenv: no such command `virtualenv-init’

今天終於想要解決這問題了,找了一下,源頭是在 oh-my-zsh 的 virtualenv plugin 裡,裏面用了 eval “$(pyenv virtualenv-init – zsh)” ,循線追到 pyenv,發現是 pyenv 沒有 pyenv-virtualenv plugin 的關係。

依照 yyuu/pyenv-virtualenv 上的說明,執行以下指令,就解決問題了。

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

最後,順道更新 pyenv :cd ~/.pyenv && git pull –rebase origin master

OpenKM

同事找到這篇介紹 OpenKM 的文章:開源OpenKM文管系統 立即打造知識管理平台

想說就裝起來試試看好了,看到有人用 docker 搭起來,就照著做囉:使用docker在centos6.5上部署openkm详细过程

不過這篇文做法的缺點是,把原本的 /usr/local/tomcat 都移到 volume 裡去,這就等於是程式都放到外面去了。或許應該參考原本 mcsaky/openkm 的 Dockerfile 與 OpenKM Installation ,再來改寫 Dockerfile 會比較好一點。

反正只是先試試看,所以我也沒有用 nginx 擋在前面,直接用 tomcat ,就先這樣用吧~ 有需要的時候,再來研究看怎麼改寫。