歡迎光臨 Planet openSUSE

這是一個訊息來源(feed)整合,收集了 openSUSE 貢獻者在他們個人部落格中的文章

要將您的部落格加入此整合中,請參閱此指引


週六
2017年04月29日


face
openSUSE eBPF/BCC workshop 小記

Notes:
  • Kernel config 可以參考 /boot/ 下 config-開頭對應自己目前的核心, 看相關參數有沒有開
例如
# grep   BPF   /boot/config-4.4.46-11-default
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_NETFILTER_XT_MATCH_BPF=m
CONFIG_NET_CLS_BPF=m
CONFIG_NET_ACT_BPF=m
CONFIG_BPF_JIT=y
CONFIG_HAVE_BPF_JIT=y
CONFIG_BPF_EVENTS=y
# CONFIG_TEST_BPF is not set

安裝相關套件
# zypper   in   python-bcc
# zypper  in  bcc-examples

相關 examples 存放地方
# pwd
/usr/share/bcc/examples

觀察 hello world
# cat   /usr/share/bcc/examples/hello_world.py  
#!/usr/bin/env python
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")

# run in project examples directory with:
# sudo ./hello_world.py"
# see trace_fields.py for a longer example

from bcc import BPF

BPF(text='void kprobe__sys_clone(void *ctx) { bpf_trace_printk("Hello, World!\\n"); }').trace_print()

安裝 ( 更新 ) 目前的 kernel-default
# zypper  in  kernel-default

重新開機
# reboot
執行相關測試

# cd   /usr/share/bcc/examples/

執行 hello_world.py
# python   /usr/share/bcc/examples/hello_world.py

接下來可以嘗試在另外一個視窗 ssh 機器

就可以觀察到相關輸出

template:/usr/share/bcc/examples # python  /usr/share/bcc/examples/hello_world.py
           sshd-2314  [001] d..2   479.045754: : Hello, World!
           sshd-2864  [000] d..2   479.072225: : Hello, World!
           sshd-2864  [000] d..2   479.172032: : Hello, World!
           sshd-2864  [000] d..2   485.447949: : Hello, World!

另外一個測試

# cat  /usr/share/bcc/examples/tracing/trace_fields.py
#!/usr/bin/env python
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")

# This is an example of tracing an event and printing custom fields.
# run in project examples directory with:
# sudo ./trace_fields.py"

from bcc import BPF

prog = """
int hello(void *ctx) {
 bpf_trace_printk("Hello, World!\\n");
 return 0;
}
"""
b = BPF(text=prog)
b.attach_kprobe(event="sys_clone", fn_name="hello")
print "PID MESSAGE"
b.trace_print(fmt="{1} {5}")

進行測試
# python    /usr/share/bcc/examples/tracing/trace_fields.py
PID MESSAGE
2954 Hello, World!
2473 Hello, World!
3042 Hello, World!


其他的 examples 檔案可以在 https://github.com/iovisor/bcc/tree/master/examples 找到

# cd   /usr/share/bcc/examples/tracing/

# wget   https://raw.githubusercontent.com/iovisor/bcc/master/examples/tracing/sync_timing.py

# cat   sync_timing.py
#!/usr/bin/python
#
# sync_timing.py    Trace time between syncs.
#                   For Linux, uses BCC, eBPF. Embedded C.
#
# Written as a basic example of tracing time between events.
#
# Copyright 2016 Netflix, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")

from __future__ import print_function
from bcc import BPF

# load BPF program
b = BPF(text="""
#include <uapi/linux/ptrace.h>
#include <linux/blkdev.h>

BPF_HASH(last);

void do_trace(struct pt_regs *ctx) {
   u64 ts, *tsp, delta, key = 0;

   // attempt to read stored timestamp
   tsp = last.lookup(&key);
   if (tsp != 0) {
       delta = bpf_ktime_get_ns() - *tsp;
       if (delta < 1000000000) {
           // output if time is less than 1 second
           bpf_trace_printk("%d\\n", delta / 1000000);
       }
       last.delete(&key);
   }

   // update stored timestamp
   ts = bpf_ktime_get_ns();
   last.update(&key, &ts);
}
""")

b.attach_kprobe(event="sys_sync", fn_name="do_trace")
print("Tracing for quick sync's... Ctrl-C to end")

# format output
start = 0
while 1:
   (task, pid, cpu, flags, ts, ms) = b.trace_fields()
   if start == 0:
       start = ts
   ts = ts - start
   print("At time %.2f s: multiple syncs detected, last %s ms ago" % (ts, ms))

執行 sync_timing.py ( 另外在新視窗執行 #sync;sync;sync )
# python   /usr/share/bcc/examples/tracing/sync_timing.py
Tracing for quick sync's... Ctrl-C

週五
2017年04月14日


face
使用 OBS Appliance Installer 安裝 OBS Server 小記


上面的 ISO 是 Leap 42.1 的 ISO

其他部屬方式可以參考 2017-04-14 00-24-26 的螢幕擷圖.png

上面有看到不同的 images 可以選擇

2017-04-14 00-25-39 的螢幕擷圖.png

VMware VMDK 檔案

整合ISO with Leap 42.1


首先嘗試 整合ISO方式

使用 4 vCPU , 4GB RAM 與 20GB硬碟空間進行測試

使用 ISO 開機之後, 會要求選取安裝的磁碟
選取要安裝的磁碟 -- > OK

OBS_42.1_ISO_Test-2017-04-14-07-42-48.png


提出會摧毀所有資料的警告 -- > 選取 Yes
OBS_42.1_ISO_Test-2017-04-14-07-45-02.png


接下來就會進行開機, 完成初步安裝程序
OBS_42.1_ISO_Test-2017-04-14-07-49-50.png

開機畫面會看到
  • 預設密碼為 opensuse
    • root  為系統管理者, 請在系統內使用 passwd 指令更改密碼
    • Admin 為 OBS 管理者, 請在 Web interface 更改密碼
  • 預設網路是使用 DHCP, 且預設沒有裝 yast ….
    • 要使用固定IP, 請
      • 修改 /etc/sysconfig/network/ifcfg-eth0
        • BOOTPROTO=’static
        • IPADDR=’x.x.x.x/24’
          • x.x.x.x 為自己IP
      • 新增 /etc/sysconfig/network/routes
        • 加入 default  x.x.x.x - -
          • x.x.x.x 為自己網段的 Gateway
      • 修改 /etc/resolv.conf
        • 加入 nameserver 8.8.8.8
      • #systemctl  restart  network

接下來連線 Web interface 來完成
連線要用 https:// , 如果使用 http:// 連線會出現

2017-04-14 07-57-59 的螢幕擷圖.png

使用 https:// 連線才會出現

2017-04-14 08-07-46 的螢幕擷圖.png


嘗試使用 root 以及密碼登入 -- >  失敗 ( 這邊是為了確認是否使用系統帳號 )
嘗試使用 Admin 以及密碼登入 -- > 成功

2017-04-14 08-10-10 的螢幕擷圖.png

所以登入之後的第一件事就是 Change your password
輸入現在密碼以及新密碼 -- > OK

2017-04-14 08-12-25 的螢幕擷圖.png



Reference:


face
OBS with openSUSE Leap 42.2 小記

OS: openSUSE Leap 42.2

先說結論, 目前沒有 OBS_Server 的 Pattern 

  • 沒有辦法使用 #zypper  in  -t  pattern OBS_Server
  • 所以要研究如何就單一角色安裝



上面的 ISO 是 Leap 42.1 的 ISO, 考量到 Leap 42.1 的 life time 在2017/5 就到期, 所以嘗試使用 Leap42.2
參考上面的其他部屬方式 2017-04-14 00-24-26 的螢幕擷圖.png

上面有看到不同的 images 可以選擇

2017-04-14 00-25-39 的螢幕擷圖.png

下次要來試試看 VMware Image 方式

繼續往下看
openSUSE Leap 42.1 的安裝方式

#zypper  ar   -f   http://download.opensuse.org/repositories/OBS:/Server:/2.8/openSUSE_42.1/OBS:Server:2.8.repo
#zypper  in  -t  pattern   OBS_Server

從網頁看一下是否有 Leap 42.2 的路徑, 果然就找到了

另外參考他裏面提到的 README
If you already have a Linux server running you can use our binary packages to install OBS and follow our README to set everything up yourself.


另外又有提到如果是進階設定, 例如分散式設定可以參考

看來要好好用功了 :)

開始嘗試安裝

首先新增套件庫


正在新增套件庫 '2.8 version of the Open Build Service Server (openSUSE_42.2)' ............................................................[完成]
已成功新增套件庫 '2.8 version of the Open Build Service Server (openSUSE_42.2)'

位址         : http://download.opensuse.org/repositories/OBS:/Server:/2.8/openSUSE_42.2/
已啟用       : 是                                                                       
GPG 檢查     : 是                                                                       
自動重新整理 : 是                                                                       
優先權       : 99 (default priority)                                                    

Repository priorities are without effect. All enabled repositories share the same priority.


確認是否安裝了套件庫

# zypper  lr
Repository priorities are without effect. All enabled repositories share the same priority.

#  | 別名                      | 名稱                                                         | 已啟用 | GPG 檢查 | 重新整理
---+---------------------------+--------------------------------------------------------------+--------+----------+---------
1 | OBS_Server_2.8            | 2.8 version of the Open Build Service Server (openSUSE_42.2) | 是     | ( p) 是  | 是    

安裝相關套件

# zypper  in  -t  pattern   OBS_Server
正在取出套件庫 '2.8 version of the Open Build Service Server (openSUSE_42.2)' 中繼資料 ------------------------------------------------------[|]

收到新的套件庫或套件簽署金鑰:

 套件庫:        2.8 version of the Open Build Service Server (openSUSE_42.2)
 金鑰名稱:      OBS OBS Project <OBS@build.opensuse.org>                    
 金鑰指紋:      660FD3F9 F16602A3 722ABF6D E8420AB8 C5C219E7                
 金鑰建立日期:  西元2015年04月21日 (週二) 21時59分15秒                      
 金鑰過期日期:  西元2017年06月29日 (週四) 21時59分15秒 (在 76 天內過期)     
 RPM 名稱:      gpg-pubkey-c5c219e7-553657b3                                


您想要拒絕此金鑰,暫時信任,或永遠信任? [r/t/a/? 顯示所有選項] (r): a

安裝失敗, 因為Leap 42.2 沒有  OBS_Server 的 pattern


可能真的要嘗試其他方式

VMware VMDK 檔案

整合ISO with Leap 42.1


Reference:


週五
2017年03月17日


face
openSUSE Leap 42.2 安裝小記

桌機的 HD 無預警的升天了......
所以就直接進行升級 :p

記下我安裝 openSUSE Leap 42.2 的相關過程給自己參考
想不到上次裝 openSUSE Leap 42.1 是 2015/12


中文輸入法問題:

因為就算安裝 中文輸入法也沒有出現, 所以就用之前的方式
移除 ibus
#yast2  sw_single

取消 ibus  套件

取消 CD 為安裝來源
# yast2  repositories


Google Chrome:


Freemind:
使用one click install 安裝 http://software.opensuse.org/package/freemind
我是使用 editors 那個來源的 ymp 檔案安裝

.mm 的檔案指定用 freemind  開啟


新增 Packman 套件庫:

使用 #yast2  repositories 手動加入 NCHC Packman 套件庫

#yast2  repositories

URL 為


Firefox download helper:


flash-player:
# zypper   install   flash-player


播放器:


因為 mplayber 與 smplayer 不知道為何播放 .mp4 有點問題, 但是使用 VLC 就沒有問題
所以我就安裝 VLC Media player

並將 .rmvb 以及 .mp4 預設播放器設定為  VLC


Skype:
目前的版本是 4.3.0.37 的版本


使用終端機指令下載
#wget  -O  skype-`date +%F`.rpm   http://www.skype.com/go/getskype-linux-beta-suse

下載的 rpm 會被命名為 skype-日期.rpm


因為目前 rpm base 的OS, skype 只有提供 32 bits 的套件
所以要先預先安裝一些套件

參考 http://en.opensuse.org/SDB:Skype  但是還是有些遺漏, 所以要安裝一些套件


# zypper  -n  install  libqt4-32bit   libqt4-x11-32bit   libpng12-0-32bit
# zypper  -n  install  libXss1-32bit  libQtWebKit4-32bit   libQtWebKit4
# zypper  -n  install  libXv1-32bit  xorg-x11-libs


安裝 skype 套件
# rpm -ivh skype*.rpm


使用 #yast2 sound 調整音效


Dropbox:

使用 # zypper install dropbox 來安裝, 因為發現版本比 software.opensuse.org/search 上面新

安裝完之後在終端機下 dropbox  start  -i  來安裝


安裝 GNOME Control center
# zypper  install  yast2-control-center-gnome

然後修改 /etc/sysconfig/yast2
改為
WANTED_GUI="gtk"

修改 LS_OPTIONS 變數
# vi   /etc/profile.d/ls.bash
把 root 的 LS_OPTIONS 的 -A 移除

.7z 支援:
# zypper  install  p7zip


以下為個人記事

PDF Viewer 安裝:
Foxit
因為預設的 PDF Viewer 中文顯示有問題所以使用 Foxit
https://www.foxitsoftware.com/products/pdf-reader/

Forticlient SSL VPN 安裝:
Dropbox 內2013/packages 的 source code
預先安裝
# zypper install libgthread-2_0-0-32bit

印表機安裝:
# yast2  printer


rdesktop 安裝與測試:
#zypper  install  freerdp

執行方式
#xfreerdp  -g  1280x1024  -u administrator  HOST_IP


VMware workstation Pro 12
http://www.vmware.com/products/workstation/workstation-evaluation.html

安裝 kernel-default-devel  
# zypper   install   kernel-default-devel
# ./VMware-Workstation-Full-12.5.2-4638234.x86_64.bundle

裝完後, 設定取消 share VM access


Yubico Key:
如果 linux 沒有抓到 Yubico 的 U2F Key可以使用以下步驟
讓 linux 支援 Yubico , 我是參考 https://www.yubico.com/faq/enable-u2f-linux/  
作法
存到 /etc/udev/rules.d/70-u2f.rules
將 linux 重開機, 接下來就可以使用了 :-)

smartgit 安裝:

下載 8.0.3

解壓縮到 /opt
# tar  zxvf   smartgit-linux-8_0_3.tar.gz  -C   /opt/

建立 link 讓一般使用者也能使用
# ln  -s   /opt/smartgit/bin/smartgit.sh   /usr/local/bin/smartgit

安裝 git
# zypper  install  git

建立 個人的 ssh key
> ssh-keygen  -t  dsa

將 ssh 的公鑰 id_dsa.pub 新增到 Github 的 Settings -- >  SSH and GPG Keys

接下來就是以一般使用者的身份執行 smartgit 指令
> smartgit

按照上面的參考設定

設定 smart git icon 使用 alacarte

在設定好之後發現無法直接開啟資料夾 ( 資料夾上面按右鍵 -- > Open )
Edit -- > Preferences --> 點選  Tools -- > 點選 Re-Add Defaults 得到解決
2016-11-24 15-48-28 的螢幕擷圖.png


ansible 安裝:
#zypper  install  ansible

安裝 pysphere:

為了 ansible and VMware Module


# zypper  install  python-pysphere


Docker 安裝:

#zypper  install  docker

#systemctl  start  docker
#systemctl  enable   docker

Franz 安裝:

將網路換回 NetworkManager - cause wifi select

~ enjoy it



週日
2017年02月12日


face

自從 Novell 被 Micro Focus 併購後,我也好一陣子沒再針對 Novell 的產品與認證進行深究,前幾天收到 Micro Focus 寄來的新版講師證照,相關權益基本上與之前的 Novell CNI 相同,不過台灣現在很少 SUSE Linux課程了,所以發文紀念一下 ^^

 


週一
2017年01月30日


face
Jupyterhub with openSUSE Leap 42.2 小記

之前的 jupyterhub 由於工作的關係,使用OS是配合 iCAIR 使用 CentOS 以及 ubuntu 版本
今天來建立openSUSE Leap 42.2 的 jupyterhub

OS: openSUSE Leap 42.2

測試安裝 jupyterhub 與 ansible 並容器化

安裝相關套件
# zypper  -n  install   python3  npm4  wget  unzip

# npm  install  -g   configurable-http-proxy

# zypper  -n  install  python3-pip

# pip3   install   jupyterhub   jupyter

# zypper   -n   install   python3-paramiko   python3-matplotlib   python3-numpy

# zypper  -n   install  ansible

使用 jupyterhub 指令執行
#jupyterhub

這樣就會在本機的 :8000 執行

為了以後方便執行, 接下來將 jupyterhub 容器化

# Jupyterhub / Ansible on openSUSE Leap 42.2
FROM opensuse:42.2
# Author
MAINTAINER Max Huang <sakana@cycu.org.tw>

# Install Python and pre-requisite packages
RUN \
 zypper -n  install \
  python3 \
  python3-pip \
  python3-paramiko \
  python3-matplotlib \
  python3-numpy \
  wget \
  npm4 \
  unzip

# run npm configurable-http-proxy
RUN npm install -g configurable-http-proxy

# Install Jupyterhub
RUN pip3  install --upgrade pip
RUN pip3  install  jupyter jupyterhub

# Install Ansible
RUN zypper -n install ansible

#expose ports
EXPOSE 8000

# create user
RUN useradd -m ansible && echo "ansible:2016StudyArea"|chpasswd

# Get playbook
RUN wget https://github.com/sakanamax/LearnJupyter/archive/master.zip -O /home/ansible/master.zip
RUN su - ansible -c "unzip master.zip"


# Define default command.
CMD ["jupyterhub"]

建立 docker image 並上傳到 dockerhub

下載方式

# docker  pull  sakana/jupyterhub

使用方式
# docker  run  -d  -p 8000:8000  sakana/jupyterhub

就會在本機的 port 8000 啟動 jupyterhub
帳號: ansible
密碼: 2016StudyArea

先記下來

~ enjoy it




週一
2017年01月16日


face
使用 ansible 快速佈署 nagios with openSUSE Leap 42.2

OS: openSUSE Leap 42.2

Notes:已經安裝 ansible 套件

上一篇文章是手動安裝 nagios 以及 client

接下來就是用 ansible 來進行快速佈署

相關檔案已經放在 GitHub 上面


下載相關檔案, 主要是 nagios_server_install.yml 以及 nagios_client_install.yml, 其他在 playbook 內都會透過 wget 來取得.

編輯或是下載 hosts 檔案, 建立相關群組

主要在 hosts 檔案內透過 群組來控制

# 安裝 nagios server
[NagiosServer]


# 安裝 nagios client
[NagiosClient]


把要安裝 nagios server 與 nagios client 的機器放到群組

要安裝 nagios server
就執行 ansible-playbook   nagios_server_install.yml

會被詢問 nagiosadmin 密碼以及要通知的 e-mail

nagios_server_install.yml 內容如下





---

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

#

- 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 nagios server and run service

# 使用群組方式安裝 use group, 請配合 hosts 內的 [NagiosServer]

hosts: NagiosServer

become: True

# 透過提示來輸入相關變數

vars_prompt:

   - name: "nagiosadmin_password"

     prompt: "Enter nagiosadmin password"

# private 設定為 no 會顯示輸入的內容

     private: yes

# 這邊可以設定預設值

     default: nagiosadmin



   - name: "nagiosadmin_email"

     prompt: "Enter nagiosadmin e-mail"

     private: no

     default: nagios@localhost



tasks:

  - name: Install nagios and nrpe with openSUSE Leap

# 這邊使用 disable_recommends=no 加入zypper 建議的套件, 否則不會加入 apache2等其他套件

    zypper: name={{ item }} disable_recommends=no

    with_items:

      - nagios

      - monitoring-plugins

      - nrpe

      - monitoring-plugins-nrpe

    when: ansible_distribution == "openSUSE Leap"



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



# 設定 nagiosadmin 登入密碼

  - name: set nagiosadmin password

    shell: htpasswd2 -bc /etc/nagios/htpasswd.users nagiosadmin {{ nagiosadmin_password }}



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



# 由於 apache2.2 and apache2.4 相容性問題, 啟用 access_compat 模組

  - name: enable apache mod_access_compat

    shell: a2enmod mod_access_compat



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



# 使用修改過的 *.cfg 請詳見 github https://github.com/sakanamax/LearnAnsible/tree/master/playbook/general/nagios/files

  - name: fix localhost.cfg

    shell: wget  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/localhost.cfg -O /etc/nagios/objects/localhost.cfg

#      get_url:

#        url: https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/localhost.cfg

#        dest: /etc/nagios/objects/localhost.cfg

#        backup: yes



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



# 使用修改過的 *.cfg 請詳見 github https://github.com/sakanamax/LearnAnsible/tree/master/playbook/general/nagios/files

  - name: use modified template.cfg

    shell: wget  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/templates.cfg -O /etc/nagios/objects/templates.cfg



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



# 使用修改過的 *.cfg 請詳見 github https://github.com/sakanamax/LearnAnsible/tree/master/playbook/general/nagios/files

  - name: use modified commands.cfg

    shell: wget  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/commands.cfg  -O /etc/nagios/objects/commands.cfg



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



# 使用修改過的 *.cfg 請詳見 github https://github.com/sakanamax/LearnAnsible/tree/master/playbook/general/nagios/files

# 用來當成監控 linux 公共服務的範本

  - name: use modified linuxPublic.cfg

    shell: wget  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/linuxPublic.cfg   -O /etc/nagios/objects/linuxPublic.cfg



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



# 使用修改過的 *.cfg 請詳見 github https://github.com/sakanamax/LearnAnsible/tree/master/playbook/general/nagios/files

# 用來當成監控 linux 服務的範本( 自己控管的主機 )

  - name: use modified linux.cfg

    shell: wget  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/linux.cfg    -O /etc/nagios/objects/linux.cfg



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



# 使用修改過的 *.cfg 請詳見 github https://github.com/sakanamax/LearnAnsible/tree/master/playbook/general/nagios/files

# 用來當成監控 windows 公共服務的範本( 非自己控管的主機 )

  - name: use modified windowsPublic.cfg

    shell: wget  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/windowsPublic.cfg    -O /etc/nagios/objects/windowsPublic.cfg



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



# 使用修改過的 *.cfg 請詳見 github https://github.com/sakanamax/LearnAnsible/tree/master/playbook/general/nagios/files

# 用來當成監控 windows 服務的範本( 自己控管的主機 )

  - name: use modified windows.cfg

    shell: wget  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/windows.cfg     -O /etc/nagios/objects/windows.cfg



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



# 使用修改過的 *.cfg 請詳見 github https://github.com/sakanamax/LearnAnsible/tree/master/playbook/general/nagios/files

# 用來當成監控 switch 的範本, 只監控 IP 不監控 snmp

  - name

週五
2017年01月13日


face
Install VMware VCSA 6.5 in openSUSE Leap 42.2

距離上次安裝 VCSA 竟然是 2015/4 的事情了 :)
http://sakananote2.blogspot.tw/2015/04/20150413-vcenter6.html

上次的 VCSA 裝的有點不開心, 因為必須要在 Windows 底下裝, 然後瀏覽器還要挑
這次 VCSA 6.5  就不一樣了
* 在 Linux and Mac 都可以裝
* 以後 vCenter 6.5 直接用 web client ( flash and HTML5 ) 來管理, 且 vSphere Client 不會出 6.5, 也不能連 vCenter 6.5 -- 跨平台管理的日子終於來了

OS: openSUSE Leap 42.2

下載 VCSA 6.5

對 VCSA 6.0 建立快照

接下來針對下載好的 ISO 進行掛載
最簡單的方式是在 ISO 上面按滑鼠右鍵 -- > 以其他應用程式開啟
-- > 點選 磁碟映像檔掛載器

2017-01-11 09-01-47 的螢幕擷圖.png


掛載起來就會有 CD-ROM 這個目錄
其中有 vcsa-ui-install 目錄
開啟 vcsa-ui-install 目錄

2017-01-11 09-03-26 的螢幕擷圖.png


目錄下有三個目錄 lin64, mac, win32
這邊當然是打開 lin64

2017-01-11 09-08-14 的螢幕擷圖.png

在目錄內開啟 installer

2017-01-11 09-09-14 的螢幕擷圖.png



這個時候會看到 Installer 視窗

2017-01-11 09-10-29 的螢幕擷圖.png

點選右上角 English 可以切換語系
嘗試看看切換成 繁體中文

2017-01-11 09-12-14 的螢幕擷圖.png


果然語系就切換過來了

2017-01-11 09-13-12 的螢幕擷圖.png


點選 安裝

2017-01-11 14-30-06 的螢幕擷圖.png
1 簡介
直接點選 下一步

2017-01-11 14-30-57 的螢幕擷圖.png


2 使用者授權合約
勾選 我接受授權合約的條款 -- > 下一步
2017-01-11 14-31-45 的螢幕擷圖.png


3 選取部署類型
這邊我是選內嵌式 Platform Services Controller -- > 下一步

2017-01-11 14-33-07 的螢幕擷圖.png







4 應用裝置部署目標
輸入 ESXi 主機相關資訊 -- > 下一步

2017-01-11 15-40-08 的螢幕擷圖.png

5 設定應用裝置虛擬機器
輸入 VM名稱以及相關資訊 -- > 下一步

2017-01-11 15-42-25 的螢幕擷圖.png

6 選取部署大小

選取部署大小 -- > 下一步
2017-01-11 15-44-43 的螢幕擷圖.png

7 選取資料存放區
選取資料存放區 -- > 下一步 

2017-01-11 15-46-06 的螢幕擷圖.png


8 設定網路設定
這邊的系統名稱可以填入 IP or FQDN, 我這邊用 IP 的方式, 因為記得以前如果填入 FQDN 要有解析
輸入相關資訊 -- > 下一步

2017-01-11 15-49-13 的螢幕擷圖.png


9 即將完成設定

確認相關資訊 -- > 點選完成
2017-01-11 15-53-11 的螢幕擷圖.png

等待完成階段 1 點選 繼續

2017-01-11 16-17-41 的螢幕擷圖.png


階段2

1  簡介
點選 下一步
2017-01-11 16-19-14 的螢幕擷圖.png



2 應用裝置組態
輸入 NTP Server 資訊 -- > 下一步

2017-01-11 16-21-47 的螢幕擷圖.png
3 SSO 組態
輸入相關資訊 -- > 下一步
2017-01-11 16-22-56 的螢幕擷圖.png

4 設定 CEIP
我自己是沒有特別勾選 -- > 下一步

2017-01-11 16-24-30 的螢幕擷圖.png


5 即將完成
確認相關資訊 -- > 完成

2017-01-11 16-25-13 的螢幕擷圖.png

到此, 就大功告成了

https://你的IP   就可以看到 flash 版本 以及 HTML 版本的管理介面
:)

~ enjoy it

週三
2017年01月04日


face

如果你的 Oracle VM Manager 控制中心檢視 Jobs List 時都出現空的畫面,或者是升級 Oracle VM Manager 時出現 “GEN_000000:An exception occurred during processing: No such object (level 1)" 錯誤訊息,那麼這可能告訴你目前的 MySQL Database 已經出錯了。Oracle VM Manager 有提供一個修復工具,讓你簡易的排除 ( 雖然是簡易,但實際上操作前最好記得備份 ),操作步驟如下所示 :

  1. 關閉你的 OVMM 服務 :  service ovmm stop
  2. 切換路徑到 /u01/app/oracle/ovm-manager-3/bin
  3. 執行下列修復語法 :  ./ovm_upgrade.sh –fixup –dbuser=ovs –dbpass=XXXXX –dbhost=localhost –dbsid=ovs –dbport=49500 –fromversion=3.4.1 –toversion=3.4.1
  4. 重新啟動 OVMM 服務 : service ovmm start
  5. 再次登入你的 Oracle VM Manager 控制中心檢查 Jobs List 是否正常,也可以再次執行升級作業看是否會有其他錯誤

週六
2016年12月31日


face
nagios with openSUSE Leap 42.2 小記

目的: 監控 目前專案還有自己的設備
監控公共服務或是主機是否活著


OS: openSUSE Leap 42.2

安裝 nagios 相關套件, plugins 套件的名稱也改了, 現在叫 monitoring-plugins

# zypper  install   nagios  monitoring-plugins

設定 nagiosadmin 密碼

傳統的方式
# htpasswd2   -c   /etc/nagios/htpasswd.users   nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin

因為考慮之後自動化要結合 ansible 所以也嘗試了 -b 與 -i 選項, 這邊比較有趣的是 -b 或是 -i 都要相選項與 -c 放在一起, 也就是 -b -c 是不行的, 要 -bc 才行

-b  batch mode 密碼要放在使用者帳號後面
# htpasswd2  -bc   /etc/nagios/htpasswd.users    nagiosadmin    test
Adding password for user nagiosadmin

-i  read stdin, 透過 STDIN 來餵進去密碼
# echo  test  |  htpasswd2  -ic   /etc/nagios/htpasswd.users    nagiosadmin
Adding password for user nagiosadmin

確認 nagios 開機啟動

# systemctl   is-enabled   nagios
nagios.service is not a native service, redirecting to systemd-sysv-install
Executing /usr/lib/systemd/systemd-sysv-install is-enabled nagios
disabled

設定開機啟動 nagios
# systemctl   enable  nagios
nagios.service is not a native service, redirecting to systemd-sysv-install
Executing /usr/lib/systemd/systemd-sysv-install enable nagios


# systemctl   is-enabled   nagios
nagios.service is not a native service, redirecting to systemd-sysv-install
Executing /usr/lib/systemd/systemd-sysv-install is-enabled nagios
enabled

嘗試啟動 apache2, 這個時候會出現錯誤
# systemctl  restart  apache2.service
Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.


使用 status 觀察, 原因是 apache2.4 與 apache2.2 寫法不一樣
# systemctl  status  apache2.service
12月 31 11:11:50 template start_apache2[7143]: AH00526: Syntax error on line 15 of /etc/apache2/conf.d/nagios.conf:
12月 31 11:11:50 template start_apache2[7143]: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
12月 31 11:11:51 template systemd[1]: apache2.service: Main process exited, code=exited, status=1/FAILURE

可以參考

解法啟用 access_compat 模組 ( openSUSE / SUSE 預設 authz_host 已經啟動 )
# a2enmod   mod_access_compat

列出已經啟用的 apache2 module
# apache2ctl   -M
  • 會將設定寫入 /etc/apache2/sysconfig.d/loadmodule.conf 檔案內 LoadModule access_compat_module /usr/lib64/apache2-prefork/mod_access_compat.so

重新啟動 apache2
# systemctl  restart  apache2.service

觀察資訊
# systemctl   status  apache2.service


啟動  nagios
# systemctl  start  nagios

觀察資訊
# systemctl  status nagios

開啟 http 服務
#yast2   firewall

預設如果啟動 nagios, 他會去檢查本機 http 服務, 但是沒有預設網頁就會警告, 還有如果監控的項目比較多, total process 也會超標, 所以我調整了一下 /etc/nagios/objects/localhost.cfg  相關內容

#vi   /etc/nagios/objects/localhost.cfg
註解 HTTP, linux-servers 群組 以及調整 Total Process
# 2014/1/8 edit by sakana, temp disable HTTP monitor
#define service{
#        use         local-service         ; Name of service template to use
#        host_name                       localhost
#        service_description             HTTP
#       check_command                   check_http
#       notifications_enabled           0
#        }

# Define an optional hostgroup for Linux machines
#
#define hostgroup{
#        hostgroup_name  linux-servers ; The name of the hostgroup
#        alias           Linux Servers ; Long name of the group
#        members         localhost     ; Comma separated list of hosts that belong to this group
#        }


# 2014/1/8 edit by sakana change check_local_procs from 250 to 400, 400 to 800
define service{
       use                             local-service         ; Name of service template to use
       host_name                       localhost
       service_description             Total Processes
       check_command                   check_local_procs!400!800!RSZDT
       }

上面其實只是說明, 如果需求跟我一樣懶得動手改, 可以抓網路上我已經改好的
( 其實也是為了自己自動化 )

# wget  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/localhost.cfg
--2016-12-31 12:21:29--  https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/general/nagios/files/localhost.cfg
正在查找主機 raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.100.133
正在連接 raw.githubusercontent.com (raw.githubusercontent.com)|151.101.100.133|:443... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 5546 (5.4K) [text/plain]
Saving to: ‘localhost.cfg’

100%[=====================================================================================================================>] 5,546       --.-K/s   in 0s      

2016-12-31 12:21:30 (28.9

週一
2016年12月26日


face
利用 SUSE Studio 建立客製化 openSUSE / SLES 於 Azure 小記

上一篇文章寫 如何在 Azure 建立 openSUSE / SLES http://sakananote2.blogspot.tw/2016/12/opensuse-linux-in-azure.html

但是上面使用的是 Azure 預先建立好的系統, 雖然可以建立完之後再進去修改( 新增所需的環境或是套件 ). 但是難道不能用自己客製化的 linux 或是環境嗎?

答案是可以的 :)

如果是使用 openSUSE / SLES linux, 官方也是建議使用 SUSE Studio https://susestudio.com/ 這個是比較下來相對輕鬆的方式

所以先來介紹 SUSE Studio
  • 使用瀏覽器線上輕鬆客製化你的 openSUSE / SLES

2016-12-26 16-13-00 的螢幕擷圖.png

  • 可以用 常見的服務來登入, 或是以 openID 來登入

2016-12-26 16-04-28 的螢幕擷圖.png


  • 支援不同的輸入格式 以及雲端服務

2016-12-26 16-11-07 的螢幕擷圖.png


接下來進入正題

建立客製化 openSUSE / SLES的方式很簡單

登入到 SUSE Studio
點選 Create new appliance
2016-12-26 16-14-25 的螢幕擷圖.png

選取要建立的種類
我這次是選 SLES 12 SP1
2016-12-26 16-16-22 的螢幕擷圖.png

輸入名稱
點選 Create appliance
2016-12-26 16-17-45 的螢幕擷圖.png

從畫面的左上方
可以看到建立的流程以及目前的 image 大小

2016-12-26 16-19-18 的螢幕擷圖.png

Software 部份 2016-12-26 16-21-20 的螢幕擷圖.png
  • 可以自行加入套件庫或是 RPM
  • 可以藉由搜尋加入想要的套件, 點選 +add 就可以加入

2016-12-26 16-21-29 的螢幕擷圖.png
2016-12-26 16-21-43 的螢幕擷圖.png


Configuration 部份 2016-12-26 16-23-32 的螢幕擷圖.png
  • 主要設定語系, 開機的 runlevel 還有相關設定
  • Firewall 設定, 網路設定
  • 記憶體, 硬碟大小
  • 密碼相關設定

2016-12-26 16-23-45 的螢幕擷圖.png

  • 這邊要注意的就是, 由於要上傳到 Azure, 所以硬碟大小要大於 30GB
    • 在 Appliance 項目內設定, 這邊我設定 50GB
    • 其實要裝其他的套件, 但是等等在 Build 那邊可以補
2016-12-26 16-25-30 的螢幕擷圖.png
2016-12-26 16-26-58 的螢幕擷圖.png
Files 部份 2016-12-26 16-28-42 的螢幕擷圖.png
  • 則是有沒有自訂的檔案要包含進去 image

2016-12-26 16-29-30 的螢幕擷圖.png
Build 部份 2016-12-26 16-30-18 的螢幕擷圖.png
  • 這邊用下拉式選單選取 Microsoft Azure ( .vhd )

2016-12-26 16-31-21 的螢幕擷圖.png
系統就會通知沒有裝 Public Cloud module

2016-12-26 16-31-30 的螢幕擷圖.png
作法很簡單, 點選 Add Public Cloud module repositories 就補上去了 :)

接下來可愛的綠色 Build 按鈕就可以按了  2016-12-26 16-34-25 的螢幕擷圖.png

點選 Build 就會開始建立
2016-12-26 16-36-36 的螢幕擷圖.png


在建立的過程, 我們來設定 Azure 那邊

因為 SUSE Studio 必須要把 image 上傳到 Azure ( 謎之音: 難道你想自己下載然後自己上傳過去 ?? )
  • 所以 Azure 那邊就要有 storage 來儲存 image

首先我們進入傳統 Azure 網站 https://manage.windowsazure.com/ 並登入
  • 目前我還在摸索在新網站建立 傳統 storage 方式 :)

點選左下角 新增按鈕

2016-12-26 16-46-33 的螢幕擷圖.png

點選 資料服務 -- > 儲存體 -- > 快速建立 -- > 輸入名稱
點選 建立儲存體帳戶

2016-12-26 16-48-00 的螢幕擷圖.png



好了之後我們回到 SUSE Studio
針對剛剛 Build 好的 .vhd 後面 點選 Upload

2016-12-26 17-59-00 的螢幕擷圖.png
這個時候 SUSE Studio 會貼心的提醒
上傳之前要有 credentials, 所以點選 Manage your credentials
( 這個時候請確認已經登入傳統 Azure 入口網站 )
2016-12-26 18-00-21 的螢幕擷圖.png
如果可以正常開啟並進入 Azure 入口網站之後
接下來 點選 settings file

2016-12-26 18-03-13 的螢幕擷圖.png
這個時候會進行下載訂用帳戶檔案 ( 謎之音: 這個不就是剛剛微軟文件的 …..  )
檔案名稱為 *-credentials.publishsettings

2016-12-26 18-04-00 的螢幕擷圖.png

點選 Upload your settings file  -- > 選取剛剛下載的檔案 *.publishsettings
選取剛剛建立的 Storage service
-- > 點選 Save changes

2016-12-26 18-08-41 的螢幕擷圖.png

點選 確定 Azure is not for free :)

2016-12-26 18-09-47 的螢幕擷圖.png


點選 SUSE Studio’s Azure dashboard
2016-12-26 18-11-05 的螢幕擷圖.png
針對剛剛建立的 image
選取 support level -- > 點選 Upload
2016-12-26 18-12-06 的螢幕擷圖.png

接下來就可以看到 image 上傳到 Azure

2016-12-26 18-13-11 的螢幕擷圖.png

上傳完之後會顯示傳過去的名稱

2016-12-26 18-26-20 的螢幕擷圖.png

那要如何使用剛剛建立的 SLES 12 呢?
回到 Azure 入口網站
點選 虛擬機器 -- > 建立虛擬機器

2016-12-26 18-29-31 的螢幕擷圖.png


點選 資料服務 -- > 點選 虛擬機器 -- > 點選 從資源庫

2016-12-26 18-31-21 的螢幕擷圖.png


點選左下角 我的映像  2016-12-26 18-32-32 的螢幕擷圖.png
-- > 選取剛剛上傳的 image -- > 點選 下一步 2016-12-26 18-33-27 的螢幕擷圖.png

輸入名稱以及相關資訊 -- > 點選 下一步 2016-12-26 18-33-27 的螢幕擷圖.png

2016-12-26 18-34-34 的螢幕擷圖.png

設定DNS / Port 相關設定 -- > 點選 下一步 2016-12-26 18-33-27 的螢幕擷圖.png


2016-12-26 18-35-28 的螢幕擷圖.png

確認代理程式
-- > 點選 完成 2016-12-26 18-36-54 的螢幕擷圖.png

2016-12-26 18-36-41 的螢幕擷圖.png

接下來等部署完成之後

2016-12-26 19-06-16 的螢幕擷圖.png

按照 DNS 名稱去進行 ssh 連線即可 :)
# ssh  -l  azureuser  xxxxxx.cloudapp.net

Notes:
  • 這樣可以客製化 openSUSE / SLES 到 Azure
    • SLES 的部份要再研究一下 SMT 訂閱如何加上 :)


今天就先到這邊

~ enjoy it

週日
2016年12月25日


face
openSUSE Leap42.2 桌面調校小記 - GNOME_extension

OS: openSUSE Leap 42.2

這週把目前使用的機器都升級( 重安裝? ) 到 openSUSE Leap 42.2 了
早上想到就把 GNOME extension 稍微看了一下, 裝了自己想要的功能, 在這邊紀錄一下.

GNOME Extension 的相關設定在
所有設定值 -- >  調校工具

2016-12-25 14-13-07 的螢幕擷圖.png


點選 擴充功能
這邊可以看到 擴充功能 相關功能
點選 取得更多擴充功能 就會被帶到 https://extensions.gnome.org/


2016-12-25 14-14-37 的螢幕擷圖.png


這邊發現一個有趣的現象
如果是使用 GNOME Chrome 瀏覽器, GNOME Extension 沒有辦法正常偵測 GNOME 版本, 所以安裝會有問題, 但是 firefox 沒有這個問題. ( 原因是 firefox 會詢問是否允許權限, 但是Chrome 不會詢問 )


2016-12-25 14-17-33 的螢幕擷圖.png


預設是按照受歡迎程度來排序, 但是我是看 Sort by Downloads 來看看有沒有可愛的功能來進行安裝


2016-12-25 14-20-32 的螢幕擷圖.png


以下是自己喜歡的功能來進行紀錄
安裝方式就是在網頁上把 OFF按鈕切換成 ON, 就會被詢問是否要下載安裝 :)

TopIcons

預設 GNOME 是把 icons 收在畫面左下角
點選後展開, 如下圖所示

2016-12-25 14-23-49 的螢幕擷圖.png  2016-12-25 14-23-39 的螢幕擷圖.png

開啟這個功能之後, icon 就會出現在右上方

2016-12-25 14-25-42 的螢幕擷圖.png


NetSpeed

這個真的是我很愛的功能, 即時顯示目前上傳與下載的網路速度 :)

2016-12-25 14-29-10 的螢幕擷圖.png


Show IP

這個功能也是很 lovely
可以顯示指定網卡的 IP, 以及對外的公共 IP, 有時候真的很方便

2016-12-25 14-31-32 的螢幕擷圖.png

2016-12-25 14-32-00 的螢幕擷圖.png


調整完工作列就變成

2016-12-25 14-33-59 的螢幕擷圖.png


感覺很開心, 先記下來

~ enjoy it

週六
2016年12月24日


face
建立 openSUSE linux in Azure 小記

目前雲端的服務慢慢普及, 所以接下來會寫一些 openSUSE / SUSE 與雲端服務的文章, 目前會針對 openSUSE 在 Azure 內的相關測試來撰寫文章.

首先以自己的帳號登入 https://portal.azure.com ( 如果沒有申請過 30 天免費帳號, 可以去申請 https://azure.microsoft.com/zh-tw/free/  )

因為是第一次使用 Azure, 所以介面應該就是日後再慢慢熟悉, 但是摸了一下子, 感覺第1個要調整的介面就是, 新增 訂閱帳戶 到左邊的列表 :)

Microsoft Azure 的儀表板, 真的很像迷宮 ( 謎之音: 明明是你自己不熟 ... )
所以先點選左下角的 更多服務 -- > 點選 訂閱帳戶的 星星符號

2016-12-24 23-45-19 的螢幕擷圖.png


為何這個很重要呢?
因為他可以看到自己的帳單, 還有相關點數 :)
點選 訂用帳戶 -- > 點選 概觀 -- > 畫面拉到最下面就可以看到相關點數與目前的剩餘點數
2016-12-24 23-59-06 的螢幕擷圖.png

接下來進入正題 建立 openSUSE Linux Virtual Machine in Azure

點選左方的虛擬機器 -- > 點選 新增

2016-12-25 00-04-27 的螢幕擷圖.png

在篩選的欄位輸入 opensuse
這個時候會出現 openSUSE Leap 42.1 與 openSUSE 13.2
點選 openSUSE Leap 42.1

2016-12-25 00-07-11 的螢幕擷圖.png

在 右下角的部屬模型, 目前先選預設值 Resource Manager ( 說明在這邊 https://docs.microsoft.com/zh-tw/azure/azure-classic-rm  )
-- > 點選 建立
2016-12-25 00-09-10 的螢幕擷圖.png

接下來輸入虛擬機器相關設定
-- > 點選 確定

2016-12-25 00-14-15 的螢幕擷圖.png


接下來是選取大小
這邊我選取 A1 標準  -- > 點選 選取


2016-12-25 00-18-57 的螢幕擷圖.png

再來是設定選擇性功能, 目前先按照預設值
  • 預設會建立新的網路 / storage
  • Firewall 預設開啟 SSH port 22
  • 公用 IP 位置是使用動態
點選 確定


2016-12-25 00-22-03 的螢幕擷圖.png

最後確認相關摘要 -- > 點選 確定

2016-12-25 00-25-00 的螢幕擷圖.png

接下來就會看到正在提出部屬

2016-12-25 00-26-47 的螢幕擷圖.png

部屬需要一點時間, 就同步嘗試 SLES 12 SP1 in Azure :)

2016-12-25 00-30-43 的螢幕擷圖.png

如果部署完成會再儀表板上面顯示正在執行
可以看下圖看出差異

2016-12-25 00-33-11 的螢幕擷圖.png


那如何連接剛剛建立的 openSUSE 呢?
點選剛剛建立的 openSUSE Linux -- > 點選 概觀

2016-12-25 00-41-12 的螢幕擷圖.png

這邊就會告知 ssh 的連線資訊

2016-12-25 00-41-41 的螢幕擷圖.png


嘗試使用 ssh 連線到遠端主機

#ssh  -X  geeko@REMOTE_IP

Password:
X11 forwarding request failed on channel 0
openSUSE Leap 42.1 x86-64

As "root" use the:
 - zypper command for package management
 - yast command for configuration management

Have a lot of fun...

Notes
  • 目前看起來可以用 command line , 但是 SSH X11 forwarding 是不行的, 後面再來研究
  • 建立的使用者有被設定 sudo, 所以可以藉由 sudo 來執行相關管理指令, 所以可以使用 yast 來管理, yast2 等研究 ssh X11 forwarding 再來測試

觀察一下 A1 標準機器的資訊
磁碟的部份( 剛剛標準 A1 沒有特別列HD 大小 )

# df  -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  807M  8.0K  807M   1% /dev
tmpfs          tmpfs     837M     0  837M   0% /dev/shm
tmpfs          tmpfs     837M  9.5M  827M   2% /run
/dev/sda1      ext4       30G  1.4G   27G   5% /
tmpfs          tmpfs     837M     0  837M   0% /sys/fs/cgroup
/dev/sdb1      ext3       69G   52M   66G   1% /mnt/resource


也算是跨出第一步 :)
今天就先這樣

~ enjoy it

週四
2016年12月22日


face
Docker swarm visualizer 小記

OS: openSUSE Leap 42.1


之後想來寫 docker swarm service 的一些文章, 但是在這之前, 先來寫個 docker swarm visualizer 文章, 之後也會想寫 container 監控的文章, 逼自己唸書 :)

Docker swarm visualizer Github 網頁
  • 只針對 swarm mode 來監控

檢查 docker 版本
# docker --version
Docker version 1.12.1, build 8eab29e

開始前先檢查 port 8080 因為預設走 port 8080, 但是也可以在啟動的時候指定
# netstat  -tupln |  grep 8080


# docker  run  -it  -d  -p 8080:8080 -e  HOST=localhost   -v /var/run/docker.sock:/var/run/docker.sock   manomarks/visualizer

dfeb32c64f0d6058c2e0f6afa64cc5241c9eabadac969a4a6b8e0fef6263b67e


觀察 port 8080

# netstat -tupln | grep 8080
tcp        0      0 :::8080                 :::*                    LISTEN      2061/docker-proxy

這邊要注意的是上面的 -e  HOST=localhost 指的是 listen IP, 不一定是 docker 的 IP, 所以如果用上面的方式就是只有本機可以看得到.

所以如果要可以讓其他機器也看得到, 就要把 HOST= 後面換成要讓人家連線的 IP

# docker  run  -it  -d  -p 8080:8080 -e  HOST=YOURIP   -v /var/run/docker.sock:/var/run/docker.sock   manomarks/visualizer

執行起來就像這個樣子

2016-12-22 18-30-32 的螢幕擷圖.png

這樣沒有感覺, 那就建立個簡單的 service 來看看好了 :)


確認目前服務狀態
# docker   service   ls
ID  NAME  REPLICAS  IMAGE  COMMAND

建立 測試服務
# docker  service  create  --name my_web  nginx
23exrpem6knnov6sws2hwra85

# docker  service  create  --name my_web2 --replicas 2  nginx
32ui333mlslesfjdgi1degpu1

# docker  service  create  --name my_web3 --replicas 3  nginx
7ynvbcdpwulfdqotq0lenyqox


檢查服務狀態
# docker  service  ls
ID            NAME     REPLICAS  IMAGE  COMMAND
23exrpem6knn  my_web   1/1       nginx  
32ui333mlsle  my_web2  2/2       nginx  
7ynvbcdpwulf  my_web3  3/3       nginx  

在 visualizer 上面呈現的樣子

2016-12-22 18-38-43 的螢幕擷圖.png

今天先這樣, 後面留待寫 docker service 文章來配合


~ enjoy it


週三
2016年11月16日


face
這個月初去參加 OCS Tokyo Fall

因為只有四天的時間, 就考慮來實驗去日本不租用 wifi 路由器或是 sim 卡

先來談談 OSC ( Open Source Conference ) Japan會議
去年有參加 LinuxCon Japan, 但是覺得商業的味道太重, 分享與交流比較少, 我個人還是喜歡社群分享比較強烈的會議 ( 笑 )
但是這次的會議認識了很多日本朋友


OSC JapanFOSDEM 都是我非常想參加的會議
大量社群與不同元素的人集中在同一個地方交流, 是我很想體驗的 :)

OSC Tokyo Fall 今年舉辦地點在 明星大學
但是我第1個印象就是安達充的 Touch ( 笑 )


一進來就有清楚的指引以及議程表


當然 openSUSE Japan 也有來 booth, 大會方有給第一次來參加的人還有學生不同的 Badge也是一個非常貼心的設計

 

來會議當然少不了吉祥物 :)

來會場的人真的很多, 然後不同性質的社群都有來參與, 也有各式各樣的元素 

 

當然也少不了 Clonezilla 來跟日本的使用者交流 :)


這樣的會議有來真的是太好了 :)
希望可以持續來參與

另外有關於 免費的 wifi 部份
這次因為只來四天, 所以就實驗一下日本的 免費提供 wifi

先說結論:  如果不用持續查資料或是一直打卡, 在東京使用免費 wifi 個人覺得是可行的

主要裝的 App 是 Japan Connected-free Wi-Fi http://www.ntt-bp.net/jcfw/tw.html

這個 App 可以主動連接提供的 wifi 熱點


但是他忘記跟你說
必需先跟他有相關的申請或是關係 :p

所以我是利用 NAVITIME for Japan Travel 這個 APP
https://play.google.com/store/apps/details?id=com.navitime.inbound.walk&hl=zh_TW

點選 FREE Wi-Fi 來看附近的免費 wifi , 還有加入的方式



這次主要用下列幾個

Free Wi-Fi & Tokyo
FreeSpot
Family Mart

Lawson

全家或是Lawson的點非常多, FreeSpot 與 Free Wi-Fi & Tokyo 在很多地方也很好用


下次如果是短期的會議

我想我應該就會直接利用 Free Wi-Fi 了 :)


~ Enjoy it



週五
2016年11月11日


face
最近由於建立快速建立環境的關係
使用 Clonezilla 來建立相關環境, 之前的作法都是使用 光碟的作法
現在 USB 隨身碟的容量都已經很大了, 故使用隨身碟現在會是更好的作法

OS: openSUS Leap 42.1
USB 隨身碟 16 or 32 GB

目前考慮最方便的方式就是將隨身碟切兩個 FAT 的分割區
  • 分割區 1 : 大小約 500 MB, 建立 clonezilla 使用
  • 分割區 2:  剩下的所有空間, 儲存 images 使用


接下來就來製作 Clonezilla USB Live 隨身碟吧


我是選擇 amd4 CPU 架構, 然後下載 zip 檔案
2016-11-12 00-07-10 的螢幕擷圖.png
製作的方式可以參考官網 http://clonezilla.nchc.org.tw/clonezilla-live/

首先 來建立分割區
這邊我是使用 USB 16GB 隨身碟

使用 yast2 disk 切割分割區
#yast2  disk

刪除所有隨身碟上面的分割區
YaST 會提示目前已經掛載, 選取 Unmount
2016-11-12 00-10-59 的螢幕擷圖.png

將隨身碟建立兩個分割區, 如同上面的規劃

2016-11-12 00-11-47 的螢幕擷圖.png

建立掛載點 /mnt/usb
# mkdir   /mnt/usb

將剛剛建立的分割區掛載上來
#mount   /dev/sdb1    /mnt/usb/

檢視掛載資訊
# df  -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G  8.0K  3.9G   1% /dev
tmpfs           3.9G  376M  3.5G  10% /dev/shm
tmpfs           3.9G  2.3M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda2       108G   78G   29G  73% /
/dev/sdb1       501M     0  501M   0% /mnt/usb


進入剛剛的下載目錄
#cd    /home/sakana/下載/

將 clonezilla 檔案解壓縮到 /mnt/usb

#unzip   clonezilla-live-2.4.9-17-amd64.zip   -d   /mnt/usb/
檢視相關資訊
#ls   /mnt/usb/
Clonezilla-Live-Version  EFI  GPL  boot  home  live  syslinux  utils

進入到相關目錄
#cd   /mnt/usb/utils/linux/

執行 makeboot.sh  ( 後面的 /dev/sdb1 請指定你的 USB 的FAT 分割區 )
#bash   makeboot.sh   /dev/sb1
This command will install MBR and syslinux/extlinux bootloader on /dev/sdb
Clonezilla files are assumed to be on /dev/sdb1
--------------------------------------------
Machine:                                  :
Model: IT1170 USB Flash Disk (scsi)
Disk /dev/sdb: 16.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
1      1049kB  526MB   525MB   primary  fat16        lba, type=0c
2      526MB   16.2GB  15.7GB  primary  fat32        lba, type=0c

--------------------------------------------
Are you sure you want to continue?
[y/n]  y

OK! Let's do it!
--------------------------------------------
File system of /dev/sdb1: vfat
--------------------------------------------
sdb1 is not marked as bootable! The partition table of /dev/sdb:
--------------------------------------------
:
Model: IT1170 USB Flash Disk (scsi)
Disk /dev/sdb: 16.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
1      1049kB  526MB   525MB   primary  fat16        lba, type=0c
2      526MB   16.2GB  15.7GB  primary  fat32        lba, type=0c

--------------------------------------------
Do you want to mark it as bootable ?
[y/n]  y

OK! Let's do it!
Running: parted -s /dev/sdb set 1 boot on
--------------------------------------------
Do you want to install MBR on /dev/sdb on this machine "                                 " ?
[y/n] y

OK! Let's do it!
Running: cat "/mnt/usb/utils/mbr/mbr.bin" > /dev/sdb
--------------------------------------------
Do you want to install the syslinux boot files on /dev/sdb1 on this machine "                                 " ?
[y/n] y
OK! Let's do it!
A filesystem supporting Unix file mode for syslinux is required. Copying syslinux to /tmp/linux_tmp.7aG0YD
‘/mnt/usb/utils/linux/syslinux’ -> ‘/tmp/linux_tmp.7aG0YD/syslinux’
Running: "/tmp/linux_tmp.7aG0YD/syslinux" -d syslinux -f -i "/dev/sdb1"
//NOTE// If your USB flash drive fails to boot (maybe buggy BIOS), try to use "syslinux -d syslinux -fs /dev/sdb1", i.e. running with "-fs".
syslinux ran successfully in installation mode.
Done!

接下來就可以使用這個 USB 來進行 Clonezilla 作業了

~ enjoy it



週四
2016年10月27日


face
Docker swarm mode with openSUSE Leap 42.1

OS: openSUSE Leap 42.1

3 個 node
  • 1 個 manager node
  • 2 個 worker node

# docker  --version
Docker version 1.12.1, build 8eab29e

Manager node 上面

初始化 swarm, 如果有多張網卡就要使用 --advertise-add 指定 IP
# docker   swarm   init   --advertise-addr   192.168.100.254
Swarm initialized: current node (bhmgljncagkfzsnhob3d9ricd) is now a manager.

To add a worker to this swarm, run the following command:

   docker swarm join \
   --token SWMTKN-1-5iju0vxuje0wkczh52qdwa73k0xq3s6jd8coql0wrlogo57l5c-8nl9nbnxs192kgu09kotylwd8 \
   192.168.100.254:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

使用 docker  info 觀察 Swarm 啟動狀況
# docker   info  |   grep  Swarm
Swarm: active

檢查 node 資訊
# docker  node   ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
bhmgljncagkfzsnhob3d9ricd *  docker1   Ready   Active        Leader


在所有 worker node 上面
加入 swarm,
使用 剛剛 docker swarm init 顯示出來的資訊加入 ,或是使用 #docker swarm join-token work 查詢

# docker   swarm   join \
  --token  SWMTKN-1-5iju0vxuje0wkczh52qdwa73k0xq3s6jd8coql0wrlogo57l5c-8nl9nbnxs192kgu09kotylwd8 \
 192.168.100.254:2377


Manager node 上面

檢查相關資訊
# docker   node  ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
8268xbtnb28i9sy2tbkwlz7i0    docker2   Ready   Active        
bhmgljncagkfzsnhob3d9ricd *  docker1   Ready   Active        Leader
ezwivow6sctk9wiit19g89fz7    docker3   Ready   Active  


到此 swarm mode  佈署成功

建立測試服務



參考文件




週四
2016年10月13日


face
OS: openSUSE Leap 42.1


之前的測試環境用的是測試版本的 repo, 目前官方已經到 1.12.1 所以就想進行重新安裝
重新安裝前, 先記下移除 swarm mode 相關程序


Docker 版本
# docker --version
Docker version 1.13.0-dev, build dcdf2b4


使用的來源
# zypper   repos  -E
#  | Alias                                  | Name                                                                            | Enabled | GPG Check | Refresh
---+----------------------------------------+---------------------------------------------------------------------------------+---------+-----------+--------
1 | Virtualization_containers_experimental | Docker Experimental Packages (openSUSE_Leap_42.1)                               | Yes     | (r ) Yes  | Yes

目前的測試環境是 3 個 nodes
先使用 docker  node ls 來列出所有的 node


# docker   node  ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
71llz5z3q8f390s9l47qeypue    docker2   Ready   Active        
91ilfph3oq77e1jfwfzm1hm3g    docker3   Ready   Active        
bvbah38n6vusy7nilnbcve22w *  docker1   Ready   Active        Leader


因為要重新安裝, 所以就把上面的服務都移除了
# docker  service  ls
ID  NAME  REPLICAS  IMAGE  COMMAND

參考官方移除的程序


移除所有 work node
以我的環境來說, 我有兩個 work nodes, 一個 manager node


首先到 work node 上面進行 node 移除動作
使用 docker  swarm  leave 指令移除 node


# docker   swarm   leave
Node left the swarm.


回到 manager node 上面觀察
會發現 Availability 為 Down


# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
71llz5z3q8f390s9l47qeypue    docker2   Ready   Active        
91ilfph3oq77e1jfwfzm1hm3g    docker3   Down    Active        
bvbah38n6vusy7nilnbcve22w *  docker1   Ready   Active        Leader


# docker   node  rm  docker3
docker3

觀察結果
# docker   node   ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
71llz5z3q8f390s9l47qeypue    docker2   Ready   Active        
bvbah38n6vusy7nilnbcve22w *  docker1   Ready   Active        Leader


在執行 docker  rm 的時候, node 必須狀態為 Down 才可以移除, 否則就會出現警告並不能執行


# docker   node  rm  docker2
Error response from daemon: rpc error: code = 9 desc = node 71llz5z3q8f390s9l47qeypue is not down and can't be removed


接下來到 所有的 work node 離開 swarm mode
並進行 docker  node  rm


回到 manager node
目前只剩下 manager node
# docker  node  ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
bvbah38n6vusy7nilnbcve22w *  docker1   Ready   Active        Leader


觀察目錄
# du  -sh   /var/lib/docker/swarm/raft/
123M /var/lib/docker/swarm/raft/


使用 docker swarm leave 指令離開, 因為是 manager node 所以會被提示使用 --force
# docker  swarm  leave
Error response from daemon: You are attempting to leave the swarm on a node that is participating as a manager. Removing the last manager erases all current state of the swarm. Use `--force` to ignore this message.

# docker  swarm  leave  --force
Node left the swarm.


再次觀察
# du  -sh  /var/lib/docker/swarm/
4.0K /var/lib/docker/swarm/


到這邊就可以了
接下來就是在各個 node 移除實驗的 repos, 以及移除 docker 套件重新安裝


# zypper   -n   remove    docker


# yast2   repositories


:)


先記下來


~ enjoy it


參考文件


週六
2016年09月24日


face
Open Build Service 實作練習 Workshop 101

OS: openSUSE Leap 42.1

預先準備

首先設定 API 的 URL
# osc    -A   https://api.opensuse.org

Your user account / password are not configured yet.
You will be asked for them below, and they will be stored in
/root/.oscrc for future use.

Creating osc configuration file /root/.oscrc ...
Username: 輸入帳號
Password: 輸入密碼

建立完之後家目錄會產生  .oscrc  以及 .osc_cookiejar
  • ~/.oscrc 為相關apiurl 以及帳號資訊, 檔案權限為 600, 後續可以用 ring 來處理


使用 osc 指令進行 check out 專案  osc  co   home:使用者帳號
# osc  co  home:sakana

觀察目錄就會出現專案的資料夾
# ls
.bash_history  .dbus        inst-sys        .oscrc    .Xauthority bin            .gnupg       .local          .rnd
.config        home:sakana  .osc_cookiejar  .viminfo

切換到專案目錄
# cd   home\:sakana/

使用 osc mkpac 指令建立 package, 這次workshop 使用的是  ctris
# osc  mkpac   ctris
A    ctris

再次觀察
# ls
ctris  gmchess  Helloworld-test  jUploadr  .osc  owncloud
進入 套件工作目錄
# cd   ctris/

修改 .spec 檔案, 可以參考講師提供的  http://paste.opensuse.org/8035d628
# vi  ctris.spec

Name:           ctris
Summary:        Console based Tetris clone
URL:            http://www.hackl.dhs.org/ctris/
License:        GPL-2.0
Group:          Amusements/Games/Action/Arcade
Version:        0.42
Release:        1
Source:         %{name}-%{version}.tar.bz2
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  ncurses-devel
Requires:       ncurses

%description
An ASCII version of the well known game Tetris

%prep
%setup -q

%build
make

%install
%make_install
%debug_package

%clean
rm -rf $RPM_BUILD_ROOT;

%files
%defattr(-,root,root)
%doc AUTHORS COPYING README TODO
%doc %{_mandir}/man6/ctris.6.gz
/usr/games/ctris

%changelog

Notes
  • 在 openSUSE 環境內 #vi  xxxx.spec 會自動套入 .spec 格式
  • BuildRequires 為編譯過程中需要的套件
  • Requires 則為執行需要的套件

抓取套件  source code
# wget  http://goo.gl/zWJXyd -O ctris-0.42.tar.bz2

觀察目錄
# ls
ctris-0.42.tar.bz2  ctris.spec  .osc

觀察.osc 目錄
# ls   .osc/
_apiurl  _files  _osclib_version  _package  _project

使用 osc   vc 指令填寫 chang log
# osc  vc

填入 change log
-------------------------------------------------------------------
Sat Sep 24 07:11:09 UTC 2016 -

- OBS workshop

# ls
ctris-0.42.tar.bz2  ctris.changes  ctris.spec  .osc

觀察目錄
# ls .osc/
_apiurl  _files  _osclib_version  _package  _project

標記要新增或是移除的檔案
# osc   addremove
A    ctris.spec
A    ctris.changes
A    ctris-0.42.tar.bz2

觀察目錄, 多了 _to_be_added
# ls .osc/
_apiurl  _files  _osclib_version  _package  _project  _to_be_added

# cat  .osc/_to_be_added
ctris.spec
ctris.changes
ctris-0.42.tar.bz2

到目前為止都是在 local

接下來進行 commit ( -ci ) 以及上傳到 build.opensuse.org
# osc   ci    -m  "Ya! I am a packager"
Sending meta data...
Done.
Sending    ctris
Sending    ctris/ctris.spec
Sending    ctris/ctris.changes
Sending    ctris/ctris-0.42.tar.bz2
Transmitting file data ..
Committed revision 1.
觀察目錄
# ls .osc/
_apiurl  ctris-0.42.tar.bz2  ctris.changes  ctris.spec  _files  _meta  _osclib_version  _package  _project

接下來要設定套件要編譯的 Repositories ( OS )

到 Web UI
點選  Repositories
點選  Add repositories

螢幕快照 2016-09-24 下午3.18.41.png


針對要加入的 repo 勾選
勾選完之後就會自動 build

螢幕快照 2016-09-24 下午3.24.30.png


到此, 就可以在 OBS 上面享受用一個原始碼編譯出不同平台的便利性
也可以到 http://software.opensuse.org/search 搜尋一下自己的套件觀察 :)
2016-09-24 22-16-56 的螢幕擷圖.png


剛剛是在  build.opensuse.org 上面編譯
那如果要在本機編譯呢?

本地端 編譯  ( 要配合自己有裝的 repo )
可以使用 osc  build 指令 後面加上 repo 以及架構 還有 .spec 檔案
# osc  build  openSUSE_Leap_42.1   x86_64   ctris.spec
Building ctris.spec for openSUSE_Leap_42.1/x86_64
Getting buildinfo from server and store to /root/home:sakana/ctris/.osc/_buildinfo-openSUSE_Leap_42.1-x86_64.xml
Getting buildconfig from server and store to /root/home:sakana/ctris/.osc/_buildconfig-openSUSE_Leap_42.1-x86_64
Updating cache of required packages

The build root needs packages from project 'openSUSE:Leap:42.1'.
Note that malicious packages can compromise the build result or even your system.
Would you like to ...
0 - quit (default)
1 - always trust packages from 'openSUSE:Leap:42.1'
2 - trust packages just this time
? 1
adding 'openSUSE:Leap:42.1

週日
2016年09月18日


face
SUSE Beta Program

自己在不同的用途會使用不同的 OS
目前桌面環境是 openSUSE Leap 42.1 來進行日常作業
公司的測試環境也是 openSUSE Leap 42.1, 配合一些專案, 有可能伺服器的環境是 CentOS,  RHEL 或是 SUSE Linux Enterprise Server ( SLES ).

但如果要使用 SUSE 企業版Linux的環境來測試有兩種方式

1. 申請 60天免費測試( 針對穩定發行版 )

到 https://www.suse.com/products/server/download
使用自己的 e-mail 來申請 60 天的測試


這樣的方式主要是針對已經發行的穩定版來進行測試

但如果針對一些新功能想要嘗鮮或是針對功能修改想進行測試, 
例如 SUSE 的 Yast docker 模組的功能 ( 註: SLES 12 SP1 已經有 yast2 docker 模組了 )

那就要嘗試第2種方式

2. SUSE Beta Program

SUSE Beat Program 可以讓使用者測試目前還在開發中的企業版 SUSE Linux 功能

申請方式
至 SUSE Beta Program 頁面

點選右上方 login 登入 suse 帳號
這個部份可能自己要有 SUSE 帳號來登入 :) 

2016-06-15 13-25-07 的螢幕擷圖.png

登入帳號之後
這個部份可以看到主要有 3 種

  • SLES 新的 SP 測試
  • SLED 新的 SP 測試
  • SLES HA 新的 SP 測試

準備好要參加測試計劃了嗎? :)
接下來點選 畫面下方的 click here to join


2016-06-15 13-27-20 的螢幕擷圖.png

在 SUSE Beta Program Code of Conduct 頁面
點選 I Accept

接下來在 Beta Program 中就可以看見 Download Links

2016-06-15 13-30-51 的螢幕擷圖.png
就可以針對自己平台架構下載 ISO 進行相關測試了

另外針對一些額外的模組是要申請 Subscription Code 的, 可以參考頁面內 "Beta Test Subscription and Registration Code" 那段的說明.

Beta Test Subscription and Registration Code
Note: Regular product subscription and registration code will not work with the beta products!
Thus we will not provide a beta product subscription or beta product registration code by default for the SLE 12 SP2 Beta Program. You might request one via beta-programs@lists.suse.com, but we reserve the right to review your case and eventually provide one for your personal beta test.
Without a beta registration code for SLES or SLED you won’t be able to access the online SLE 12 Modules on SLES/SLED 12 SP2 Beta.

簡單來說就是要寄封信給 beta-programs@lists.suse.com 說明想要測試額外的模組
讓自己可以在 # yast2 repositories 新增那些額外模組的訂閱 :)

先記下來

~ enjoy it

週四
2016年09月01日


face
DHCP Server with openSUSE Leap 42.1 in 4 Steps

最近在整理實驗環境, 不想手動設定 IP 所以就在實驗環境內建立 DHCP Server 來發放 IP 啦 :)

既然要 4 個步驟完成 DHCP Server 的設定, 當然就是 YasT 啦

先安裝相關套件

# zypper  install  -n  yast2-dhcp-server  dhcp-server

安裝完畢之後就是呼叫可愛的 yast2  dhcp-server 啦

#yast2  dhcp-server

首先步驟 1 就是選取要發放 dhcp 的網卡, 以我的例子是 eth1
點選 eth1 -- > 點選 Seletct -- > 點選 Next

2016-08-30 19-57-44 的螢幕擷圖.png


接下來是DHCP 給的相關資訊, 填入環境的相關資訊, 例如
填入 DNS / Default Gateway -- > 點選 Next
2016-08-30 19-58-29 的螢幕擷圖.png

接下來是要發放的 IP 範圍
以我來說, 我設定由 192.168.100.100 開始發放, 到 192.168.100.199 為止 -- > 點選 Next


2016-08-30 19-59-12 的螢幕擷圖.png


最後就是 設定開機是否啟動
我這邊設定 開機自動啟動 ( When Booting )  -- > 點選 Finish
2016-08-30 19-59-27 的螢幕擷圖.png

就這樣簡簡單單完成 DHCP Server 架設

先記下來

~ enjoy it


週四
2016年07月14日


face
Docker 1.12 rc with openSUSE Leap 安裝小記

OS: openSUSE Leap 42.1

有個想法是等到 docker 1.12 發行的時候再開始專心跑一遍 docker 實驗.
之前說是 7/16 會發行, 但是今天看到這個....

推遲到 7/28……
那還是先衝 RC 版本吧



其實我的實驗機也是使用 Virtualization:containers 包的套件, 只是沒有用更新的 experimental
先看目前自己 docker 的版本, 目前是 1.11.1-105.1

# zypper  search  -s  docker
Loading repository data...
Reading installed packages...

S | Name                                 | Type       | Version                | Arch   | Repository                                    
--+--------------------------------------+------------+------------------------+--------+-----------------------------------------------
 | docker                               | srcpackage | 1.11.2-119.1           | noarch | Virtualization:containers (openSUSE_Leap_42.1)
 | docker                               | srcpackage | 1.9.1-13.1             | noarch | openSUSE-Leap-42.1-Update                     
 | docker                               | srcpackage | 1.9.1-10.1             | noarch | openSUSE-Leap-42.1-Update                     
 | docker                               | srcpackage | 1.9.1-7.1              | noarch | openSUSE-Leap-42.1-Update                     
 | docker                               | srcpackage | 1.9.0-4.1              | noarch | openSUSE-Leap-42.1-Update                     
i | docker                               | package    | 1.11.1-105.1           | x86_64 | (System Packages)              


透過 zypper 指令新增 repo


用zypper 指令安裝 docker, 這個會讓 docker 版本升級

# zypper -n  install  docker

確認目前安裝的 docker 版本

# docker --version
Docker version 1.12.0-dev, build d4bff5e


接下來就是實驗 docker swarm 的開始了 :)


~ enjoy it

週一
2016年06月27日


face

Oracle VM 在 3 月左右釋放出新版的 3.4.1 更新版本,這個版本修正與強化許多功能,有興趣的朋友可以參考 Oracle VM 3.4 正式釋出了 這篇文章,接著,我將說明怎樣從舊版的 3.3.3 升級到最新版的 3.4.1  ( 升級前,請各位先前往 edelivery.oracle.com 下載最新版的 OVM-Manager 與 OVM-Server ISO 光碟 )

  1.  首先你可以將 Oracle VM Manager 3.4.1 的 ISO 光碟放置到 Oracle VM Manager 主機中,並且透過 mount 指令工具將 ISO 光碟檔案掛載起來
    [root@OracleVM-Mgmt1 ~]# mkdir /mnt/OVM
    [root@OracleVM-Mgmt1 ~]# mount -o loop OVM-3.4.1.iso /mnt/OVM/
  2. 接著,切換路徑到 /mnt/OVM 中,執行 ./runInstaller.sh 腳本程式
    [root@OracleVM-Mgmt1 ~]# cd /mnt/OVM/
    [root@OracleVM-Mgmt1 OVM]# ./runInstaller.shOracle VM Manager Release 3.4.1 Installer

    Oracle VM Manager Installer log file:
    /var/log/ovmm/ovm-manager-3-install-2016-06-27-002357.log

    Please select an installation type:
    1: Install
    2: Upgrade
    3: Uninstall
    4: Help

    Select Number (1-4):  請選擇 2: Upgrade

  3. 升級過程會需要一些時間,因此務必要有耐心,相關過程如下:
    Verifying upgrading prerequisites …
    *** WARNING: Ensure that each Oracle VM Server for x86 has at least 200MB of available space for the /boot partition and 3GB of available space for the / partition.Starting Upgrade …

    Reading database parameters from config …

    ==========================
    Typically the current Oracle VM Manager database password will be the same as the Oracle VM Manager application password.

    ==========================
    Database Repository
    ==========================
    Please enter the current Oracle VM Manager database password for user ovs: 輸入目前 OVM 的資料庫管理密碼

    Oracle VM Manager application
    =============================
    Please enter the current Oracle VM Manager application password for user admin:輸入目前 OVM 的管理者密碼

    Oracle Weblogic Server 12c
    ==========================
    Please enter the current password for the WebLogic domain administrator: 輸入目前 WebLogic 的管理者密碼

    Please enter your fully qualified domain name, e.g. ovs123.us.oracle.com, (or IP address) of your management server for SSL certification generation, more than one IP address are detected: 192.168.1.100  [OracleVM-Mgmt1.server]: 敲下 Enter 直接使用偵測到的主機名稱

    Verifying configuration …
    Verifying 3.3.3 meets the minimum version for upgrade …

    Upgrading from version 3.3.3.1085 to version 3.4.1.1369

    Start upgrading Oracle VM Manager:
    1: Continue
    2: Abort

    Select Number (1-2): 輸入 1 進行升級作業

    接著系統便會開始進行升級作業, 這個升級作業會需要 10 – 20 分鐘, 請耐心等候

  4. 升級完畢後,系統會自動重新啟動 OVM Manager 相關服務,接著我們需要進行 Oracle VM Server 的升級,這個升級過程需要將運轉中的 VM 停止,操作方式如下:
    [root@OracleVM-Mgmt1 OVM]# mkdir /mnt/OVM-Server
    [root@OracleVM-Mgmt1 ~]# mount -o loop OVM-Server341.iso /mnt/OVM-Server/
    [root@OracleVM-Mgmt1 ~]# mkdir -p /var/www/repos
    [root@OracleVM-Mgmt1 ~]# cp -rp /mnt/OVM-Server/* /var/www/repos/上面的動作是將 OracleVM Server ISO 內容複製到一個 /var/www/repos 目錄內,當作 Local Repos 使用

    [root@OracleVM-Mgmt1 ~]# cd /var/www/
    [root@OracleVM-Mgmt1 www]# python -m SimpleHTTPServer 80
    Serving HTTP on 0.0.0.0 port 80 …

    接著,切換到這個目錄內透過 python 啟動一個 SimpleHTTPServer服務

  5. 接著,請用 admin 帳號登入到 Oracle VM Manager 介面,如下圖所示,切換到 Reports and Resources 分頁中OVM-1
  6. 切換到 Server Update Groups 項目內OVM-2
  7. 接著在 GlobalX86ServerUpdateConfiguration 建立一個新的更新套件庫 ( Repository ),內容如下:

    URL : http://IP/repos/Server  ( 放置剛才啟動 SimpleHTTPServer 的 IP 位址 )
    Enabled : 打勾
    Package Signature Type : 選擇 GPG
    Package Signature Key : http://IP/repos/RPM-GPG-KEY-oracle

    OVM-3

  8. 設定完畢後返回 Server and VMs 分頁, 你會發現每一台 Oracle VM Server 都會變成驚嘆號,直接在 Server 上按下滑鼠右鍵,選擇 Update,系統便會開始進行更新
    OVM-4

    更新時要注意,由於 Oracle VM Server 在更新完畢後會自動重新啟動,因此執行中的 VM 要記得先關閉喔。

  9. 最後,每一台更新好的 Oracle VM Server 你會發現原本的 Console 資訊不見了,這時候你可以到 /etc/sysconfig/init,找到 ACTIVE_CONSOLES=/dev/tty[1-6] 這行,將值改為/dev/tty[2-6],重新開機便可以恢復原本的 Console 資訊。

face

Mantis 可以透過統計資訊繪製一些圖表讓專案成員知道目前的修復狀態與變化,如果你在執行時出現 “unable to read/find font" 或者是 X燒包 時可以透過下列方式修復:

  • X燒包修復方式:主要是缺少 php-dom 套件,可以透過 yum -y install php-dom將套件安裝後,重啟 httpd 服務
  • unable to read/find font:這個主要是缺少 truetype 字型,你可以安裝 msttcorefonts ( http://corefonts.sourceforge.net/ ) 套件後,執行
    ln -s /usr/share/fonts/msttcorefonts /usr/share/fonts/truetype
    便可以解決

週三
2016年06月22日


face
Ansible vsphere_guest with openSUSE 小記-2

OS: openSUSE Leap 42.1
Ansible: 2.1.0.0
Module: vsphere_guest

昨天嘗試的是用 vsphere_guest 來新增刪除某一個 VM
今天則是用 Loops 的方式
  • 改為增加多個 guest VM
  • 詢問 template 名稱

檔案 test_vsphere_guest_deploy_from_template.yml

- name: Testing vsphere_guest module in VMware
# 這邊自己習慣控管 VMware 的是用本機
# 配合 hosts 內的 ansible_connection=local
 hosts: localhost
 connection: local
# 這種方式還不錯, 透過提示來輸入相關變數
 vars_prompt:
# 這邊的 name 就會是變數的名稱
   - name: "vcenter_hostname"
# 設定提示文字
     prompt: "Enter vcenter hostname"
# private 設定為 no 會顯示輸入的內容
     private: no
# 這邊可以設定預設值
     default: "vcsa"

   - name: "vcenter_user"
     prompt: "Enter vCenter username"
     private: no
     default: root

   - name: "vcenter_pass"
     prompt: "Enter vcenter password"
# private 設定為 yes 會顯示輸入的內容
     private: yes

   - name: "esxi_hostname"
     prompt: "Enter esxi hostname"
     private: no

   - name: "template_name"
     prompt: "Enter Template name"
     private: no
     default: openSUSELeap42.1_Training_Template

 tasks:
   - name: Create VM from template
# 可以用 with_sequence 方式, %0x 為序號, x 為16進制, 所以我用 10進制 u
# 如果是 %02x 就是 2位數, 例如 server00
# 如果只設定 server%0x , 但是超出1位數, 例如 1 to 10, 最後一個會變成 servera
# stride=2 代表間隔是 2
     with_sequence: start=1 end=10 stride=1 format=server%02u

# 用 with_item 正面表列
#      with_items:
#        - server01
#        - server02

# 使用 vsphere_guest 來設定相關工作
     vsphere_guest:
# vCenter 的 IP 或是 FQDN, 這邊用上面的變數讓使用者輸入
       vcenter_hostname: "{{ vcenter_hostname }}"
# Ansible 2.1 以後的版本可以設定 validate_certs, 預設會檢查 SSL certs, 如果是自己架設的vC, 可以設定no
       validate_certs: no
# vCenter 上面的使用者名稱, 對應上面的變數
       username: "{{ vcenter_user }}"
# vCenter 使用者的密碼, 對應上面的變數
       password: "{{ vcenter_pass }}"
# 要針對的 VMware guest 名稱
       guest: "{{ item }}"
# 從範本複製
# 如果有 from_template 就不能設定 state
       from_template: yes
# 範本名稱
       template_src: "{{ template_name }}"
# 複製範本完是否要開機, 預設是 yes
       power_on_after_clone: no
# 要佈署的 esxi 主機
       esxi:
         datacenter: Lab
         hostname: "{{ esxi_hostname }}"
     
# 目前測試 resource_pool 沒有成功
#        resource_pool: "/Resources"


然後應用相同的方式也讓刪除 VM 可以刪除多個
測試 reconfig 功能
  • 目前只支援 cdroom, mem 還有 cpu 數量的更改

檔案 test_vsphere_guest_reconfig_vm.yml

- name: Testing vsphere_guest module in VMware
# 這邊自己習慣控管 VMware 的是用本機
# 配合 hosts 內的 ansible_connection=local
 hosts: localhost
 connection: local
# 這種方式還不錯, 透過提示來輸入相關變數
 vars_prompt:
# 這邊的 name 就會是變數的名稱
   - name: "vcenter_hostname"
# 設定提示文字
     prompt: "Enter vcenter hostname"
# private 設定為 no 會顯示輸入的內容
     private: no
# 這邊可以設定預設值
     default: "vcsa"

   - name: "vcenter_user"
     prompt: "Enter vCenter username"
     private: no
     default: root

   - name: "vcenter_pass"
     prompt: "Enter vcenter password"
# private 設定為 yes 會顯示輸入的內容
     private: yes

   - name: "esxi_hostname"
     prompt: "Enter esxi hostname"
     private: no

 tasks:
   - name: Reconfig VM
#  'reconfigured' only applies changes to 'vm_cdrom', 'memory_mb', and 'num_cpus' in vm_hardware parameter.
#
# 可以用 with_sequence 方式, %0x 為序號, 10進制是用 u, 所以用 %02u
# 如果是 %02x 就是 2位數, 例如 server00
# 如果只設定 server%0x , 但是超出1位數, 例如 1 to 10, 最後一個會變成 servera
     with_sequence: start=1 end=5 stride=1 format=server%02u

# 用 with_item 正面表列
#      with_items:
#        - server01
#        - server02

# 使用 vsphere_guest 來設定相關工作
     vsphere_guest:
# vCenter 的 IP 或是 FQDN, 這邊用上面的變數讓使用者輸入
       vcenter_hostname: "{{ vcenter_hostname }}"
# Ansible 2.1 以後的版本可以設定 validate_certs, 預設會檢查 SSL certs, 如果是自己架設的vC, 可以設定no
       validate_certs: no
# vCenter 上面的使用者名稱, 對應上面的變數
       username: "{{ vcenter_user }}"
# vCenter 使用者的密碼, 對應上面的變數
       password: "{{ vcenter_pass }}"
# 要針對的 VMware guest 名稱
       guest: "{{ item }}"

# 如果有 from_template 就不能設定 state
       state: reconfigured

       vm_hardware:
         memory_mb: 2048
#          num_cpus: 4

# 如果設定 force: yes, 就會先關機然後設定再開機
# 有些設定必須在 VM 關機的狀況才能實施
       force: yes
# 要佈署的 esxi 主機
       esxi:
         datacenter: Lab
         hostname: "{{ esxi_hostname }}"

另外就是建立 VM 設定檔
  • 只有建立新 VM 設定檔, 沒有包含安裝
  • folder的話要是範本與機器有的folder

檔案 test_vsphere_guest_create_newvm.yml

- name: Testing vsphere_guest module in VMware
# 這邊自己習慣控管 VMware 的是用本機
# 配合 hosts 內的 ansible_connection=local
 hosts: localhost
 connection: local
# 這種方式還不錯, 透過提示來輸入相關變數
 vars_prompt:
# 這邊的 name 就會是變數的名稱
   - name: "vcenter_hostname"
# 設定提示文字
     prompt: "Enter vcenter hostname"
# private 設定為 no 會顯示輸入的內容
     private: no
# 這邊可以設定預設值
     default: "vcsa"

   - name: "vcenter_user"
     prompt: "Enter vCenter username"
     private: no
     default: root

   - name: "vcenter_pass"
     prompt: "Enter vcenter password"
# private 設定為 yes 會顯示輸入的內容
     private: yes

   - name: "esxi_hostname"
     prompt: "Enter esxi hostname"
     private: no


 tasks:
   - name: Create New VM
# 可以用 with_sequence 方式, %0x 為序號
# 如果是 %02x 就是 2位數, 例如 server00
# 如果只設定 server%0x , 但是超出1位數, 例如 1 to 10, 最後一個會變成 servera
# stride=2 代表間隔是 2
     with_sequence: start=0 end=1 stride=1 format=server%02x

# 用 with_item 正面表列
#      with_items:
#        - server01
#        - server02

# 使用 vsphere_guest 來設定相關工作
     vsphere_guest:
# vCenter 的 IP 或是 FQDN, 這邊用上面的變數讓使用者輸入
       vcenter_hostname: "{{ vcenter_hostname }}"
# Ansible 2.1 以後的版本可以設定 validate_certs, 預設會檢查 SSL certs, 如果是自己架設的vC, 可以設定no
       validate_certs: no
# vCenter 上面的使用者名稱, 對應上面的變數
       username: "{{ vcenter_user }}"
# vCenter 使用者的密碼, 對應上面的變數
       password: "{{ vcenter_pass }}"
# 要針對的 VMware guest 名稱
       guest: "{{ item }}"
#
# 如果有 from_template 就不能設定 state
       state: powered_off
#
       vm_extra_config:
         vcpu.hotadd: yes
         mem.hotadd:  yes
         notes: Create by Ansible
# 這邊的 Folder 必須是在虛擬機器與範本下的 folder, 不是主機與叢集下的 folder
         folder: Ansible
         resource_pool: "Resources"
       vm_disk:
         disk1:
           size_gb: 10
           type: thin
           datastore: Local_30.3
#
       vm_nic:
         nic1:
           type: vmxnet3
           network: Lab-192-168-100
           network_type: standard

週二
2016年06月21日


face
Ansible vsphere_guest module with openSUSE 小記

OS: openSUSE Leap 42.1
Ansible: 2.1.0.0
Module: vsphere_guest

Requirements (on host that executes module)
  • python >= 2.6
  • pysphere

檢查需求
# python --version
Python 2.7.9

pysphere 的部份

參考之前的網誌
加入套件庫

搜尋套件
# zypper   search   -s   sphere
Loading repository data...
Reading installed packages...

S | Name            | Type       | Version   | Arch   | Repository                         
--+-----------------+------------+-----------+--------+------------------------------------
 | python-pysphere | package    | 0.1.8-1.1 | noarch | Python Modules (openSUSE_Leap_42.1)


安裝 pysphere
# zypper  install   python-pysphere
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
 python-pysphere

1 new package to install.
Overall download size: 891.9 KiB. Already cached: 0 B. After the operation, additional 13.8 MiB will be used.
Continue? [y/n/? shows all options] (y):  Y

建立測試 playbook
後來採用 local 的方式執行, 然後相關資訊使用 var_prompt 的方式

檔案 Test_vsphere_guest_get_facts.yml

- name: Testing vsphere_guest module in VMware
# 這邊自己習慣控管 VMware 的是用本機
# 配合 hosts 內的 ansible_connection=local
 hosts: localhost
# 設定使用 local connection
 connection: local
# 這種方式還不錯, 透過提示來輸入相關變數
 vars_prompt:
# 這邊的 name 就會是變數的名稱
   - name: "vcenter_hostname"
# 設定提示文字
     prompt: "Enter vcenter hostname"
# private 設定為 no 會顯示輸入的內容
     private: no
# 這邊可以設定預設值
     default: "vcsa"

   - name: "vcenter_user"
     prompt: "Enter vCenter username"
     private: no
     default: root

   - name: "vcenter_pass"
     prompt: "Enter vcenter password"
# private 設定為 yes 會顯示輸入的內容
     private: yes

   - name: "guest_name"
     prompt: "Enter guest vm name"
     private: no


 tasks:
   - name: Testing gater facts from vSphere
# 使用 vsphere_guest 來設定相關工作
     vsphere_guest:
# vCenter 的 IP 或是 FQDN, 這邊用上面的變數讓使用者輸入
       vcenter_hostname: "{{ vcenter_hostname }}"
# Ansible 2.1 以後的版本可以設定 validate_certs, 預設會檢查 SSL certs, 如果是自己架設的vC, 可以設定no
       validate_certs: no
# vCenter 上面的使用者名稱, 對應上面的變數
       username: "{{ vcenter_user }}"
# vCenter 使用者的密碼, 對應上面的變數
       password: "{{ vcenter_pass }}"
# 要針對的 VMware guest 名稱
       guest: "{{ guest_name }}"
# 是否要取回 guest 資訊
       vmware_guest_facts: yes


下指令執行還有輸出結果

> ansible-playbook   -v   test_vsphere_guest_get_facts.yml
Enter vcenter hostname [vcsa]:  YOURIP_FQDN
Enter vCenter username [root]:
Enter vcenter password:
Enter guest vm name: openSUSELeap_SA_Docker

PLAY [Testing vsphere_guest module in VMware] **********************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [Testing gater facts from vSphere] ****************************************
ok: [localhost] => {"ansible_facts": {"hw_eth0": {"addresstype": "manual", "ipaddresses": [“w.x.y.z", "fe80::220:5fff:fe11:1111"], "label": "Network adapter 1", "macaddress": "00:50:56:11:11:11", "macaddress_dash": "00-50-56-11-11-11", "summary": "VM Net"}, "hw_guest_full_name": "Other Linux (32-bit)", "hw_guest_id": "otherLinuxGuest", "hw_interfaces": ["eth0"], "hw_memtotal_mb": 3976, "hw_name": "openSUSELeap_SA_Docker", "hw_power_status": "POWERED ON", "hw_processor_count": 2, "hw_product_uuid": "4222b4d6-ef7b-dc72-8603-9f7cbbfc2737", "module_hw": true}, "changed": false}

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0   



建立 test_vsphere_guest_delete_vm.yml

- name: Testing vsphere_guest module in VMware
# 這邊自己習慣控管 VMware 的是用本機
# 配合 hosts 內的 ansible_connection=local
 hosts: localhost
# 設定使用 local connection
 connection: local
# 這種方式還不錯, 透過提示來輸入相關變數
 vars_prompt:
# 這邊的 name 就會是變數的名稱
   - name: "vcenter_hostname"
# 設定提示文字
     prompt: "Enter vcenter hostname"
# private 設定為 no 會顯示輸入的內容
     private: no
# 這邊可以設定預設值
     default: "vcsa"
   - name: "vcenter_user"
     prompt: "Enter vCenter username"
     private: no
     default: root
   - name: "vcenter_pass"
     prompt: "Enter vcenter password"
# private 設定為 yes 會顯示輸入的內容
     private: yes
   - name: "guest_name"
     prompt: "Enter guest VM name your want to delete"
     private: no
 tasks:
   - name: Delete VM
# 使用 vsphere_guest 來設定相關工作
     vsphere_guest:
# vCenter 的 IP 或是 FQDN, 這邊用上面的變數讓使用者輸入
       vcenter_hostname: "{{ vcenter_hostname }}"
# Ansible 2.1 以後的版本可以設定 validate_certs, 預設會檢查 SSL certs, 如果是自己架設的vC, 可以設定no
       validate_certs: no
# vCenter 上面的使用者名稱, 對應上面的變數
       username: "{{ vcenter_user }}"
# vCenter 使用者的密碼, 對應上面的變數
       password: "{{ vcenter_pass }}"
# 要針對的 VMware guest 名稱
       guest: "{{ guest_name }}"
#
       state: absent
# 如果有使用 force: yes, 就是虛擬機不需要先關機就刪除
# 實際上觀察, 是會先關機然後刪除