Comments

這兩個月到新公司學到了不少東西,對於「寫測試」這件事也有了新的想法。先感謝最近一直和我 pair 的 @ilake,許多觀念和工具都是他帶給我的。

還記得幾年前剛聽到「測試」、「TDD」這些名詞的時候,那時我去 Ruby Tuesday 碰到人就會問一下:「你有在寫測試嗎?」@ihower 跟 @xdite 應該都被我問過這個問題。那時雖然知道寫測試的好處,也大概試過 TDD 的手法,不過總感覺搔不到癢處;再加上那時待的公司也都沒有這個環境,就放置 Play 了。

一直到跟 @ilake pair 過後才知道,問題不在「要不要寫測試」、而是「測試該怎麼寫」。

Read on →
aws
Comments

Recently I need to migrate my infrastructure from Tokyo to Singapore. According to the information I gathered from AWS 201 course, it’s a little troublesome to migrate AWS AMI between regions.

As Copying EBS Boot AMIs Between EC2 Regions demostrated, we need to mount ebs for each regions and rsync them, than we register the ebs as AMI; Also there’s CloudyScript, it’s a online tool that does these steps for you.

After some study, I found that it’s not necessary now. Amazon announced EBS Snapshot Copy last December. Although you can’t migrate AMI but we could do so just for some more steps.

Read on →
aws
Comments

最近要把一些日本的東西轉移到新加坡,根據以前參加 AWS 201 的資料,跨 region 轉移 AMI(Amazon Machine Image) 這件事有點麻煩。

通常找來找去都是用 Copying EBS Boot AMIs Between EC2 Regions 推薦的方法,在兩邊各開一個 ebs mount 起來然後 rsync 再 register 成 AMI…操作起來耗時又複雜;不然就是用 CloudyScript 提供的線上工具,不過他其實就只是幫你把上面這些動作自動化而已…。

弄了一陣子發現,現在根本不需要這些瑣碎的步驟! Amazone 在去年 12 月就發表了 EBS Snapshot Copy 可以自由的跨區複製 snapshot! 雖然還不能複製 AMI,不過我們只要手動多幾個步驟就好。

Read on →
Comments

前陣子玩了 Puppet…把一些重點和資源紀錄在這邊… 初學 Puppet 的話很建議看一遍官方教學,雖然沒有很完整但整個 run 過基礎的概念會有。

Infrastructure as Code

Puppet 的概念是 infrastructure as code,那跟以往寫 shell scripts 有何不同…?

其實基本上是相通的…但概念層次上高了一層。寫 shell script 主要是加速重複性工作、減少人為疏失,但你也很難去 reuse 這些東西。

Puppet 則是往上拉了一層虛擬層,你只要定義你 infrastructure 的狀態,。可以模組化、重用你程式碼,用清楚易懂的 code 描述套件要怎麼裝,設定檔有哪些,每個 server 之間的關係是怎麼樣…。

Code 就是文件, code 就是你的 infrastructure。不但好寫好讀好維護,更可直接拿來執行。

Read on →
Comments

想在 ArchLinux 使用 Puppet 有一些需要注意的地方,在這邊順便補充一下。

systemctl 路徑

Arch 在之前的改版已經把 /bin/systemctl 移到 /usr/bin/systemctl 下,但 Puppet 還是抓 /usr/systemctl 導致找不到 systemd 這個 provider ,這個問題已經在 Puppet 3.1 修改,也可以自己手動 link 一下。

套件庫需更新到最新版

Arch 每次都要先 pacman -Syy 一下不然 package 會無法使用。

以上這兩個問題我有寫了一段 module

1
2
3
4
5
6
7
8
9
10
11
# For Archlinux. This issue will be fixed in puppet 3.1

class archfix {
    file {'/bin/systemctl':
        ensure => link,
        target => '/usr/bin/systemctl',
    }   
    exec {'pacman -Syy':
        path => ["/usr/bin"]
    }   
}

在 manifest 中利用 stage 功能先執行 archfix 這個 module 就可以了。

1
2
3
4
5
6
7
8
9
node 'devm3' {
    stage { 'pre': }
    class {
        "archfix": stage => "pre"; 
    }   
    Stage["pre"] -> Stage["main"]

  # include other modules...
}

Openrc & Systemd

ArchLinux 現在還有很多套件同時支援 openrc 的 initscript 和 systemd,Puppet 會偵測到兩個 provider 但是他會選擇用 initscript 。可以在 service resource 指定 provider => systemd 即可。

Comments

筆記一下安裝步驟…。

Install Archlinux

由於 Archlinux 本身沒有提供方便的安裝模式、因此我們使用 @helmuthdu 的快速安裝 script AUI,安裝完成後再使用 puppet bootstrap 環境

  • 放入 CD 選擇 x64_64 開機
  • 執行 curl hsatac.net/getaui | sh
  • 進入 helmuthdu-aui-xxxx 目錄
  • 執行 ./aui --ais 進入安裝程式
  • 輸入 1-14 執行全部安裝步驟

ps. 如遇特定機種無法使用 grub2 可改用 syslinux bootloader

Reboot

安裝完成重開機後後首先設定讓網路能通 可參考官方wiki

如欲使用 dhcp 可執行 systemctl start dhcpcd systemctl enable dhcpcd 開機自動執行

  • 回到 helmuthdu-aui-xxx 目錄
  • 執行 ./aui 繼續安裝
  • 新增使用者步驟必須執行,因後續步驟需用 sudo
  • AUR helper 選擇 yaourt (Yaourt 和 packer 大同小異,但因 puppet 使用 yaourt 所以改用。)
  • 後面的 setup 可跳過,或者裝 Basic Setup 即可,這邊都是 桌面環境相關
  • 設定 /etc/resolv.conf

使用 puppet

puppet 可使用 master-agent 架構或者單機(solo) 安裝,詳見 puppet wiki

  • yaourt puppet 安裝 puppet
  • 在 /etc/hosts 設定 puppet master hostname 並在 /etc/puppet/puppet.conf [agent] 區塊設定 server = xxx (hostname 要跟 master hostname 一樣不然憑證不會過)
  • run puppet agent --test 會出現沒有憑證訊息
  • 回到 puppet master 執行 puppet cert list 會看到待簽署的憑證
  • 執行 puppet cert sign [hostname] 簽署
  • 記得在 master 的 /etc/puppet/manifests/site.pp 設定新的 node 定義
  • 回到 agent 執行 puppet agent --test 進行安裝
Comments

RWBY 第二部預告片 “White” 終於推出!

之前看完第一部 “Red” 時還沒有特別被萌到,只覺得創意、畫面和音樂都還不錯。不過這次看完 “White” 以後整個點都被打到啦!直接去 itunes 收了這兩首 OST…

下一部 “Black” 預計在 2013.07 發佈,這樣算來本體推出都要 2014 啦!實在是很大一個坑…

Read on →
Comments

昨天灌了一台新的機器,正準備用 puppet bootstrap 時卻發現他的 puppet 執行的非常緩慢。追蹤解決問題的過程十分有趣,在這邊紀錄一下。

由於 puppet 執行檔本身是一隻 ruby script,於是開啟了 irb -d 使用 DEBUG 模式直接執行看看該 script 的內容,看看能否看出問題在哪。

Read on →
Comments

Ruby Conf Taiwan 2012 is so amazing I have to write it down.

Before Party

ihower had been inviting Matz, the creator of Ruby to Taiwan for the past three years. And finally he made it this year. Matz arrived Taiwan early, since it was a great opportunity to meet Matz in person so we hosted a meetup party with Matz the day before the conference.

matz and I

Read on →