星期三, 8月 24, 2016

Mac Air 連接switch console小記

OS: Mac EI Capitan

因為任務的需求, 今天要設定 Cisco 2960x switch
第1個想法就是..... Console 線要如何連接, 之前 google 到的結果好像要裝 driver
後來看到新的 Mac OS 不需要裝, 所以嘗試了一下

將 console 線接上 Mac

$ls   /dev/   |  grep  -i   usb
像我就會出現 /dev/tty.usbserial-A600IX2Z

使用 screen 指令連接 console
$screen   /dev/tty.usbserial-A600IX2Z   9600

然後就可以連接到 Switch console 了

可以直連的感覺真是美好

先記下來

~ enjoy it

星期四, 7月 14, 2016

Docker 1.12 rc with openSUSE Leap 安裝小記

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

星期一, 7月 04, 2016

Docker automated build with Github小記

Docker automated build with Github小記

OS: openSUSE Leap 42.1

首先先登入 dockerhub
點選右上角 Create  -- > Create Automated Build

2016-07-04 20-23-11 的螢幕擷圖.png


這個時候會出現還沒有跟 Github 或是 Bitbucket 連接的提示
點選 Link Accounts

2016-07-04 20-25-05 的螢幕擷圖.png


點選要連接的服務

2016-07-04 20-26-52 的螢幕擷圖.png

點選要連接的種類
我是先選 Public and Private
點選 Select

2016-07-04 20-27-54 的螢幕擷圖.png
確認給予認証權限
點選 Authorize application
2016-07-04 20-30-19 的螢幕擷圖.png
輸入密碼確認

2016-07-04 20-32-06 的螢幕擷圖.png


確認完之後就會發現帳戶已經連結

2016-07-04 20-33-33 的螢幕擷圖.png

接下來再次點選右上方 Create -- > Create Automated Build
就會發現圖示已經不一樣了
點選 Create Auto-build
2016-07-04 20-35-36 的螢幕擷圖.png

接下來選取要 Auto-build 的 repo

2016-07-04 20-40-29 的螢幕擷圖.png

接下來輸入名稱
點選 Create

2016-07-04 20-42-55 的螢幕擷圖.png

建立完 repo  之後, 點選 Build Settings
輸入 Dockerfile 所在的目錄
點選 Save Changes

2016-07-04 21-00-03 的螢幕擷圖.png


相關資訊可以到 Build Details 觀察
原則上是如果 Github 上面有 push 就會自動 trigger build
下面那個 Error  是我的檔案, 命名不是 Dockerfile, 我通常會加上系統的名稱, 所以目前的習慣是會自己建立一個 autobuild 目錄來存放.

2016-07-04 21-03-59 的螢幕擷圖.png


之後就可以用 docker pull 指令來進行 image pull

2016-07-04 21-10-34 的螢幕擷圖.png

先記下來

~ enjoy it

星期一, 6月 27, 2016

Spark 本機安裝 with Ansible 小記

Spark 本機安裝 with Ansible
現在的實驗環境會透過 Ansible 來管理

所以整理了一下 spark local 套件安裝的 ansible playbook
  • 使用 group 方式控管
  • 安裝 spark 相關套件, 透過變數詢問下載不同版本, 預設是 1.4.0
  • 使用 when: 方式針對不同的 OS 來安裝, 目前有 openSUSE Leap, CentOS, 還有 ubuntu
    • 目前已測試 openSUSE 42.1 / CentOS 7.2 / Ubuntu 14.04

檔案 spark_local.yml

- name: Install spark with local
 hosts: sparkSingle
#  透過 vars_prompt 動態詢問要裝的版本, 預設是 1.4.0
 vars_prompt:
   - name: "spark_version"
     prompt: "Please enter spark version, example 1.4.0"
     private: no
     default: "1.4.0"

 tasks:
   - name: Install java, wget  with openSUSE Leap
# Use sudo before ansible 1.9
#      sudo: True
     become: True
# 使用 pkg 加上 {{ item }} 配合後面的 with_item 來安裝多個套件
     zypper: name={{ item }}
     with_items:
       - java-1.7.0-openjdk-devel
       - wget
     when: ansible_distribution == "openSUSE Leap"

   - name: Install java, wget with CentOS
     become: True
     yum: name={{ item }}
     with_items:
       - java-1.7.0-openjdk-devel
       - wget
     when: ansible_distribution == "CentOS"

   - name: Install java, wget and scala with Ubuntu
     become: True
     apt: name={{ item }} update_cache=yes
     with_items:
       - openjdk-7-jdk
       - wget
       - scala
     when: ansible_distribution == "Ubuntu"

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

   - name: Get scala
     shell: wget http://www.scala-lang.org/files/archive/scala-2.10.1.tgz
     when: ansible_distribution == "CentOS" or ansible_distribution == "openSUSE Leap"

   - name: Exact source code of scala
     shell: tar xvf scala-2.10.1.tgz
     when: ansible_distribution == "CentOS" or ansible_distribution == "openSUSE Leap"

   - name: Move scala to /usr/lib
     become: True
     shell: mv scala-2.10.1 /usr/lib
     when: ansible_distribution == "CentOS" or ansible_distribution == "openSUSE Leap"

   - name: create link for scala
     become: True
     shell: ln -s /usr/lib/scala-2.10.1/  /usr/lib/scala
     when: ansible_distribution == "CentOS" or ansible_distribution == "openSUSE Leap"

   - name: touch .bashrc
     shell: touch ~/.bashrc
     when: ansible_distribution == "CentOS" or ansible_distribution == "openSUSE Leap"

   - name: export $PATH to .bashrc
     lineinfile: dest=~/.bashrc line="export PATH=$PATH:/usr/lib/scala/bin"
     when: ansible_distribution == "CentOS" or ansible_distribution == "openSUSE Leap"

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


# 由於沒有在 general option 使用 sudo, 這邊在使用 shell module 抓下來就是使用者自己的身份額非 root
# 這邊用 spark 1.4.0 版本
   - name: Download spark with pre-build hadoop
       shell: wget    http://archive.apache.org/dist/spark/spark-{{ spark_version }}/spark-{{ spark_version }}-bin-hadoop2.6.tgz

# 解開 source code
   - name: Exact pre-build source
     shell: tar zxvf spark-*.tgz

   - name: Rename spark folder
     shell: mv ~/spark*/ ~/spark


# 測試 jps 指令
   - name: Testing jps command
     command: jps
     register: jps
   - debug: var=jps.stdout_lines

執行方式

將要安裝 spark 的主機加入 sparkSingle 群組
然後執行 spark_local.yml 即可

先記下來

~ enjoy it


星期三, 6月 22, 2016

Ansible vsphere_guest with openSUSE 小記-2

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
#
       vm_hardware:
         memory_mb: 2048
         num_cpus: 2
# osid 可以參考 https://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html
         osid: sles11_64Guest
         scsi: paravirtual
         vm_cdrom:
           type: "iso"
           iso_path: "Local_30.3/ISO/SLE-12-SP1-Server-DVD-x86_64-GM-DVD1.iso"

# VMware 硬體版本
       vm_hw_version: vmx-08
# 要佈署的 esxi 主機
       esxi:
         datacenter: Lab
         hostname: "{{ esxi_hostname }}"

先記下來

~ enjoy it