電影流水帳(2021/02/01~2021/02/15)

14754376f2e207

もののけ姫

印象中,沒有從頭開始看過這部電影,趁著 Netflix 有這部電影時,趕緊來補。

有一天,阿席達卡的部落有邪魔神來襲,阿席達卡雖然奮勇擊斃了邪魔神,但也因此在身上留下詛咒的印記。部落裡的巫師告訴他,邪魔神是山豬神變成的,是因為被圓圓的的鐵彈打到才變成邪魔神;為了部落,我們必須要趕走你,但你往西方走,或許會找到可以解除你詛咒的方法,於是阿席達卡踏上了往西方的旅程。

在遙遠的西方有座森林,森林裡居住著山豬、猩猩、鹿、狼等動物,有些非常年長而且巨大,被人類稱為神。人類為了爭地,以各種方法掠奪森林資源,森林日益縮小,動物的棲地也跟著變小。動物們對此感到憤恨不平,卻又對人類的智慧無可奈何。有些動物採取了激烈的行動想要趕走人類,人類也因此採取了更積極的措施,兩方的仇恨慢慢升高。

阿席達卡告別了族人,前往西方,漫漫長路也不知道盡頭在哪裡,只能持續的向前。這天,阿席達卡在路上突然被士兵們追殺,心裡覺得納悶,為了自衛,只能抵抗。阿席達卡發現自己的力量因為詛咒而增加,士兵們不是阿席達卡的對手,紛紛被打倒或擊斃。阿席達卡心裡過意不去,卻也無可奈何。打鬥中救起了兩人,與之對談後,得知他們是達達拉城的居民,阿席達卡想,也許達達拉城會有解除詛咒的線索,就送他們兩人回去。

達達拉城,是由黑帽大人所建立的部落,部落裡收留了因戰亂流離失所的女人以及因為痲瘋病而被驅趕的病人,也因此黑帽大人很得民心。部落裡以鑄造火器為主要的產業,為了鑄造火器,必須要收集大量的木材、鐵礦來維持鎔爐,也因此跟森林的居民有所衝突。阿席達卡護送受傷了兩人回到達達拉城,受到歡迎,黑帽大人也想收為己用。阿席達卡在得知達達拉城是以掠奪周圍的資源來維持產業時,本來是感到忿怒的,可是了解城裡的狀況之後,也能理解黑帽大人的善意。
忿怒的狼族出現了,人類的小桑跟狼族的母親、兄弟前來襲擊黑帽大人,在達達拉城引起騷動。阿席達卡看到兩方的爭鬥,試圖調停,但是兩方都不聽。後來阿席達卡救了小桑,自己也受到槍傷。小桑感念阿席達卡的幫忙,就帶他前往森林找山獸神救治。山獸神是個奇妙的存在,當動物受傷來找山獸神時,山獸神並不一定是救治,而是會視情況來決定。也就是說,它可以帶來生命,也可以帶來死亡。阿席達卡非常幸運,被救活了,但邪魔神的詛咒並沒有因此消失,仍然留著。

黑帽大人接受了掮客的委託,前往森林捕捉山獸神,想取得它的力量,於是一行人前往森林。此時,山豬們也無法忍受人類,決定大舉反擊。阿席達卡傷癒後回到達達拉城,發現達達拉城被包圍了,達達拉城的人頑強抵抗。阿席達卡受到城裡的人的請託,去通知黑帽大人。趕到森林時,看到黑帽大人一行人跟山豬發生了衝突,山豬死傷遍野。阿席達卡告知黑帽大人達達拉城的消息,但黑帽大人為了能擴大達達拉城的領土,仍決心要完成這個委託。山豬首領受了重傷,想去找山獸神救治,只是被邪魔入侵,眼看已經要成為邪魔神了。掮客們跟蹤山豬首領,來到了山獸神的所在地。山獸神碰觸了即將變成邪魔神的山豬首領,山豬首領死去,此時驟變,山獸神的頭被黑帽大人打了下來,掮客們連忙裝起頭就走了。山獸神的身體發生了異變,為了找身體,開始擴散,並且吞蝕周圍的生命。黑帽大人在混亂中,斷了一支手,阿席達卡跟小桑救起了她,逃出森林。

山獸神的身體持續的吞蝕生命、持續的擴大,森林被吞蝕完,開始吞蝕周遭的地方。阿席達卡跟小桑為了阻止森林被吞蝕,趕緊去追掮客,要把頭追回來。經過一番追逐,終於追到了掮客,追到的同時,他們也被山獸神的身體逼到絕境。阿席達卡與小桑拿起了山獸神的頭,把頭還給山獸神。山獸神取回頭以後,慢慢回復成原來的樣子,說也奇怪,本來被山獸神吞蝕的地方,迅速的長出了植物,終於,一切回復了平靜。黑帽大人深刻的檢討了自己,並且決定之後要好好的跟森林共存。阿席達卡的詛咒在拿山獸神頭去還的時候解除了,回到了東方。小桑還是不太相信人類,決定繼續跟自己的弟兄們在森林裡生活。

這故事真的很適合用來介紹環保,人類為了生存,使用了自然的資源,但自然的生態也因此受到破壞。但持續的過度使用對自然並不好,不能對自然資源予取予求,自然資源是會耗盡的,是不是應該要維持一個平衡的關係,人類適度的去使用自然資源,讓自然能夠適度的自我修復,這樣會比較恰當呢?

風の谷のナウシカ

這片跟魔法公主一樣,看完讓人深省人類在這世界的存在。
在世界經過一場浩劫之後,世界變成了一片荒蕪,許多地方慢慢的被瘴氣、巨大的昆蟲所佔據,人類只能慢慢的退,在沒被瘴氣侵襲的地方掙扎求生。可悲的是,人類卻還因此而相互使用浩劫時留下的武器爭戰。

在一個角落裡,有個地方叫作風之谷,那裡有一大片的森林,有乾淨的水源,有和煦的風,村莊裡住著淳樸的人們,相互幫助,相互守護著。這天,公主才從外地探險完,跟著意外遇到的叔叔一同乘著滑翔翼回來。回來才跟村莊裡的人打過招呼,突然一艘飛行船就墜落在村莊外。公主跟村民們趕緊去看有沒有生還者,進行救援,同時也看看有沒有帶入外面世界的孢子。在外地許多有瘴氣的地方,都有孢子,在孢子生長以後,會開始飄落有害的氣體,對人造成危害。就在村民們在燒死孢子的時候,一艘巨大的飛行船就來到了村莊,裏面走出了許多士兵,他們使用武器佔領了村莊,制止村民的行動,也殺死了公主的父親。公主很忿怒,反抗了一陣子之後,發現自己不應該這樣動怒,也怕村民們被殺害,勸說大家先不要反抗。

飛行船的指揮官也無意傷人,出來說明了他們的來意。原來,第一艘飛行船上的人偷走了一個古代武器,所以他們追著第一艘飛船。只要他們拿到這個古代武器,就可以消滅巨大的昆蟲,也可以回國消滅跟他們作對的人。指揮官指示軍官留下來恢復這個古代武器,自己則帶著少數士兵與公主、少數村民們先回國去報告。指揮官一行人回國的路上,飛船被反抗軍狙擊,被迫降落在有瘴氣侵襲的森林裡。在迫降以後,他們發現森林裡跟自己以前所想的不一樣,原本以為會是死亡之地,想不到卻相反,是個欣欣向榮的地方。公主跟著反抗軍回去,指揮官則跟著村民們回去風之谷。

公主跟反抗軍見面後,得知了可怕的事情,反抗軍利用巨大的昆蟲來攻擊敵人。現在他們要打擊指揮官的人,所以用誘餌引誘巨大昆蟲往風之谷前進。公主知道這消息,連忙趕回去風之谷,但已經來不及,忿怒的昆蟲們已經快到風之谷了。回到風之谷的指揮官,眼看情況不對,決定派出還沒完全恢復的古代武器出擊,古代武器果然厲害,第1擊,就擊殺了許多昆蟲。只是要發射第二擊時,還沒完全恢復的身體就崩壞了。眼看巨大的昆蟲們就要蹂躪風之谷,公主使出渾身解數,救出了被當作誘餌的昆蟲幼體,並且帶著幼蟲試著阻擋巨大的昆蟲們。這樣的行徑無異於螳臂擋車,果然,公主被撞飛了,就在此時,昆蟲們也恢復了理智。昆蟲們伸出了長長的觸手,一邊發出光芒,一邊將公主高高舉起,公主受傷的身體竟然慢慢的恢復了。昆蟲們救起公主後,就帶著受傷的幼蟲回去了。

指揮官灰溜溜的回去了,公主將這次的所見所聞告知村民們,說明被孢子寄生的地方並非全然是死地,底下是充滿生機的,水跟泥土也是乾淨的,之後可以試圖跟它們和平共處,並慢慢找出共生的法則。

如何在 multipass VM內執行 GUI 應用程式

multipass 是 Canonical 所推出的一個輕量級 VM 管理工具,它跨平台,支援 Linux、Windows 跟 MacOS。

這個工具用一陣子了,相當的好用,缺點是目前只有 Ubuntu 的 VM 可用。之前是想到,既然 multipass shell 是用 ssh 登入,那麼應該要可以 Forward X11 才對。也就是說以 SSH 登入以後,執行 GUI 應用程式,畫面會轉向到目前 Host 的 X Server 。

但試了以後卻不行,請教 Google 以後,Google 告訴我 StackOverflow 上已經有人解答了:18.04 – How to open GUI applications in multipass container(guest = ubuntu, host = ubuntu)? X-Forwarding – Ask Ubuntu

先說明一下我的環境:

  • Ubuntu 20.04
  • 用 snap 安裝 multipass

首先,先取得 ssh key,因為 multipass 是用 snap 安裝的,所以得從 /var/snap/multipass 裏面找到 ssh private key,把它複製到 ~/.ssh/multipassKey 目錄下。

    mkdir ~/.ssh/multipassKey
    sudo cp /var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa ~/.ssh/multipassKey/id_rsa

接著變更這個 private key 的權限為 0600,並且變更擁有者

sudo chown user -R ~/.ssh/multipassKey
sudo chmod 0600 ~/.ssh/multipassKey/id_rsa

再來啟動 VM,並且察看 VM 的 IP

multipass start name
multipass ls

最後使用 ssh 登入

ssh -X -i ~/.ssh/multipassKey/id_rsa ubuntu@<my_vm_ip>

就這樣。

電影流水帳(2021/01/01~2021/01/31)

Welcome to Me 28
Linda Cardellini ,在 Green book 裡飾演東尼的妻子

극한직업

這部電影蠻妙的,是因為看了網路上的介紹文,才想去 Netflix 看看。

高尚起、金英皓、馬奉八、張妍秀和金宰勳這五人是緝毒組的,一直沒破案,還出了一堆包,長官對他們十分感冒。高班長的同袍給了高班長一個線索,說了毒梟的位置,要他們去偵察。五人得了這個線索,就前去盯梢。毒梟位置的對面是家炸雞店,自然是最佳地點,有得吃,也有得喝。可惜,事情沒有這麼順利,炸雞店老闆要收店了。五人心想好不容易能查到大案子,怎麼能放過這機會,不如把店頂下來吧?於是高班長拿了退休金把店頂了下來。

這店頂了下來,就有人來問有沒有賣炸雞。為了避免附近的人起疑心,五人開始賣起了炸雞,好在馬奉八的炸雞技術跟醬料不錯,沒讓人懷疑,還意外做出好成績。這下可好,炸雞店業績蒸蒸日上,忙到沒時間盯梢,還有電視台來想採訪。五人眼看不對,提高售價,可是又意外創了土豪炸雞,更吸引了人潮。之前電視台想來採訪被拒絕,電視台記者懷恨在心,爆出負面消息,讓炸雞店招牌大受影響。五人也在此時被長官召回,長官準備宣佈要解散緝毒組。就在此時,毒梟來電要訂購炸雞,五人不理長官,飛快的趕回去準備。五人送炸雞過去,才知道,毒梟已經搬走了,是房東打電話來訂購炸雞。五人沒辦法逮毒梟,同時被警局停職,再次陷入困境。

高班長回到家面對老婆,木著一張臉面對老婆,老婆數落了他一頓,然後從他衣服夾層裡拿出護身符,說「這樣也好啦,我也不用每天提心吊膽的,怕你哪天死在外面。為了怕你出意外,我還特別在你每件衣服的夾層裡放護身符,保佑你平平安安。我們就拿退休金開間小店,好好過安穩生活。」高班長邊聽,臉上的表情五味雜陳,聽到這邊,他哭了,抱住老婆哭,一方面是感受到老婆對他的關心,一方面是不知道怎麼跟老婆講退休金已經拿去頂炸雞店店面的事情。

五人被停職後,不知道該何去何從,又回到了炸雞店,討論起日後該怎麼辦。就在此時,毒梟的律師來找他們,想要投資他們,借他們的招牌來開加盟事業跟賣醬料。五人想了想,就決定利用這個機會挽救炸雞事業,東山再起。於是在律師幫忙下開始展店,也把醬料配方給律師去開醬料工廠。眼看事情開始步上正軌時,他們發現顧客跟加盟店買了炸雞,卻都不吃。作為盡職的餐廳經營者,這必須要做調查。經過一番調查,他們發現這律師根本是借炸雞店的殼在賣毒品。馬警官在進行調查時,被毒梟的人逮住了。

毒梟李武裴很有生意頭腦,打算進軍世界,所以跟敵手談判,說國內的販毒生意已經有了很好的掩護,要把國內的生意以不錯的價格讓給他。兩人談妥,要在碼頭交易。此時,四人也透過安裝在馬警官手機上的 app 追蹤而來。於是就在碼頭跟毒販的人打了一場,五人對四、五十個人。最終,五人打贏,總算是立下大功。

Green book

這故事真的是蠻好看的,轉台的時候看到,不知不覺就被吸進去看完。

唐想找人載他去美國南方巡迴演奏,東尼前往應徵,後來順利拿到這份工作,於是東尼就載著唐去美國南方了。在南北戰爭的那個時間點,美國南方並不歡迎黑人 (唐是黑人),也因此東尼非常的驚訝唐所受到的待遇,即便唐是受邀去演奏的,但白人對他的待遇很讓東尼無法認同。在一開始的時候,兩人並不對盤,但慢慢的經過這些遭遇,兩人也慢慢能相互體諒了。直到最後一場演奏,唐雖然受邀去演奏,卻被禁止在裏面用餐,被要求要去遠在幾個街口外的黑人餐廳用餐,東尼忿忿不平,極力跟餐廳經理爭取,但餐廳經理始終不願意。於是東尼跟唐協調之後,決定不演奏了。兩人一同到幾個街口外的餐廳去用餐,唐在此演奏了音樂給跟自己相同膚色的人們聽,大家聽的如痴如醉。用完餐,東尼開著夜車載唐趕回北方去過聖誕節,在途中,東尼體力不支,改由唐開車。他們在聖誕節前趕回去了,東尼邀請唐來家裡一起過節,唐婉拒了,但後來唐還是前往東尼家裡。兩人最終成為好朋友,持續保持著聯繫,直到 2013 年。

CPack

在 twitter 上看到有人推薦 RPiPlay 這個專案,這個開放原始碼軟體主要的用途是當作 AirPlay 伺服器。當這個軟體啟動時,MacOS 裝置跟 iOS 裝置會搜尋到啟動這個軟體的裝置,當選擇鏡射時,就可以將 MacOS 裝置或 iOS 裝置上的畫面投放過去。作者主要是用在 Raspberry Pi 上,但其實在一般的 Linux distribution 上也可以使用。

目前作者沒有打包任何的套件,因此要用,只能自行編譯、安裝。編譯方法蠻簡單的,因為我是用 ubuntu ,所以這邊只介紹 Ubuntu 上怎麼編譯。首先安裝編譯器跟 RPiPlay 會用到的函式庫標頭檔

sudo apt-get install cmake \
    libavahi-compat-libdnssd-dev \
    libplist-dev \
    libssl-dev

接著下載原始碼跟進行編譯

git clone https://github.com/FD-/RPiPlay.git
cd RPiPlay
mkdir build
cd build
cmake ..
make

等編譯完成後,再安裝

sudo make install

等等,講到這邊還沒提到 CPack 啊。

因為我喜歡儘量使用 package 來管理,所以就想到,這可以打包為 debian package 嗎?就找了資料,發現 CMake 專案可以搭配 CPack 來進行打包。

CPack 使用上也很簡單,先安裝 CPack

sudo apt-get install cpack

然後修改專案裡的 CMakeLists.txt ,加入以下幾行

SET(CPACK_GENERATOR "DEB")
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "2")
SET(CPACK_PACKAGE_VERSION_PATCH "0")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Yan-ren Tsai")
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libavahi-compat-libdnssd1,libplist3,libssl1.1,libgstreamer1.0-0,libgstreamer-plugins-base1.0-0,gstreamer1.0-libav,gstreamer1.0-vaapi,gstreamer1.0-plugins-bad")
INCLUDE(CPack)

接著重新做一次前面 cmake 的步驟,最後再執行 cpack 即可

# 假設已經在 RPiPlay 目錄下
mkdir build
cd build
cmake ..
make
cpack

執行完,就會在目錄下看到 rpiplay-1.2.0-Linux.deb

使用 sudo dpkg -i rpiplay-1.2.0-Linux.deb 就可以安裝了。

參考資料

電影流水帳(2020/12/16~2020/12/31)

142624_9666
Saoirse Ronan

飲食男女

李安拍的電影裡,我最喜歡的就是飲食男女,因為它有趣味、有驚喜,也有溫馨。

故事是朱家一家人的故事,朱爸爸是個廚師,退休前在圓山飯店擔任主廚,因為味覺退化而退休。退下來以後,只在周末做大菜給三個女兒吃。朱爸爸有個好朋友,老溫,仍然在圓山飯店裡任職,三不五時會找朱爸爸回去救援。

家珍是個老師,信仰是天主教,因為以前學生時代的情傷,一直還沒結婚,在認識體育老師以後,整個大解放。家倩在商場得意,但買的預售屋的建設公司倒閉了,沒了房子,後來遇到姊姊的男友,發現姊姊騙了大家,她並沒有情傷。之後家倩跟父親和解,接了爸爸的擔子。家寧是大學生,在速食店打工,後來認識了朋友的男友 – 國倫,因為以為朋友跟國倫分了,就放心的跟國倫發展出戀情,豈料家倩的朋友只是嘴裏說說,實際卻還愛著國倫。

家倩是第一個說要離家的,因為她買房子了,只是事與願違。反而家寧才是第一個離家的,她未婚懷孕了,國倫負起責任,兩人共組家庭。家珍是第二個,在學校認識了體育老師 –  明道,因為學生的惡作劇,家珍反倒跟明道湊成一對。家倩並沒有離開,她房子的建商倒閉了。錦榮是朱家的鄰居,她有離婚官司纏身,再加上要維持生計,所以很忙碌,比較少時間照顧在念小學的女兒。退休的朱爸爸正好幫上了忙,幫忙照顧錦榮的女兒,也常跟錦榮的媽媽聊天,錦榮的媽媽因此對朱爸爸很有好感。

故事的最後,大家一起到朱家吃飯,幾杯黃湯下肚以後,換朱爸爸宣佈事情了。錦榮的媽媽以為朱爸爸會宣佈跟自己在一起的事情,豈料並不是,而是說要要賣房子跟錦榮結婚,錦榮的媽媽聽到以後,氣的要命,家寧、家珍跟家倩也都嚇了一大跳。雖然很驚訝,但三個女兒之後也接受了這樣的決定。家寧、家珍跟朱爸爸都有了好的歸宿,家倩在房子要賣掉的最後一天煮了一餐,找了大家回來吃,可是只有爸爸能回來。兩人一同吃飯,吃著吃著,朱爸爸說,「這湯的味道不大對。」,家倩聽到原本有些不開心的,但突然像是發現了新大陸一樣,拉著爸爸的手說,「你的味覺回來了。」朱爸爸也赫然發現自己的味覺恢復了,故事就這樣落幕。

熱帶魚

劉志強是個國中三年級的學生,正準備要聯考,父親對他的成績很不滿意,認為他沒好好唸書。雖說是即將要聯考的日子,但社會的事件並不因此而有所減損,這陣子王道南被綁架的案子鬧的沸沸揚揚。這天劉志強放學回家的路上,意外在某台貨車上看到道南,他覺得自己應該可以救出道南,就上了車。想不到,卻因此被抓住,當成第二個人質。

綁匪有兩個人,一個是已經退休的警察,一個是阿慶,兩人打電話給兩個人質的父母要錢,想不到沒拿到錢,主嫌,也就是已經退休的警察卻發生意外死了,六神無主的阿慶只好帶著兩個人質逃回南部,找阿姨商量。跟阿姨商量後的結果,決定繼續進行綁票,於是打電話向劉志強的父母勒索。

劉志強跟道南在最初是有想要逃走的,但是後來卻打消了念頭,道南家裡沒人、沒溫暖,而劉志強是不想考聯考,兩人反倒是跟阿慶一家人打成一片。阿慶一家人其實本性不壞,只是利字當前,慢慢的走歪了。阿慶一家人在電視上看到劉志強父母說劉志強要考聯考,就趕緊找了書給劉志強準備聯考。警察追查了好一陣子,透過各種線索,判斷兩人應該在中南部,開始往中南部找。阿慶一家人緊張了,就加緊勒贖的腳步,並且讓阿慶跟阿雄帶著兩個孩子出海躲風頭。勒贖並不順利,持續了好幾次,要不就是錯過,要不就是等錯地點。轉眼,已經是聯考前一天了,阿慶心裡想,就讓孩子回去聯考吧,錢不要了。於是要把船開回去,開車送兩個孩子回台北。

事情就是這麼的巧合,船就在這個節骨眼拋錨了,阿慶跟阿雄連忙把孩子放在游泳圈上,游泳把孩子推回去。兩人費了九牛二虎之力,終於把孩子們推到岸邊。兩個來港邊摸魚的刑警,在發贏來的香腸時,看到行跡可疑的阿慶一家人,再看到剛上岸的阿慶、阿雄跟兩個孩子,連忙拿出手槍,要阿慶跟阿雄舉起手來。劉志強連忙說,是阿慶他們救了我們,刑警才放下槍,趕緊送劉志強回台北聯考。阿慶一家人從綁架犯變成救了劉志強的英雄,故事就這樣結束了。

City Of Ember

我是轉台時看到的,從大約 1/3 的地方開始看起。吸引我的是女主角 Saoirse Ronan 。

在經過一次事件以後,所有人都住到了地底城市,但是這個城市因為年久失修,慢慢的毀損,照理說,毀損了會有人去維修的,但知道怎麼維修的工程師早在事件之後死去了。這個城市正在逐漸的死去,人們慢慢因為缺乏食物以及民生設施毀壞開始發生通貨膨脹以及爭奪的情況,當任的市長腐敗而且怯懦,並不管市民的死活。

Lina 跟 Doon 發現了城市正在死去,並意外找到前人留下的蛛絲馬跡,得知有機會可以拯救這個城市。於是他們開始依照隱晦的文字去尋找前人工程師留下的自救機關。在這過程裡,Lina 跟 Doon 發現了市長的腐敗,被市長派人追殺,但也因此取得一個關鍵的零件。兩人在躲避追殺的過程,取得關鍵的線索,終於找到走出微光城市的路。

走上地面後,天空一片漆黑,Lina 跟 Doon 以為他們失敗了,正沮喪著的時候,天邊透出一絲光亮,慢慢透出了顏色,橘紅的晨曦染紅了天空,火紅的太陽隨即躍出。Lina 跟 Doon 這時知道他們成功了,於是在紙上寫下了走出城市的方法,綁在石頭上,往洞裡投下,告知微光城市的市民們。

這結局看起來是有續集的,只是過了 12 年還沒消息,那大概就不會有了。

vagrant virtualbox provider 加載磁碟

前兩天想練習 LVM,所以試著在既有的 RHEL VM 裡加磁碟,但是事情沒有想的那麼簡單。原本以為就是照 Vagrant Disk Usage 文件的說明,在 Vagrantfile 裡加入

config.vm.disk :disk, size: "100GB"

就可以,但這樣不行,vagrant reload 以後,並沒有磁碟出現。

上網找解決方法,找到這篇:Add a second disk to system using vagrant

才知道是要用 provider 的 customize() 去建立磁碟並加載才行 (參考資料:Add a second disk to system using vagrant):

    tower.vm.provider "virtualbox" do |v|
      file_to_disk1 = "mydisk1.vmdk"
      unless File.exist?(file_to_disk1)
        v.customize [
           "createmedium", "disk", "--filename", file_to_disk1, "--format", "vmdk", "--size", 1024 * 1
         ]
      end
      file_to_disk2 = "mydisk2.vmdk"
      unless File.exist?(file_to_disk2)
        v.customize [
           "createmedium", "disk", "--filename", file_to_disk2, "--format", "vmdk", "--size", 1024 * 1
         ]
      end
      v.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk1]
      v.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 2, '--device', 0, '--type', 'hdd', '--medium', file_to_disk2]
    end

在建立前,先使用 File.exists? 去做檢查磁碟映像檔是否存在,不存在,就呼叫 createmedium 來建立。接著再用 storageattach 加載到 VM 上就可以了。

如果有錯誤訊息,說沒有 SATA Controller,請開啟 VirtualBox 去看該 VM 是不是有 SATA Controller。

參考資料:

  1. vagrant – Set storage size on creation of VM VirtualBox – Unix & Linux Stack Exchange
  2. Vagrant Tricks: Add extra disk to box – real world IT
  3. https://gist.github.com/leifg/4713995

ansible-builder

看到這篇:紅帽推出IT自動化工具Ansible Builder以加速執行環境創建 | iThome ,所以就來試試看。

就我試用過以後,我的理解是,這工具可以幫忙創建出一個具有 Ansible 環境的 docker image。

環境是定義在 execution-environment.yml 裡,讓我們直接看範例

---
version: 1

# 即基礎 image,目前來說,都是用 quay.io/ansible/ansible-runner:stable-2.9-devel
base_image: 'quay.io/ansible/ansible-runner:stable-2.9-devel'

# 需要自訂 ansible.cfg 的話,這邊就是填 ansible.cfg 的路徑檔名
ansible_config: 'ansible.cfg'

# 相依
# galaxy 是填 requirements.yml,檔案裡描述 playbook 會用到的 role/collection,沒用到可以不填
# python 則是填 requirements.txt,檔案裡描述會使用到的 Python modules,沒用到可以不填
dependencies:
  galaxy: requirements.yml
  python:

# 額外要加入的 docker image 建置步驟
# prepend 會在預定的建置步驟之前
# append 則是在預定的建置步驟之後
additional_build_steps:
  prepend: |
    RUN whoami
    RUN cat /etc/os-release
  append:
    - RUN echo This is a post-install command!
    - RUN ls -la /etc

有了 execution-environment.yml 之後,就可以用 ansible-builder 來建置。

首先,得先安裝:

# python3
pip3 install ansible-builder

接著就可以建置了

ansible-builder build --tag=example

建置完成,會有 docker image,在目錄下則會出現 context 資料夾,這個資料夾裏面就是 ansible-builder 建置過程中所產出的 Dockerfile 以及建置 Docker image 所需的檔案。

打開 Dockerfile ,就會看到 ansible-builder 幫我們產出了什麼。

FROM quay.io/ansible/ansible-runner:stable-2.9-devel as galaxy

ADD ansible.cfg ~/.ansible.cfg

ADD requirements.yml /build/

RUN ansible-galaxy role install -r /build/requirements.yml --roles-path /usr/share/ansible/roles
RUN ansible-galaxy collection install -r /build/requirements.yml --collections-path /usr/share/ansible/collections

RUN mkdir -p /usr/share/ansible/roles /usr/share/ansible/collections

FROM quay.io/ansible/python-builder:latest as builder

ADD requirements_combined.txt /tmp/src/requirements.txt
RUN assemble

FROM quay.io/ansible/ansible-runner:stable-2.9-devel

RUN whoami
RUN cat /etc/os-release

COPY --from=galaxy /usr/share/ansible/roles /usr/share/ansible/roles
COPY --from=galaxy /usr/share/ansible/collections /usr/share/ansible/collections

COPY --from=builder /output/ /output/
RUN /output/install-from-bindep && rm -rf /output/wheels
RUN echo This is a post-install command!
RUN ls -la /etc

大抵來說,

  1. 使用了 multi stage build 以減少 docker image 的大小
  2. 使用 ansible-galaxy 安裝相依的 role/collection
  3. 會看到 additional_build_steps 裡描述的步驟

好,那建置出 docker image 以後,怎麼使用呢?

假設 playbook 是放在 project 目錄下,那麼就這樣執行

docker run --rm -v /runner/project:$(pwd)/project -it example:latest ansible-playbook -i localhost, -c local /runner/project/test.yml

這邊稍微取了點巧,只簡單用 local connection (-i localhost, -c local) 在本機執行,你也可以在這邊使用自己的 inventory。

建置出 Ansible 執行環境的 docker image 以後,除了可以固定住執行 Ansible playbook 的環境,也有利於打造出標準化的 CD 環境,進而減少開發與佈署的時間。

電影流水帳(2020/10/01~2020/12/15)

Hashimoto Kanna at Opening Ceremony of the Tokyo International Film Festival 2017
橋本環奈,飾演黃夫人。
  • Elona Holmes (IMDB, Wikipedia),台譯:天才少女福爾摩斯。
  • 劇場版「鬼滅の刃」無限列車編 (IMDB, Wikipedia),台譯:鬼滅之刃劇場版 無限列車篇。
  • 新解釈・三國志 (IMDB, Wikipedia),台譯:新解釋・三國志。

Elona Holmes

改編自 Nancy Springer 所寫的 Enola Holmes Mysteries 系列少年偵探小說,故事挺有意思的,讓人想找小說來看看。

故事一開始就是 Elona Holmes 的自述,說明為什麼自己現在一個人騎著腳踏車往車站前進。Elona 從小就跟媽媽一起住在郊區,很少看到兩個哥哥。時間過的很快,Elona 一下子就變成婷婷玉立的少女了。在她生日的這天,媽媽卻不見了。她找了好久都沒找到,只好聯絡兩個哥哥,她騎著腳踏車去車站就是為了接哥哥。哥哥們見到她,特別是大哥,只覺得是個累贅,說會把她送去淑女學校,讓她好好當個淑女,Sherlock 倒是沒作聲。Elona 心裡當然是不肯,在解開媽媽留下的謎題之後,她喬裝離家了。

喬裝離家後,她遇到一個也是逃家的男生 Tewkesbury,兩人算是做了朋友,彼此幫忙一同到了倫敦。Elona 開始調查媽媽去了哪裡,一方面也稍稍摸清了 Tewkesbury 的底細。由於 Tewkesbury 的身世是個貴族,再加上最近報上的新聞,她覺得這些事情並不單純,開始進行調查。Elona 的兩個哥哥在 Elona 逃家後,當然擔心啊,大哥找了警探幫忙,二哥 Sherlock 則是透過媽媽留下的線索,沿路追查妹妹下落。Elona 找媽媽的過程跟 Tewkesbury 遭到追殺的事情交錯在一起,整個故事因此高潮迭起。最後,Elona 解開了 Tewkesbury 被追殺的謎團,媽媽的離開恰好與 Tewkesbury 被追殺的緣由相關,是為了一個與女性自主權相關的法案。Elona 找到媽媽,與媽媽重逢,也跟兩個哥哥達成共識,不再需要聽大哥的話去淑女學校唸書,改由 Sherlock 當監護人。故事到這裡就結束了,照常理來推測故事走向,未來會是 Elona 跟 Sherlock 跟 Watson 一同辦案了吧。

劇場版「鬼滅の刃」無限列車編

故事延續動畫第一季的最後,炭治郎一行人在休養結束後,聽從產屋敷耀哉的命令,前往車站搭乘無限列車與炎柱・煉獄杏壽郎會合。故事線蠻單純的,動畫第一季最後留下的伏筆,下弦的魘夢出現了,他利用人們心裡的遺憾與對親人的懷念來操縱他們襲擊列車,炭治郎一行人因此陷入夢裡。但是炭治郎在夢裡發現了異狀,並找到方法解開夢境,回到現實喚醒其他人。接著,一行人開始跟魘夢展開戰鬥。花了一番功夫後,終於將魘夢打倒。只是遇上趕來的上弦猗窩座之後,炎柱杏壽郎壯烈犧牲。

新解釈・三國志

與其說是在講述歷史,不如說是以三國當背景的漫才,有搞笑,有吐嘈。選角都很不錯,在裏面看到不少認識的角色,例如,董卓是勇者義彥裡的佛祖,黃巾是勇者義彥裡的勇者,孔明是勇者義彥裡的魔法師,黃夫人是齊木楠雄的災難裡的照橋心美,曹操是信長協奏曲裡的信長。

故事從桃園三結義講到討伐黃巾,再到美人計,再到長阪坡,再到赤壁之戰,把一些重點的事情都交代了。

直接用 SSH 登入 vagrant 虛擬機失敗

試著直接使用 SSH 登入 vagrant 開出來的 Ubuntu 虛擬機,會出現錯誤訊息:

SSH Login Failed : Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

可是用 vagrant ssh 卻可以登入,用 vagrant ssh 登入進去查,SSH daemon 有啟動,所以 SSH 服務是沒問題的。後來透過錯誤訊息才查到,是 SSH Daemon 裡的 PasswordAuthentication 被設定為 no 了。所以修改 /etc/ssh/sshd_config ,將 PasswordAuthentication 設定為 yes 後,就可以用 ssh 登入了。

vagrant ssh 之所以可以登入,是因為在初始化虛擬機時,預先產生好 SSH Key,並且把 SSH public key 放到虛擬機裡了。另外一種解決方法,就是使用產生好的 SSH private key 來登入。

ssh -i .vagrant/machines/<your_machine_name>/virtualbox/private_key ubuntu@<your_machine_ip>

參考資料:

電影流水帳(2020/09/16~2020/09/30)

MSDHOFL EC007
Sandra Bullock
  • Ocean’s Eight (IMDB, Wikipedia),台譯:瞞天過海-八面玲瓏。
  • John Wick: Chapter 3 – Parabellum (IMDB, Wikipedia),台譯:捍衛任務 3-全面開戰。

Ocean’s Eight

套路跟 Ocean’s Eleven 系列一樣,重拍的不錯,故事最後的轉折也蠻令人驚喜。

Debbie Ocean 是 Daniel Ocean 的妹妹,身上流著家族的血液,自然做的事業也一樣。Debbie 剛從監獄裡出來,就找了舊日的伙伴 Lou,打算偷取珠寶。經過討論之後,開始邊找需要的同伴。找到 7 個伙伴之後,接著就開始進行計劃。進行的過程中雖然有小差池,但仍然順利完成,也順利栽贓給害 Debbie 入獄的前男友。最後才發現戴珠寶的 Daphne 也是同伙,這就我說的小驚喜,有點出人意料,不過也是可以想像的到的啦。

John Wick: Chapter 3 – Parabellum

承接上集的故事,John Wick 被下令追捕,所以 John Wick 試圖想找到解決方法,避免再被追殺。透過之前的人情,他順利逃脫,並找到了 Sofia 。Sofia 帶他去找以前的老闆,想再透過他找到高桌會上層。John 順利問到,可是這裡再次因為狗狗的緣故,發生慘案。Sofia 的狗狗被殺,一怒之下大開殺戒,幹掉自己以前的老闆。兩人邊打邊走,到了沙漠,在這裡,John 跟 Sofia 分開,John 去找高桌會上層。

在紐約,高桌會的審判員開始進行調查,調查是誰放了 John,是誰幫了 John,並找了殺手 Zero 去「處理」這些人。John 在沙漠遇到了高桌會上層,達成了協議,只要 John 繼續幫高桌會殺人,那麼就既往不究。第一個要殺的人就是幫 John 逃脫的大陸飯店經理 Winston。於是 John 回到紐約,要去殺 Winston。Zero 也接收到指令,要去殺自己敬仰的 John。John 一邊對抗 Zero 跟他的人,一邊往大陸飯店前進,想完成殺 Winston 的任務。Zero 一路追 John 追到大陸飯店,只差一點就要殺了 John,卻因為大陸飯店的禁令而無法動手。高桌會審判員這時向高層申請解除禁令,於是又開始一番殺戮。John 還是沒能殺 Winston,他跟 Winston 決定聯手對抗高桌會。經過一番打鬥,Zero 跟他的人都被 John 幹掉,John 正打算殺了審判員,只是就在這時候,Winston 跟審判員達成協議,他開槍打了 John ,John 受了傷從樓頂掉了下去。協議內容是,Winston 仍然是大陸飯店經理,而審判員免於被殺。

John 就這樣死了嗎?沒有,他被應該已經死去的 The Bowery King 救了,John 醒了以後,發現自己又被背叛,覺得很怒。這集故事到這邊收了尾,看起來還有續集。