2019年1月30日 星期三

DevOps Tip - How to use terraform apply without prompt and input yes for CI/CD?

Problem

Took a memo about integration of CI/CD applied by terraform without prompt to input 'yes'
It is annoying to input yes every time if you already make sure already by `terraform plan`.
On the other hand, I need to integrate with different system for CI/CD. I need a way to approve it automatically.
By tests with commands official documents, I found the correct command and arguments.

Tested Solutions


    terraform apply -input=false -auto-approve

or as my test, you can shorten to the following command

    terraform apply -auto-approve

Test Environments

  • Ubuntu 16.04.04 LTS
  • OSX 10.14

Reference:




Extended Reading



2019年1月29日 星期二

DevOps Tip - How to use shared terraform plugins by -plugin-dir argument?


Problem


If you executed `terraform init`, you may already have the .terraform in your folder.


Because you may have many terraform repo similar to another, you can use the -plugin-dir to reduce the usage of disk space.

As a shared plugins so that we don’t need many copies of plugins into different locations.

Example

  • Here I used my OSX Macbook as a Demo Environment.
  ====================
  cd /build/setupdev/
    sudo mkdir -p  /opt/terraform/terraform.d
mv .terraform/plugins to /opt/terraform/terraform.d/plugins


  • Please run the following command to apply it.
  ====================
terraform init -input=false \
-plugin-dir=/opt/terraform/terraform.d/plugins/darwin_amd64





Tree of .terraform

Tree of terraform plugins

Reference

2019年1月27日 星期日

OrangeOS's 作業系統實現範例出現微軟防毒Defender的誤偵測





年關將近,最近繼續在整理舊書,偶然間翻到了一本放了很久的舊書 OrangeOS's 一個作業系統的實現。

在Windows 10 系統中,想試試它的範例,發現 a.img 檔案複製不過來,覺得十分奇怪。

突然跳出病毒移除警告,微軟的防毒軟體偵到 Trojan: DOS/Killmbr。


出現的路徑剛好是範例1的Hello World boot.asm 所對應的檔案 a.img

程式碼

原本的測試範例沒有Makefile, 筆者寫了一個測試用的Makefile 以方便在Ubuntu 16.04.4 重覆編譯

編譯測試檔案
/Dev/orangeos/chapter1/a$ make
qemu-img create -f raw a.img 1440k
Formatting 'a.img', fmt=raw size=1474560
mkfs.msdos -s 1 a.img
mkfs.fat 3.0.28 (2015-05-16)
nasm boot.asm -f bin -o boot.bin
dd if=boot.bin of=./a.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes copied, 0.000185582 s, 2.8 MB/s


被偵測到有問題的boot.asm 範例


 org 07c00h
 mov ax, cs
 mov ds, ax
 mov es, ax
 call DispStr
 jmp $
DispStr:
 mov ax, BootMessage
 mov bp, ax
 mov cx, 16
 mov ax, 01301h
 mov bx, 000ch
 mov dl, 0
 int 10h
 ret
BootMessage:  db "Hello, OS world!"
times  510-($-$$) db 0
dw  0xaa55


通Defender 偵測的 boot.asm 範例

測試 ghaiklor 的 Simple boot sector with Hello World 範例編譯沒有問題
source: https://gist.github.com/ghaiklor/89e243a3463569480d01188c9e55e077





執行編譯OK的Hello World 

Windows 10 pro with qemu / make tools installed by choco


小結

比較程式的差異,通Defender 偵測的 boot.asm 範例,是比較好的寫法,有做處理停止中斷及結束。
看到偵測有病毒檔案訊息,先不用緊張,確認問題點,調整一下寫法,就可避開 Defender 誤偵測,繼續快樂的作業系統程式開發與研究囉!

2019年1月21日 星期一

如何在Mac上將微軟測試用虛擬機Image的zip 檔案解壓縮到特定目錄?

最近工作上,暫時會用到Windows 系統,
配合我的工作機所使用Parallels 虛擬化的軟體,
紀錄一下,在 MAC 上解壓縮微軟測試用虛擬機Image的zip 檔案到特定路徑並設定的方法

Step 1: 從微軟網站上下載虛擬機


下載相關檔案:選擇你要使用的虛擬機版本,及對應的虛擬化平台。



Step 2: 開啟 Terminal Console (我使用的是 iTerm2.app)



Step 3: 確認 unzip 指令在 Mac OS X (10.14.2 ) 的使用方法

在 terminal console 中輸入 man unzip, 可得知參數 -d exdir


Step 4: 解壓縮

以微軟30天測試用 Windows 7 Enterprise 虛擬機器 Parallels 檔案為例:

➜  unzip IE11.Win7.Parallels.zip -d ~/vmspace/win7/
Archive:  IE11.Win7.Parallels.zip
  inflating: /Users/tester/vmspace/win7/.DS_Store
   creating: /Users/tester/vmspace/win7/IE11 - Win7.pvm/
  inflating: /Users/tester/vmspace/win7/IE11 - Win7.pvm/config.pvs
  inflating: /Users/tester/vmspace/win7/IE11 - Win7.pvm/floppy.fdd
   creating: /Users/tester/vmspace/win7/IE11 - Win7.pvm/harddisk1.hdd/
  inflating: /Users/tester/vmspace/win7/IE11 - Win7.pvm/harddisk1.hdd/DiskDescriptor.xml
 extracting: /Users/tester/vmspace/win7/IE11 - Win7.pvm/harddisk1.hdd/harddisk1.hdd
  inflating: /Users/tester/vmspace/win7/IE11 - Win7.pvm/harddisk1.hdd/harddisk1.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
  inflating: /Users/tester/vmspace/win7/IE11 - Win7.pvm/harddisk1.hdd/harddisk1.hdd.drh
  inflating: /Users/tester/vmspace/win7/IE11 - Win7.pvm/VmInfo.pvi
➜ 

Step 5: 執行 pvm

即可在 /Users/tester/vmspace/win7 中找到 IE11 - Win7.pvm,點擊 pvm 檔案執行



Step 6: 執行後會看到對應的 IE11-Win7 的虛擬桌面

Step 7:安裝 Parallels Tools

用以安裝虛擬機平台相關驅動程式及擴充功能,安裝完成後,虛擬機需要重新啟動。


Step 8: 開始使用測試虛擬機



請注意:虛擬機預設定密碼為 Passw0rd! 

小結

虛擬化平台對於軟體在不同系統開發測試是必要工具,可減少重覆安裝系統的時間,搭配CI (持續整合),更能加速開發進度喔!


2014年7月20日 星期日

如何把電池LED燈改為USB供電?



近月,需要一個小LED燈放床頭,在自家儲藏室找了一番,最後找到了一個使用 3顆1.5v AA電池的可夾式軟管LED 燈,本來裝電池使用的,但發現電池用的滿兇;心想能不能環保一點用插電的。有預先去找了一下 PCHome 大約 2~300元。最後決定把原來的 LED 燈改裝有支援 USB 供電的功能。

材料準備

  • USB A母座180°焊線立式 1個  (10 元)
  • 5cm 電線紅色,黑色各一條
  • 熱熔膠 2cm
  • 銲錫少許

使用工具

斜口鉗、剝線鉗、電鉻鐵、熱熔槍

改裝前,底部圖

首先測試使用 5v/2A 輸入電源,工作正常。

接者測量一下,正負極到要USB座開口長度。




 然後,根據上圖: 銲接usb 座 5V(pin 1) 紅線 及 GND (pin 4) 黑線 



緊接著,將紅色銲到電池座正極,黑線銲到負極,
記得三用電錶量一下,確定電線銲接是否正常,再上電。
使用舊裝置的 usb 5v/2v 變壓器及公對公 1.5米的USB 線連接LCD燈如下圖。



續上,在側邊挖一個可將USB頭裝入洞,不要挖太大,最好要能卡緊USB頭,使之不易脫落。

最後,把燈放正,看一下完成圖。



小結

為了加固接頭的部分,使用熱熔膠槍,將usb頭與底座粘牢。本次完成USB LED 改造小專案,現在把這個夾在床頭,每晚睡前都會使用片刻,感覺還不錯。

2014年7月2日 星期三

如何將 python 程式編為 windows 64 位元 可執行檔?



之前, 曾寫過一些 python 平台API無關工具在 linux 上跑。
最近不想重寫,有下列需求:

  • 要在 windows 上直接跑,不用在自行安裝 python
  • 要能支援 32bit 及 64bit 的 windows
記得近年曾研究過 Dropbox 的 windows/mac client 的python 用法,
所以使用 py2exe 在 windows 8.1 64bit 做了一個實驗,

範例程式:

hello.py
# ---------------------
print "Hello World!"
# ---------------------

setup.py
# ---------------------
from distutils.core import setup
import py2exe

setup(console=['hello.py'])
# ---------------------

使用下列指令:

 python setup.py py2exe 

很方便就能產生可執行檔,如上圖產生 hello.exe。

以下是 dist 目錄下的檔案清單:


2014年5月21日 星期三

舊電腦椅自行維修換新輪子省錢大作戰

舊電腦使用了好幾年,黑色椅輪的塑膠材質開始老化脫落,

在地磚上粘著形成黑色的斑點,襯著淺白磚色,十分顯眼,看起來非常髒;

而且因為附加在椅子上重量的問題,

斑點會粘的很牢,不易擦除,要用濕布用力才能弄掉。

去網路查了輪子更換相關資訊,發現網路有在賣 PU輪,價格不貴新台幣二~三佰多元就能買到五顆一組輪子(現在人工比較貴,材料大都很便宜)。






記得在下單之前,先確定你的電腦椅能裝的上去,使用游標卡尺量一下,
輪子的規格如下:

軸直徑:11mm
軸長:22mm

我的電腦椅是亞梭的,使用的是一般規格的輪子。

在網路商店意外看到,居然有五年保固的輪子,評價似乎不錯,立馬下手買了一組。





安裝步驟



一、安裝之前,要先拆掉舊輪子,



請順著輪軸直線方向用力拉出就拔下來了



二、把寶藍的新輪子對準輪孔裝上去

小結

寶藍的新輪子,看來滿不錯的。
滑動也感覺比之前好很多。
版主每日幾乎都會在電腦椅坐上數小時,
所以一張好用的電腦是必備的,
可是新得要價不斐,
維修一下,電腦椅再度復活了。 

(大誤,DIY 癮頭愈來愈大了。)