Planet Linux of Taiwan

06月19日

COSCUP's face
COSCUP


縮小 展開

社群攤位開放申請 - Submit your community booths application for COSCUP `18 before June 30!

大家照過來,COSCUP 2018 社群攤位招募準備盛大展開啦!

(English Below)
來 COSCUP 除了參與眾多精彩的議程外,加入 FLOSS (自由及開放原始碼軟體)社群更是認識同好的好方法喔!
各位熱血的 FLOSS 社群夥伴們,想要有招募新血、宣傳自己,或跟社員一起認親團聚瞎扯的機會嗎?COSCUP 2018 將開放部分攤位供 FLOSS 社群擺攤,只要按照表單提出申請,就可能可以在眾多攤位中得到一席之地喔!

申請辦法

  • 截止日期:2018 年 6 月 30 日
  • 公佈日期:2018 年 7 月 7 日對外公佈,並且同步寄信通知。
  • 申請對象:FLOSS (自由/開源相關)社群,使用或推廣自由軟體或開放源碼軟體之非營利組織。
  • 申請文件:申請表單在此

活動詳情

  • 大會攤位提供物品:
    • 報名成功錄取後,我們會提供更詳細的攤位規格書供大家參考。
    • 一張桌子(180 x 60 cm)且配有兩張椅子,有可能與其他社群共桌。
    • 至少一個 110V 電力插座(總消耗功率 550W 內),建議自行攜帶電力延長線。
  • 社群攤位若有任何異動,需至少提前於會前七天(8/4前)通知社群攤位聯絡窗口。
  • 請確保大會期間之任何時段,攤位至少有一人顧攤。
  • 大會期間貴重物品請自行保管,大會不負保管之責。
  • 攤位使用注意事項:
    • 皆以不干擾或影響其他攤位權益與大會進行為最高原則。
    • 如有提供飲食、或是有音樂、影片等「會播放聲音」的情形,請於 8/4 前告知社群攤位聯絡窗口。
    • 如有額外的大會場地相關需求(包括增加/減少桌椅等等),請於 8/4 前先告知社群攤位聯絡窗口。
    • 如擺攤人員是利用社群攤位身份入場,而非會眾或講師,將無法聆聽 COSCUP 大會議程。
    • 若要進出會議廳聆聽議程,請務必配戴會眾識別證。
    • 在此若有未盡詳實之處,將由大會場務組於現場協調,敬請配合調整。
如果還有相關問題及意見,也歡迎寄信來信詢問/指教喔!

社群攤位聯絡窗口

  • 攤位組長 鍾任哲(Kuma) <kumano1131at gmail.com>
  • 場務組長 林育慈 <linyutsu23 at gmail.com>

Ladies and gentlemen! Application for COSCUP community booths is started NOW!

Besides the exciting sessions, COSCUP is also a community which connected with all Free/Libre/Open source software(FLOSS).
For FLOSS communities, you mustn't miss this chance to set up a booth in COSCUP, a great opportunity to introduce yourself, display your work, and connect with thousands of open source contributors and hobbyists all around Taiwan.
Ready to join? Follow the instructions and fill in the application form below!

How to Apply:

  • Application Deadline: June 30, 2018
  • Result Announcement: July 7, 2018, and will notify by mail too.
  • Applicants: FLOSS (Free software/open source related) communities, and non-profits that uses or promotes free software or open source software.
  • Application Form: Application Form

About the booths

  • Items provided:
    • Further information would be provided if applicants are adopted.
    • One table (180 x 60 cm), with two chairs. Tables might probably share with other communities if necessary.
    • At least ONE 110V AC socket (Total power consumption mustn’t exceed 550W), bring an own power strip if it is needed.
  • Any modifications to your application must be notified 7 days prior to the event (before Aug. 4).
  • The booth must be manned anytime during the conference.
  • Please ensure your goods and valuables during and prior to the conference, COSCUP is not responsible for any losses during the event..
  • Other terms:
    • As a courtesy to others, please follow conference regulations and respect the other booths’ rights.
    • Any vocal or sound effects playing, film or video showing and food providing within the exhibition areas must be notified 7 days prior to the event(before Aug. 4).
    • Any other requests for the booth or the venue (including extra tables/chairs, etc..) must be notified 7 days prior to the event (before Aug. 4).
    • Personnel that entered for booth exhibition or installation can’t join the conference sessions, except if they hold an attendee’s ticket.
    • Attendees’ badge must be worn in order to enter any conference rooms.
    • Anything not mentioned here will be coordinated by the Field Service team on-site, so please cooperate and comply with them.
    • COSCOP reserved all the rights for the final explanations of the event.
Any questions or thoughts? Feel free to contact us!

Contact us

  • Booth Manager 鍾任哲(Kuma) <kumano1131 at gmail.com>
  • Field Service Manager 林育慈(Eunice) <linyutsu23 at gmail.com>

06月16日

sakananote's face
sakananote


縮小 展開

Portainer with openSUSE Leap 15 小記

Portainer with openSUSE Leap 15 小記


OS:  openSUSE Leap 15


因為讀書會的關係, 接下來要練習 portainer


官方網站


下載 potainer image


# docker   image  pull  portainer/portainer


確認資訊


# docker  images
REPOSITORY            TAG IMAGE ID            CREATED SIZE
portainer/portainer   latest 50c62d83c09c        3 weeks ago 54.1MB


使用 docker run 來執行 portainer


# docker  run  -d  -p  9000:9000  -v  /var/run/docker.sock:/var/run/docker.sock  portainer/portainer


41c93d65b4dbb18b50089361e9f96f55b1615847fc564d98214994736c10060b

使用瀏覽器開啟  http://localhost:9000
設定 admin 的密碼
點選 Create user



選取連接的方式


因為是讀書會的關係, 先來嘗試 Local 的連接方式
但是這個部份要配合 -v /var/run/docker.sock:/var/run/docker.sock 才可以
點選 Connect



接下來就會出現漂亮的 dashboard




在 App Templates 有一些 template 可以供安裝



這邊嘗試使用 Nginx 來進行實驗
最簡單的方式就是輸入名稱
點選 Deploy the Container

這個時候就會在 Containers 這邊看到相關資訊
因為剛剛我們沒有特別指定 port, 所以就會隨機指定一個 port 到container 裡面的 port 80 / 443




點選 Container 的名字之後
可以使用圖示來進行 container 的基本操作
觀察 status, 使用終端機這類的操作



接下來嘗試另外一種建立 container 的方式


點選 Containers 裡面的 Add container



在設定的畫面中
這邊先嘗試只輸入名稱 以及 image name (這邊以 sakana/jupyterhub 為例子 )
點選 Deploy the container

因為沒有指定 port mapping 或是開啟 Publish all exposed ports
所以就不會 有 Published Ports




如果有開啟 Publish all exposed ports
就會隨機指定一個 port 給 Dockfile 內有指定 EXPOSE 的 port




---------------------------------


實驗完 Local 的方式, 接下來實驗 docker swarm 的連接


首先我是在 Azure 上面開了 3 台 openSUSE Leap 來建立 docker swarm


建立的方式很簡單


Manager node 使用 #docker  swarm  init  --advertise-addr  IP_ADDRESS 初始化
Worker node 使用 manager node 吐出來的 join 指令加入
  • 例如 # docker swarm  join     --token SWMTKN-1-5tq2mf503fj8oc1ehvuh0zybr8t2bxwzrlma1b0wokfj5kzc2m-eqixr308uwmhqso82bovb6hf5     10.0.0.4:2377


點選左邊的 Endpoints
點選 Add endpoint



在連接的畫面會看到
還剩下兩種方式
  • Docker
    • 這個要連接 Docker 主機的 api port
  • Portainer Agent
    • 這個我還沒有試過, 但是連接 port 9001



目前先嘗試 連接 docker
但是要先提到, 之前有發生 port 2375 暴露產生的漏洞, 所以 docker 官方是建議 使用 port 2376 + TLS


個人的想法是除了使用憑證以外, 還要使用 firewall 限制 ip 等等


但是因為是讀書會, 所以目前嘗試的方式是開啟 port 2375
作法參考網路上找到的方式


# vi   /usr/lib/systemd/system/docker.service
修改 ExecStart 的參數, 加入紅色的部份


ExecStart=/usr/bin/dockerd --containerd /run/containerd/containerd.sock --add-runtime oci=/usr/bin/docker-runc -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
#ExecStart=/usr/bin/dockerd --containerd /run/containerd/containerd.sock --add-runtime oci=/usr/bin/docker-runc $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS


# systemctl   daemon-reload


重新啟動 docker
# systemctl  restart  docker


檢查 參數
# ps -ef  | grep docker


#netstat  -tupln
tcp        0 0 :::2375                 :::*                    LISTEN 21501/dockerd  


接下來就到 portainer 上面輸入 名字 +  IP:2375
就可以了


成功之後
左上角就會出現 CHANGE ENVIRONMENT
就可以用下拉式選單選遠端的 docker



因為是使用 docker swarm
所以會有些差異, 例如 Services , Stacks 還有 Swarm



接下來就可以使用圖形界面來管理 docker swarm 以及遠端的 docker 了
:)


讀書會又前進一步


~ enjoy it


------------------------------

2018/6/16 更新

遠端連接的部份 port 2376 的部份
使用 DigitalOcean 來進行實驗
利用 docker-machine 指令來建立 DigitalOcean 的VM, 本質上就會在 port 2376 listen
然後 docker-machine 也會幫忙建立憑證與 key

連接的方式
輸入名稱 以及 Endpoint URL 記得 port 是 2376
選取 TLS with Client verification only ( 或是 skip server verification )
TLS certificate 用 ~/.docker/machine/certs/cert.pem
TLS Key 用 ~/.docker/machine/certs/key.pem
點選 Add endpoint


Reference:


06月15日

sakananote's face
sakananote


縮小 展開

Transactional updates with kubic 小記

20180613

Transactional updates with kubic 小記

OS: openSUSE Tumbleweed Kubic

先解釋 Kubic

官方網站:
有一段說明
Container as a Service Platform based on Kubernetes atop openSUSE MicroOS

簡單來說就是以 openSUSE Tumbleweed 為 Base OS 來提供容器平台
  • 裡面有使用 openSUSE MicroOS (https://en.opensuse.org/Kubic:MicroOS ) 來針對容器使用最佳化, 使用 atomic 方式針對 read-only room filesystem 進行升級
  • 可以使用 docker and podman 來使用容器
  • 可以使用 Kubernetes 來進行容器叢集管理
  • openSUSE / SUSE 使用  velum ( https://github.com/kubic-project/velum  ) 來進行 cluster 架設, 詳細可以看 Github 的說明

所以要使用 kubic 的第一步就是要了解 atomic 方式更新, 因為 openSUSE MicroOS 是 read-only root filesystem
  • 無法直接用 zypper 安裝 套件
  • 要使用 transactional-update 指令安裝套件
    • 安裝完套件要 reboot 才會生效
    • 可以 rollback 回到 snapshot
  • 搭配 btrfs filesystem

想要了解 transactional-update 可以參考 openSUSE Conference 2018 這場演講

我擷取裡面的一張簡報
簡單來說就是進行變更的時候
  • 會將現在的檔案系統建立快照 ( pre )
  • 進行變更
  • 建立變更後的快照 ( post )
  • 要生效要重新開機

先來看看指令說明吧

# transactional-update  --help
Syntax: transactional-update [options] [general-command...] [package-command]
       transactional-update [options] individual-command

Applies modifications to the system to a new snapshot without touching
the running system.

General Commands:
cleanup            Mark removable snapshots
grub.cfg           Regenerate grub.cfg
bootloader         Reinstall the bootloader
initrd             Regenerate initrd
kdump              Regenerate kdump initrd
reboot             Reboot after update
shell              Open rw shell in snapshot before exiting
...

如果使用 zypper 來安裝套件, 會得到下列相關錯誤訊息
Error: Subprocess failed. Error: RPM failed: error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Read-only file system)

所以要使用 transactional-update 指令來安裝套件, 這邊也用 traceroute 套件來示範

# transactional-update   pkg   in  traceroute
Checking for newer version.
transactional-update 2.3 started
Options: pkg in traceroute
Separate /var detected.
Creating read-only snapshot of current system state (#1)
Running in non UTF-8 locale. Setup is unsupported.
Copying /etc state into backup snapshot
Running in non UTF-8 locale. Setup is unsupported.
Copying /etc state into snapshot
Calling zypper install
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
 traceroute

1 new package to install.
Overall download size: 0 B. Already cached: 52.5 KiB. After the operation,
additional 103.5 KiB will be used.
Continue? [y/n/...? shows all options] (y):  Y
Checking for file conflicts: .............................................[done]
In cache traceroute-2.0.21-1.10.x86_64.rpm (1/1),  52.5 KiB (103.5 KiB unpacked)
(1/1) Installing: traceroute-2.0.21-1.10.x86_64 ..........................[done]
Trying to rebuild kdump initrd
Running in non UTF-8 locale. Setup is unsupported.
Please reboot your machine to activate the changes and avoid data loss.
transactional-update finished

這邊會提示要重開機才會生效

可以使用 findmnt 或是後面看到的 btrfs 指令來觀察目前的 snapshot

# findmnt   /
TARGET SOURCE                              FSTYPE OPTIONS
/      /dev/sda2[/@/.snapshots/1/snapshot] btrfs  ro,relatime,space_cache,subvolid=267,subvol=/@/.snapshots/1

使用 snapper  list 來觀察目前的快照

# snapper  list
Failed to set locale. Fix your system.
Running in non UTF-8 locale. Setup is unsupported.
Type   | # | Pre # | Date                     | User | Cleanup | Description  | Userdata
-------+---+-------+--------------------------+------+---------+-----------------------+--------------
single | 0 |       |        | root | | current              |
single | 1 |       | Wed Jun 13 13:45:15 2018 | root |         | first root filesystem |
single | 2 |       | Wed Jun 13 13:49:44 2018 | root | number  | after installation | important=yes
pre    | 3 |       | Wed Jun 13 15:03:33 2018 | root | number  | RO-Clone of #1 | important=yes
post   | 4 | 3     | Wed Jun 13 15:03:34 2018 | root |         | Snapshot Update |  

如果去執行 traceroue 指令, 會發現沒辦法執行, 因為還沒有生效

重開機來進行生效
# reboot

重開機之後可以使用 btrfs 指令觀察目前的 snapshot

# btrfs  subvolume  get-default   /
ID 274 gen 73 top level 266 path @/.snapshots/4/snapshot

如果要回到某個狀態 可以 使用 transactional-update  rollback 快照號碼

# transactional-update  rollback 1
transactional-update 2.3 started
Options: rollback 1
Separate /var detected.
Rollback to snapshot 1...
Running in non UTF-8 locale. Setup is unsupported.
Please reboot to finish rollback!

但是還是要重開機才會生效

這樣也算是跨出 kubic 一小步

~ enjoy it
Reference: