terraform + digitalocean

Terraform 對 DigitalOcean provider 的說明文件:

有例子當第一個雛型來抄抄改改還是比較快,所以主要參考資料裡的 example 來改 (要先 clone 下來),下面是我邊做邊記錄下來的步驟:

  1. 產生 ssh key:ssh-keygen -f your_key_file -t rsa
  2. 進 DigitalOcean 帳號裡,新增 ssh key,把剛剛產生的 public key 填入 (就 your_key_file.pub)  ,這邊主要參考 https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets
  3. 到 DigitalOcean 帳號的 API / Tokens 下,去新增 token ,並把 token 複製起來
  4. 用 curl -X GET -H “Content-Type: application/json” -H “Authorization: Bearer <your_token>” “https://api.digitalocean.com/v2/account/keys” 取得剛剛新增的 ssh key 的 key id  ,這個步驟主要參考 https://developers.digitalocean.com/documentation/v2/#list-all-keys
  5. 編輯 main.tf ,修改上個步驟取得的 ssh key id ,並把 connection 裡的 key file 改為步驟 1 所產生的 private key file 。
  6. export DIGITALOCEAN_TOKEN=”your_token”
  7. 執行 terraform plan / apply

參考資料:

電影流水帳(2016/8/8~2016/9/6)

Elle Fanning

Elle Fanning,飾演 Super 8 裡的 Alice,演的非常讓人印象深刻,相信未來在演藝圈有更好的發展。

  • Super 8 (IMDB, Wikipedia),台譯:超級8。一群孩子拍了電影,結果卻遇到了怪事。接著鎮上發生了許多奇怪的事情,像是停電、電子零件消失、狗消失、人消失等等。透過物理老師的勸告與一連串的調查,發現原來是幾年前有外星人來到地球,被軍方抓到,軍方加以研究忽略外星人的心意。物理老師當時是參與研究的人員之一,他意外接觸到外星人,得知了外星人的心意,因此一心想幫助外星人離開地球。這群孩子知道了真相,試著想救出自己喜歡的人並改變這樣的處境,最後,主角救出自己喜歡的女孩,也順便幫助了外星人能回到自己的家鄉。
    我覺得這故事蠻好看的,只是台譯的片名有點不雅。印象特別深刻的是他們半夜在車站拍電影時,Elle Fanning 飾演的 Alice 整個超級入戲,她的表現吸引了在場拍片的所有人以及我,真心覺得她演的超好。片子的最後,播出這群孩子所拍攝出來的成果,非常有趣。
  • Terminator Genisys (IMDB, Wikipedia),台譯:魔鬼終結者-創世契機。這次的故事從原本魔鬼終結者一 的 Kyle 準備回到過去開始,結果在準備穿越時空時,Kyle 看到機器人解決了在場的所有反抗軍。在回到過去時,故事也不同與以前所看到的魔鬼終結者一的故事,T-800 這個機器人(變成 Guardian)居然提早來到更早的時間點,並且開始保護 Sarah,Kyle 困惑了。Kyle 從 Sarah 與 guardian 口中了解狀況以後,一同進行時空跳躍到 2017 年。結果卻在 2017 年看到了應該是在 2029 年的反抗軍領袖 John Connor,Kyle 非常高興,但卻發現這個 John Connor 已經變成了半機器人 (T-3000),為 SkyNet 進行任務。他們在躲過 T-3000 的追殺以後,回到安全點進行整備。Kyle 在這段時間隱約的回想起以前的記憶,並且在這個時間點遇到幼時的自己,並且為了未來而留下線索給幼時的自己。接著在整備以後,與 T-3000 展開最後大戰,最後解決了 T-3000 ,可是結尾留下一個伏筆,SkyNet 並未因此而消亡,看來還會有續集。
  • Learning to Drive (IMDB, Wikipedia),台譯:愛情停看聽。原本我以為是個很單純的公路電影,主要是描述女主角 Wendy 療癒離婚痛苦的過程,但電影的末尾有點讓我混亂了,到底故事想說的是什麼??
    Wendy 的老公要求離婚,但 Wendy 不願意去面對這件事情,女兒 Tasha 看了很難過。Tasha 也不願意看媽媽這樣痛苦,寧願住在外地的農場工作,並告訴媽媽,希望她可以開車來看看他。也因此,Wendy 心裡被種下一個要學開車的種子。後來,Wendy 搭乘到 Darwan 的車子,留下了 Darwan 的名片,得知 Darwan 有教授開車,後來就打電話跟 Darwan 聯繫,開始了開車的課程。於是 Wendy 在邊學開車的時候,也邊認識了 Darwan 與他因為遠距相親而開始的婚姻,在這樣的過程裡,Wendy 慢慢的走出了離婚施加在她心裡的枷鎖。最後,Wendy 順利的考到駕照,順利的離婚,自己開車上路去找女兒,Darwan 也因為 Wendy 的建議慢慢讓他的妻子適應美國生活。
    讓我混亂的地方是,在 Wendy 考到駕照以後,Darwan 陪 Wendy 去買車,在買完,Wendy 要上車時,Darwan 跑過去牽住 Wendy 的手想說些什麼,但 Wendy 溫柔而又堅定的說了謝謝,就此分手。這是意味著他們發展出超越友誼的情誼嗎?
  • War of the Worlds (IMDB, Wikipedia),台譯:世界大戰。看完以後,大致可以理解到為什麼影評普遍不看好這部電影。
    Mary 是 Ray 的前妻,週末她請前夫幫忙照顧兒女,過了沒多久,突然天上打了雷,地下冒出可怕的機械怪物開始擊殺人類。Ray 帶著兒女逃啊逃,一路上隨著逃難的人潮,要帶他們去找前妻。但機械怪物出現在各地,他們可以說是四面楚歌,要順利逃掉談何容易。他們被怪物抓到怪物裏面去,Ray 靠著機智與撿到的炸彈,把怪物炸毀,救出了自己的女兒跟其他被抓的人。後來,他們總算逃到前妻所在的城市,這時,Ray 意外發現機械怪物的防護罩消失了,就告知國民兵,國民兵部隊就開始猛打,大部分的機械怪物都被消滅了。最後結局透露出機械怪物為什麼突然失去戰力的原因,原來是因為操縱機械怪物的外星人沒發現到除了人類以外的微生物,而被這些微生物打敗了。
    飾演女兒的 Dakota Fanning 正巧是 Elle Fanning 的姊姊,而飾演兒子的傢伙則是演評價也不高的七龍珠的男主角。
  • Contagion (IMDB, Wikipedia),台譯:全境擴散。以仿紀錄片的方式來紀錄傳染病蔓延的經過,不算太悶。
    一開始是 Beth 從機場回家,回家以後病的很重,其他國家曾經跟她在機場接觸的人們也都生病了。隨著某個小道記者的報導,驚動了美國的疾病管制局與世界衛生組織,著手開始調查並且進行封鎖。另外也一邊進行疫苗的開發。不過傳染病的傳播相當驚人,蔓延的愈來愈快。在這蔓延的過程裡,發生了許多的事情,像是綁架世界衛生組織官員以勒索疫苗救人、有人在進行封鎖時被感染而死、有人以大愛的胸懷犧牲自己來做活體試驗、有人則散布不實的醫療資訊圖利藥廠等等,最終疫苗被開發出來,拯救了無數的人。
    電影的最後揭露了傳染病的起源,起源是因為 Beth 所屬公司的工廠破壞了環境,讓攜帶病毒的蝙蝠無處可去,只能跟豬一起居住,導致豬肉有病毒。當地的工廠在餐廳招待公司出差到工廠的 Beth,廚師宰殺豬隻以後,沒有洗手,直接出來跟 Beth 握手,導致 Beth 感染。實際上動物身上的病毒要能感染到人身上並不是那麼的容易,只有在罕有情況下會跨越物種障礙感染人,禽流感是一個例子。這部電影是誇大了些,但卻凸顯了人類與動物爭地以及環境汙染、環境衛生的問題。

Compile your go program inside the Docker container

golang 有官方製作的 container:https://hub.docker.com/_/golang/

用 docker pull golang 拉下來以後,切換到 go 專案目錄下 (假定是 $HOME/project),執行:

docker run --rm -v "$PWD":/usr/src/myapp -e GOBIN=/usr/src/myapp -w /usr/src/myapp golang:1.6 bash -c make

就可以在專案目錄下的 bin 裡找到 binary 了。

用 docker container 來 build 的好處,除了可以指定版本之外,也可以 cross compile ,另外就是可以省下處理佈署 golang 開發環境的心思。

電影流水帳(2016/7/8~2016/8/7)

Kate Mara
Kate Mara ,在 The Martian 飾演火星任務裡的一個組員,是一名駭客。

一晃眼一個月就過去了,結果這個月幾乎都在看影集… House M.D.

  • I Am Legend (IMDB, Wikipedia),台譯:我是傳奇。電影是一個孤獨與僵屍的故事,在故事的前半段除了狗、模特兒與僵屍之外,只剩下孤寂。
    Robert 在城市裡與他的狗一同狩獵,就在快要逮到獵物時,手錶的鬧鐘響起,Robert 看看天邊的夕陽,立即收拾手邊的東西,帶著狗兒開車回到家中。Robert 要躲的是夜晚,夜晚有喪屍出沒。接著的生活片段可以看出他是個科學家,在研究著能否讓老鼠恢復正常,他嚴格遵守著時間活動,也確保自己能有足夠的體力可以繼續這樣的生活。交錯的片段,帶出了為什麼會這樣的原因。有科學家發明了可以治癒癌症的病毒,但這個病毒後來卻導致人類變成喪屍,喪屍導致整個城市淪陷;同時也帶出了 Robert 思念的家人與過往。
    某天,Robert 帶回一個女的喪屍做實驗,而喪屍似乎也有感情似的,在隔天,以同樣的手法設下陷阱,Robert 中了陷阱,陷入昏迷。時間到了傍晚,手錶的鬧鐘再次響起,他醒來,趕緊設法逃離陷阱,不過狗狗卻因此被病毒感染,後來死了。Robert 很難過,唯一一個可以陪著他、能稍微了解他的狗狗死了,他崩潰了。他跑去跟喪屍們大幹一場,在危急的時候,一對母子聽到 Robert 之前的廣播,來到這裡找他,卻順便救了他。雖然一行人順利的逃回 Robert 住處,但卻因此讓喪屍追蹤到 Robert 住處,展開一場大戰以後,Robert 發現他製作的血清療癒了那個女僵屍,於是抽取了女僵屍的血液交給那對母子,犧牲自己保護她們逃出去。最終,母子逃到安全的地方去,並且以血液製作出血清救了其他喪屍。
    這部電影上映後沒多久,公佈了第二個結局,我一直都沒看,直到這次看完去查,才知道第二個結局是 Robert 將女性變種人還給變種人首領,並且成功的存活下來。
  • Finding Dory (IMDB, Wikipedia),台譯:海底總動員2-多莉去哪兒。海底總動員故事的兩年後,Dory 意外想起該回家一趟了,Nemo 跟 Marlin 義不容辭地陪她展開這趟旅程。經過一番冒險,當然最後找到了 Dory 的父母,並且找到了老友。
    看這部電影的時候,我流了好幾次淚,特別感人的地方主要是 Dory 的父母,Dory 父母不管孩子的短期失憶症怎麼嚴重,他們還是努力的去教導孩子該怎麼從一些線索去找到回家的路,最終 Dory 也靠著這個找到了他們,回到了家。這鼓勵了我,讓我知道自己要努力的教導孩子。
    補充彩蛋:幕迷影評 | 幕前幕後兩三事:彩蛋集錦之《海底總動員2:多莉去哪兒》
  • 美人魚 (IMDB, Wikipedia)。故事雖然老套,不過細細去看,還是挺溫馨平實的。
    富商劉軒買下了一個港灣,準備要填海開發,所以在港灣外圍加上了強力的音波機器,要把魚兒都趕走。住在那個海灣的人魚們,因為這個音波機器被困在港灣裡,為了脫困,他們決定刺殺這個富商。人魚們派出的誘餌是珊珊,珊珊和劉軒接觸以後,心軟了,而劉軒接觸珊珊以後,心境也發生了奇妙的變化。
    劉軒的生意伙伴若蘭,是個美麗的女人,她原本以為可以憑自己的美色與本事拿下劉軒,哪知劉軒不吃這套,反而倒向珊珊這個不怎麼樣的女人。於是她起了妒心,在查出珊珊與人魚族群以後,派出大批人馬進行獵殺。劉軒發現自己愛上珊珊,以及自己所犯下的錯誤,決意幫助人魚族群。經過一番打鬥以後,終於讓人魚們重返大海,可是自己也受了重傷。
    匆匆數年,劉軒傷癒,放下了房地產事業,將自己的財產捐給海洋研究。某天,有個海洋研究所的學生來訪問,問他是不是在保護人魚,劉軒笑而不答。但訪談間,端出飲料的珊珊卻透露出,劉軒其實已經娶了珊珊,並且過著幸福的生活。
  • The Martian (IMDB, Wikipedia),台譯:絕地救援。電影把故事該交代的都交代了,不過個人覺得小說比較好看,可能是書裡保留的想像空間比較多吧~
    NASA 派了一個小組去火星出任務,可是遇到了沙塵暴,隊長 Melissa 決定撤退,但撤退的時候,Mark 被石頭擊中而暈倒,Melissa 考量整體,毅然決然捨棄 Mark 。Mark 運氣非常的好,被石頭擊中的面罩恰巧地被堵住而沒流失空氣,Mark 醒了之後,趕緊回到小屋去進行更換面罩與療傷。進行簡單的包紮與處理以後,他試著聯絡 NASA ,但無線電設備損壞了,不能進行通訊。於是 Mark 只能就現有的資源進行求生大作戰,他開始運用自己的植物學與 Maker 的知識來種馬鈴薯,開始看地圖找之前 NASA 丟下來的補給品。地球方面,本來已經以為 Mark 已經掛了的,經過一段時間以後,NASA 有人發現了火星的異狀,確定 Mark 仍然活著。NASA 開始展開行動,試著聯絡 Mark ,給予協助,同時也開始召開救援小組思考如何去火星把人救回來。
    經過雙方的努力之後,Mark 發生意外,導致存糧不足。針對這點,NASA 有人想出了可以在 Mark 存糧足夠的時間內回到火星的計劃,火星小組也決定採用這個較為冒險的計劃回頭去火星救援,也就是利用地球的引力加速回到火星救人。Mark 這邊則是照計劃進行長途旅行到預定的位置去改造登陸小艇,以便升空搭上太空船回去。
    最終,運氣很好的,太空船回到火星,Mark 照著計劃回到了太空船,然後回到地球。

docker-hackmd relative url

hackmd 是一個很棒的協作平台,你可以用 markdown 來撰寫文件,graphviz/flowchart 等語法來畫圖…很厲害。

安裝上也蠻簡單的,已經有人做好 Dockerfile :hackmdio/docker-hackmd: docker hackmd image

可是這個 docker image 有個問題,就是沒辦法以 relative url 存在,他預設是在根目錄下運作,有個日本人弄出來了:HackMDをnginxで / 以外のlocationで起動する。 – Qiita ,我參考他的設定,做了調整,加入 nginx 設定與 upstart 設定,放在 elleryq/docker-hackmd: docker hackmd image

大致調整以下東西:

  1. nginx 設定:加入 rewrite,將路徑改寫為 /hackmd,這可以參考 nginx.conf.example
  2. common.js:因為 hackmd 用到 websocket ,common.js 的 urlpath 也要跟著調整,否則會無法運作,裏面的 urlpath 需要修改為 /hackmd。這部份我寫在 hackmd/Dockerfile 裡,在用 git clone 取得 hackmd 原始碼以後,用 sed 去做字串的替換。
  3. upstart:upstart.hackmd.conf 裡是用 docker-compose 啟動 hackmd image ,這邊我預期 docker-compose.yml 是放在 /srv/docker-hackmd ,如果你預期不放在這兒,那麼這邊也要跟著調整。

應該大概就這些,如果有沒提到的,就看原始碼吧~

phpvirtualbox

無意在 /etc/init.d 下看到 vboxweb-service 這個服務,好奇的把名字丟到 google 去找,才知道是 virtualbox 要提供給 phpvirtualbox 使用的服務。

安裝方法不難,不過我還是搞了好一陣子 (大約4個小時吧),以下是我所參考的文件。

我遇到的問題:

  1. nginx + php5-fpm 只為特定 location 啟用 PHP :這部份卡了我好一陣子,後來是找到這篇:php – nginx projects in subfolders,參考裏面的作法去設定。大致是這樣:
    location /wiki {
        root /var/www/wiki/public;
    }
    
    location ~ /wiki/.+\.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME /var/www/wiki/public$fastcgi_script_name;
    }
    
  2. 無法啟動 vboxweb-service,出現 “vboxwebsrv: error: failed to initialize COM”:原本以為是沒加 dialout 群組的關係,後來根據某篇討論(網址不小心被我丟了)仔細推敲以後,發現是因為 VBOXWEB_USER 所指定的使用者沒有 HOME 資料夾,幫這個使用者建立 HOME 以後,就可以順利啟動 vboxweb-service 了。
  3. 無法登入 phpvirtualbox:這是我自己搞錯了,原本以為 config.php 裡指定的 username 跟 password 就是用來登入 phpvirtualbox 的帳號跟密碼,但後來才知道這組帳密是讓 phpvirtualbox 與 vboxweb-service 溝通用的,預設的 phpvirtualbox 帳密是 admin/admin。要修改的話,登入以後再變更就可以。
  4. RDP(Remote display) 不能用:這要先查到 virtualbox 的版本號碼,然後到Virtualbox download site下載對應的 .vbox-extpack 檔案,再用 vboxmanage extpack install 安裝。安裝完成以後,要重新啟動 vboxweb-service 與 vboxdrv 這兩個服務。最後用瀏覽器開啟 phpvirtualbox 頁面,去設定指定的 VM,就可以看到 Remote display 可以設定了。啟動 VM 以後,就可以用遠端桌面連線連上並看到這台 VM。連線所指定的 IP 是 host phpvirtualbox 這台機器的 IP,port 則是 3389。

另外,啟動所需要的光碟 ISO 檔案或是已經有打包好的 disk image 無法透過 phpvirtualbox 上傳,必須要事先透過 SSH、FTP 等傳輸協定放到 host 上。

其他參考資料 (與 nginx/php5-fpm 相關的):

Linux GPS 軟體小記

最近比較常在看 GPS 軌跡,紀錄一下 Ubuntu 下有在用的軟體:

  1. gpxviewer :用來看 gpx 檔案軌跡的工具,圖資是用 OpenStreetMap 。
  2. gpsprune:用來裁剪/合併 GPS 軌跡用的工具,用 Java 寫的,圖資一樣是 OpenStreetMap。
  3. gpsbabel/gpsbabel-gui:用來轉換各種軌跡檔案的工具。常見的 gdb ,要選 garmin mapsource (gdb) ,而 gpx 則是 GPX XML。
  4. gpscorrelate:根據 gpx 軌跡檔,在照片的 exif 加入地理座標標籤的工具。這工具蠻貼心的加入了 offset 的功能,也就說 gps logger 的時間跟照片時間有差距也沒關係,可以透過這 offset 去推算。

今天還有找到 garmin-forerunner-tools 跟 garmin-plugin 是可以搭配我那隻 Garmin ForeRunner 手錶的工具,要找時間來試試看。

WordPress 的維護模式

本來以為 wp-cli 提供的 wp 指令應該可以用來指定 wordpress 進入或離開 maintenance mode 才對,結果發現沒提供這功能。原來是因為很簡單的關係:wp cli – wp-cli Enabling Maintainance Mode

只要在 wordpress 安裝目錄下增加或是移除 .maintenance 檔案就可以進入或離開 maintenance mode 了。