Image for post
Image for post

如果你像我一樣想要在 Vagrant 裡面運行 Ansible 做自動化部署的工作,但是找不到怎麼把 Vagrant 預設的 ssh login with key 用以下這個方法就可以解決。

預設的 Linux 帳號密碼是 vagrant/vagrant

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.box_version = "1809.01"

config.vm.provision "shell", inline: <<-SHELL
set -e -x -u
sed -i 's …

Image for post
Image for post

最近工作頻繁使用的虛擬化工具,在這邊稍微紀錄分享一下

工作上需要開幾台虛擬機工作,原先都是使用 Vagrant 來操作 VirtualBox 的腳本工具,Vagrant提供基本的 VM 控制包含虛擬機開關機、重開機、記憶體配給、CPU配給、網路 IP 設置及運行開機後初始化腳本。

Vagrantfile 可以說是本地虛擬機操縱自動化一手包辦,Vagrantfile 撰寫是 Ruby 看上去也十分容易。自從會用 Vagrant 就不會想去使用 VirtualBox 的 GUI 了,因為實在太慢了。

Vagrant 提供多種 Providers (也就是背後虛擬化操控的技術)最基本也最常被使用的就是 VirtualBox了,但如果想要得到更高的效能運行在 Linux 宿主機上可以選擇用 Libvirt. …


Image for post
Image for post
奧地利哈修塔特(Hallstatt)

由於 2017 年的時候沒寫回顧,突然臨時想說今年一定要趕在跨年前寫一篇2018年的回顧。封面就不免俗先來一張景點照到奧地利哈修塔特旅遊所攝影的。

九月中歐洲旅遊13天分別拜訪捷克、奧地利,兩個中歐國家。兩個國家首都各自介紹一下。

捷克布拉格,走在街道上彷彿踏上時光機回到中古世紀歐洲。在這個國家裡似乎每天所見所聞都像是活在電影場景裡面。下圖是我在布拉格舊城廣場(胡斯廣場)所拍攝的一景。

Image for post
Image for post

奧地利維也納,一個具有皇室貴族氣息的國家,國土領域雖然在歐洲算小,但散發一種皇家貴族的典雅氣息,通常我拜訪一個國家的大城市會喜歡上維基百科上看這國家的發展歷史,其中我注意到奧地利人類發展指數極高,當下其實有一種念頭就是移民奧地利。下圖是我在美泉宮所拍攝一景。

Image for post
Image for post

今年多學了兩種特別的休閒運動分別是自由潛水、馬術,也養 …


We classify the controller applications into active controllers and passive controllers based on whether the controllers proactively insert rules into the switches, or the rule insertions are triggered by the switches.

— Dong Jin and David M. Nicol. 2013. Parallel simulation of software defined networks. In Proceedings of the 1st ACM SIGSIM Conferen …


A CNI plugin designed for overlay networks with Open vSwitch

Image for post
Image for post
From Flax to Linen

由於看了好幾個 CNI 套件都跟紡織品或編織有關,例如 Flannel, Calico, Silk 和 Weave 最後就決定命名 Linen 作為 CNI Plugin 及 Flax 作為 Daemon。

Linen CNI repository on GitHub: https://github.com/John-Lin/linen-cni

Linen CNI 是一個近期正在開發的專案,主要目標是實現容器跨主機通訊,其架構主要是參考 Kubernetes 官方網站一篇 Kubernetes OpenVSwitch GRE/VxLAN networking 文章,藉由開發 L …


CNI 簡介

Image for post
Image for post

Container Networking Inteferface (以下簡稱 CNI)是一個由 CoreOS 所提出的一個容器網路規範並開發了一個專案 containernetworking/cni ,他的核心目標是針對容器提出一個解決方案將網路功能插件化(模組化)。

詳細的 CNI 規格說明可以參考: cni/SPEC

當啟用一個 CNI 插件,運作流程是在創建容器時,調用這個 CNI 插件並為這個容器配置網路設定,最後再啟動容器內的 Process ,最後當容器結束前 CNI 插件會將網路功能終止再清除設定。

目前這個網路模型已經廣泛的受到社群的認可,例如知名的容器集群管理平台 Kubernetes 即是支援這種 CNI 容器網路規範,目前依不同需求,或不同社群及偏好可以在 Kubernetes …


亞細亞的孤兒是一首歌,作者是羅大佑於1983年所創作的歌曲,它的歌名就是引用了吳濁流寫的小說《亞細亞的孤兒》。而羅大佑本人於2009年,才表示此曲原意是影射中美斷交事件中的臺灣人所面臨的外交困境。

臺灣在世界各種官方或非關方的場合被打壓已經不是一種特別新鮮的新聞,尤其是最近的WHA沒受邀參與研討會,臺灣的醫療在世界上的水準十分之高沒有與會實在可惜。

今天來分享一則故事,是關於我在服役所見的心得,是關於在臺灣掛國旗卻被要求撤下的故事。

我所在的服勤單位的業務屬於國際事務,每天幾乎都會與一些國際上的政府組織、學校單位或是民間單位做一些交流,至於交流的方式有很多種,最常見的就是邀宴、拜會或甚至與臺灣的學校協調邀請知名的人物到校演講。

事情就發生在最近這幾天,邀請了美國在臺協會(AIT)到某個北部的商工 …


Image for post
Image for post
http://openvswitch.org

前言

雖然官方網站就有安裝指南,不過還是精簡了它寫一篇簡單易讀的中文版本給需要入門的朋友參考。

硬體或虛擬機建議配置: 2 Processors 4GB RAM

  • 編譯 Open vSwitch 源碼
  • Open vSwitch 初始化設定
  • 開機後自動載入 Open vSwitch kernel module

編譯 Open vSwitch 源碼

Ubuntu 16.04 預設似乎沒有 Python 2.7 需要補安裝,此外 python-pip 為Python 套件管理系統,主要用來安裝 Python 的 six 套件。

$ sudo apt-get update
$ sudo apt-get install -y dh-autoreconf libssl-dev libcap-ng-dev openssl python python-pi …


這篇我會從頭開始來過,要把原本前幾篇的 VM destroy 主要是要與上一篇環境做區隔,為的是要讓按照教學做,但是做爛不知道該怎麼處理的朋友另一個可以參考的方向。

首先按下 Ctrl+D 登出 root 跟 Ubuntu 回到 Host 之後用 vagrant 指令關掉並且殺掉 VM

$ [host] vagrant halt
==> default: Attempting graceful shutdown of VM...
$ [host] vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated d …


在詳細進入每個操作步驟之前,會先把全面性的概要操作方法列出來,才不會有種見樹不見林的感覺。

  1. 建立 OVS Bridge 名稱 ovsbr0
  2. 直接對 OVS Bridge 設定一個 Static IP address ,並啟動
  3. 產生兩個 Containers 來當 Hosts
  4. 透過 ovs-docker/pipework 工具將 Containers attach 上 OVS Bridges

在這邊會做了幾張圖,比較好瞭解 OVS 每道指令在 network stack 上發生什麼作用。

Image for post
Image for post
Fig1. Original Network Stack

在 vagrant ssh 登入到 VM 之後,我們的 VM 上目前的 Network Stack 如圖一所示,可以看到 IP Stack 直接連上 interface enp0s3。此時我們還沒透過 OVS …

About

John-Lin

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store