星期五, 5月 04, 2018

使用 sim 卡在丹麥上網小記

使用 sim 卡在丹麥上網小記

這次來參加 KubeCon 2018 會議, 對自己來說最不一樣的一件事情, 就是嘗試自己帶 4G 分享器然後購買 sim 卡萊上網.

參考網路上的文章, 知道有兩家當地的電信 Lycamobile 與 Lebara
  • 提取行李的地方有看到 Lebara, 賣的是 All in one ( 99 Kr. 含語音以及上網 )
  • T3 出關後左手邊的商店有賣 Lycamobile Sim 卡( 29Kr. 需要額外儲值 )

因為是來參加會議, 主要的想法是上網, 所以語音的部分對我來說是非必要的支出.
所以我選擇 Lycamobile 的 sim 卡 + 儲值的做法


在介紹的頁面中, 有提到資料加值的價錢
我們因為風險因素, 所以選擇了 1GB 25 克朗(Kr) 的做法


先說自己的小結論, 雖然我沒有買過歐洲通用 sim 卡, 但是我只能說
要省錢就是自己要花時間 :)

為何這樣說呢? 因為跟在台灣找業者租用已經設定好的分享器, 自己弄 sim 卡大概要進行以下步驟
  • 在手機上面實驗是否可以開通網路
    • 要知道自己的行動號碼
    • 要開通自己的帳戶
    • 到網路或是使用簡訊進行資料傳輸量加值
    • 要手動設定 APN 以及帳號 / 密碼 以及重新開機
    • 視情況還要開啟漫遊


接下來就紀錄這次使用 sim 卡來上網的相關流程

首先是 Lycamobile 官方網站
  • 沒有使用過, 真的不知道是否要註冊帳號
    • 我跟同事嘗試去註冊, 但是都在地址的部分卡關
    • 後來才發現, 購買 sim卡根本不需要註冊帳號啟用, 預設已經啟用 Orz….

首先尋找 DM 上面看到的資料方案 https://www.lycamobile.dk/en/bundle
點選 Data
看到方案之後, 就會產生第一個疑問....
是 NEW customer 還是 EXISTING Customer ?


點選 NEW customer 就會發現要選 sim卡大小, 所以不是
退回來 點選 EXISTING Customer




接下來的疑問就會是.... 啊電話號碼是幾號???
這個時候, 不得不說, Lycamobile 有附中文的用戶指南, 真的是太重要了


以 Lycamobile 來說, 撥 *105# 就會顯示電話號碼
前面的 +45 是丹麥的國碼, 所以電話號碼按照上面的要求前面要加上 0
就是 091682522



接下來在要使用信用卡付款加值的時候
就又會出現一個好笑的場景, 不同的信用卡公司, 驗證的方式不一樣, 有個銀行有支援 3D 驗證, 可以再刷卡的時候填入自訂的驗證密碼就可以刷卡, 有些銀行則要傳送簡訊來驗證.
所以就會變成
  1. 插入丹麥的 sim 卡, 撥號 *105# 顯示丹麥號碼
  2. 換回台灣的 sim 卡, 進行刷卡驗證程序
  3. 再換回丹麥的 sim 卡進行下來步驟( 到這邊的時候, 其實你就有感覺是花錢買時間了 )

資料加值了, 網路就會通嗎 ….
答案是....當然不會
接下來就是要手動設定 APN 相關資訊

搜尋 Lycamobile APN 可能可以找到下列頁面

有關於 APN 設定可以參考官網上面的影片 https://www.youtube.com/watch?v=vM5p7jvWKik


這邊的心得只有
  • APN 名稱不能短一點嗎?  data.lycamobile.dk 這麼長
  • Username 與密碼 不能一樣或是簡單一點嗎?
  • 重開手機這麼重要的事情順便打在字幕上不是很好嗎? 為何只用說的 ...

進行到這邊的時候, 手機就可以上網了
但是我使用 TP-Link 的 4G分享器 M7300 還沒有辦法上網
觀察了一下, 在飯店這邊他是使用, 另外一家當地網路的訊號, 所以上面有出現當地網路的名字而非 Lycamobile 名字以及R ( 漫遊的標誌 )
使用 TP-Link 的 APP 進去 網路設定中的允許漫遊, 就可以上網了


也算是跨出使用外國 sim 卡在當地上網的一小步

~ enjoy it

Reference:

星期六, 4月 21, 2018

利用 Ansible playbook 建立 azure 與 ansible套件於 openSUSE & Ubuntu Linux

利用 Ansible playbook 建立 azure 與 ansible套件於 openSUSE & Ubuntu Linux

之前的文章在測試  Azure Dynamic Inventory 的時候, azure 與 ansible 環境是手動建立的.

所以順手寫了一個 azure_install.yml 的 playbook
  • 針對 hosts 檔案內的群組[ AzureHost ]  進行相關套件安裝, 所以只要把主機加入該群組就好

處理內容如下
  • 安裝 Azure python SDK
  • 安裝 ansible 套件然後不能跟 python 衝突( 符合 python 套件需要 )
  • 下載 azure_rm.py
  • 建立空檔案 ~/.azure/credentials 方便日後輸入認證資訊


azure_install.yml 檔案內容如下

---
#########################################################  
# Install docker package and setup boot
- name: use when conditionals and setup module (facts)
 hosts: all
 tasks:
# 使用 setup moudule 列出 OS 種類
   - name: use setup module to list os distribution
# setup moudle 可以使用 filter 過濾相關內容
     setup: filter=ansible_distribution


#########################################################  

- name: Install python-pip and azure package
# use group
 hosts: AzureHost
#  sudo: True
 become: True
 tasks:
   - name: Install python-pip with openSUSE Leap
# 這邊使用 disable_recommends=no 加入zypper 建議的套件, 否則不會加入 apache2等其他套件
# 這邊使用 disable_gpg_check=yes, 讓公有雲例如 azure上面的額外 repo 不用check gpg key
     zypper: name={{ item }} disable_recommends=no disable_gpg_check=yes
     with_items:
       - python-pip
       - curl
       - wget
       - sshpass
     when: ansible_distribution == "openSUSE Leap"

   - name: Install python-pip with Ubuntu
     apt: name={{ item }} update_cache=yes
     with_items:
       - python-pip
       - curl
       - wget
       - sshpass
     when: ansible_distribution == "Ubuntu"

   - name: upgrade pip version
     pip:
       name: pip
       state: latest
# 這邊透過 executable 來指定使用 pip2, 不然預設是 pip3
       executable: pip2   

   - name: install ansible[azure] with pip
     pip:
       name: ansible[azure]
# 這邊透過 executable 來指定使用 pip2, 不然預設是 pip3
       executable: pip2   

# 下載 azure_rm.py, 以便日後 Dynamic Inventory 使用
   - name: get azure_rm.py to root home
     get_url:
       url: https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py
       dest: /root/azure_rm.py
       mode: 0551
# 建立 ~/.azure 目錄
   - name: create ~/.azure folder
     file:
       path: ~/.azure
       state: directory
# 建立 ~/.azure/credentials 檔案,之後要存放 azure 認證檔案
   - name: create ~/.azure/credentials
     file:
       path: ~/.azure/credentials
       state: touch

#-------------------------------------------------------  


執行方式

如果是在 Azure 上面的 VM 執行
$ ansible-playbook   --ask-pass  --ask-become-pass  -u  使用者名稱   azure_install.yml

如果是一般 VM 可能就可以直接用 root 連接, 不用 --ask-become-pass :)

偷懶戰鬥力 又偷偷 + 1

~ enjoy it

Reference:

星期六, 4月 07, 2018

Docker-machine 與 digital ocean 小記

Docker-machine 與 digital ocean 小記


OS:  openSUSE Leap 42.3


因為讀書會的關係, 進入 Chapter 5 docker-machine
所以接下來進行 docker-machine 實驗


就目前的了解, 就是可以使用 docker-machine 來進行本機或是遠端的docker 安裝.
Docker Machine is a tool that lets you install Docker Engine on virtual hosts, and manage the hosts with docker-machine commands.
You can use Machine to create Docker hosts on your local Mac or Windows box, on your company network, in your data center, or on cloud providers like Azure, AWS, or Digital Ocean.




( 謎之音: 但是這個部份好像你都是用 ansible 解決掉了 ... )


參考官方網站


先來進行 docker-machine 的安裝
Docker-machine 官方 github, 目前是 0.14 版


下載 docker-machine
# curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-`uname -s`-`uname -m` >  /tmp/docker-machine


  • uname 指令, 上面兩個指令結果會跑出 Linux 以及 x86_64
    • -s, --kernel-name        print the kernel name
    • -m, --machine            print the machine hardware name


使用 install 指令將 docker-machine 複製到 /usr/local/bin 下
# install    /tmp/docker-machine  /usr/local/bin/docker-machine


這樣就安裝完成了


還沒開始之前先觀察一下


# docker-machine   ls
NAME   ACTIVE  DRIVER STATE   URL SWARM DOCKER   ERRORS


接下來就是 docker-machine 與 digital ocean 的實驗


開始之前, 必須先要有 digital ocean 的 API, 可以參考


接下來就可以測試 docker-machine 指令了


# docker-machine  create  --driver digitalocean  --digitalocean-access-token 599122321a3b75aea39f07c3XXXXXXXXX52911013806421589763bdd667e511 docker-machine-test


Creating CA: /root/.docker/machine/certs/ca.pem
Creating client certificate: /root/.docker/machine/certs/cert.pem
Running pre-create checks...
Creating machine...
(docker-machine-test) Creating SSH key...
(docker-machine-test) Creating Digital Ocean droplet...
(docker-machine-test) Waiting for IP address to be assigned to the Droplet...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env docker-machine-test


  • 重點在 --driver 選擇要建立的 host 種類
  • 會在 digital ocean 建立一個 droplet 名稱為 docker-machine-test
  • 看他的行為是透過 SSH 與憑證來控管


可以在 Digital Ocean 的 dashboard 上面觀察




再次觀察


# docker-machine   ls
NAME                  ACTIVE DRIVER  STATE URL              SWARM DOCKER ERRORS
docker-machine-test   - digitalocean  Running tcp://XXX.YYY.ZZ.WWW:2376           v18.03.0-ce   


觀察 Host IP
# docker-machine  ip docker-machine-test


查看相關資訊
# docker-machine   inspect  docker-machine-test


  • 這邊可能要注意的是 docker-machine 會把相關的資訊存在 ~/.docker/machine/machines/主機名稱/config.json


接下來使用 docker-machine  env 來觀察相關環境變數


# docker-machine  env docker-machine-test
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST=" tcp://XXX.YYY.ZZ.WWW:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/docker-machine-test"
export DOCKER_MACHINE_NAME="docker-machine-test"
# Run this command to configure your shell:
# eval $(docker-machine env docker-machine-test)


按照上面建議的 eval $(docker-machine env docker-machine-test) 去執行相關變數


# eval   $(docker-machine  env docker-machine-test)


觀察相關資訊
# echo   $DOCKER_TLS_VERIFY
1


# echo $DOCKER_HOST
tcp://XXX.YYY.ZZ.WWW:2376


# echo $DOCKER_MACHINE_NAME
docker-machine-test


這個時候如果下 docker  images 就會發現已經是在遠端 droplet 了 ( 因為是空的 …. )


# docker  images
REPOSITORY          TAG IMAGE ID            CREATED SIZE


進行相關測試


# docker  run   -d  -p  80:80  --name   demo  yeasy/simple-web


開啟 Droplet 的網頁觀察




成功 :)


接下來練習  docker-machine  stop 停止 droplet
# docker-machine  stop  docker-machine-test


Stopping "docker-machine-test"...
Machine "docker-machine-test" was stopped.


在 Digital Ocean Dashboard 觀察


# docker-machine  rm  docker-machine-test
About to remove docker-machine-test
WARNING: This action will delete both local reference and remote instance.
Are you sure? (y/n): y
Successfully removed docker-machine-test


  • 會把 ~/.docker/machine/machines 下面的主機相關設定移除
  • 也會移除 Digital Ocean 上面的 Droplet


好了, 可以繼續看第五章了
~ enjoy  it


Reference