歡迎光臨 Planet openSUSE

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

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


週四
2019年04月18日


face
ansible with openSUSE Leap 15 container image 建立小記

OS: openSUSE Leap 15


最近換了 MacAir 13 Mojave 10.14.4


嘗試在 Mac Mojave 上面裝 ansible[azure], 但是經歷了太多版本相容性的問題
-- > 放棄, 決定使用 openSUSE Leap 15 container 來解決


以下是我的 Dockerfile


# openSUSE Leap 15 with ansible, azure-cli
FROM opensuse/leap:15


# Author
# MAINTAINER 已經棄用, 之後要使用 LABEL 方式
LABEL maintainer="sakana@cycu.org.tw"


# Install python2-pip, upgrade pip, ansible[azure]
RUN zypper install -y python2-pip && \
 pip2 install --upgrade pip && \
 pip2 install ansible[azure]


# Install wget, download azure_rm.py, set permission
RUN zypper install -y wget && \
 wget  https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py && \
 chmod a+x azure_rm.py


# Install azure-cli
RUN zypper install -y curl && \
 rpm --import https://packages.microsoft.com/keys/microsoft.asc && \
 zypper addrepo --name 'Azure CLI' --check https://packages.microsoft.com/yumrepos/azure-cli azure-cli && \
 zypper install --from azure-cli -y azure-cli


#install vim
RUN zypper install -y vim

使用 docker build 指令將他打包成 image 並上傳到 docker hub

要使用的方式很簡單, 預設的 Tag 為 latest
下載 docker image
> docker  pull  sakana/ansible_opensuse15


這個 image 包含
  • ansible
  • azure-cli
  • azure SDK
  • azure_rm.py ( Dynamic inventory 使用 )
    • 但是最近 Azure 改變驗證的方式, 所以目前 azure_rm.py 可能有點問題, 還需要觀察還有實驗
      • 原本驗證檔案是看 ~/.azure/credentials
      • 現在可能會去看 ~/.azure/azureProfile.json


使用方式很簡單


> docker  run  -it  sakana/ansible_opensuse15  /bin/bash


在 container 內執行  az login 指令
# az  login


  • 會被要求開啟瀏覽器進行帳號驗證
  • 驗證成功會自動建立 ~/.azure 目錄以及相關驗證檔案


接下來就可以開始使用 ansible 指令進行管理
日後計畫把  ansible with aws 或是 ansible with gcp 放進來


~ enjoy it


Reference:


週日
2019年04月14日


face
Ansible ec2_key module with openSUSE 小記

OS: openSUSE Leap 15
Ansible: 2.7.8

Requirements ( on host that executes module )
  • boto
  • boto3
  • Python >= 2.6

首先來查詢 boto 是否有安裝

# zypper  search  boto

Loading repository data...
Reading installed packages...

S | Name                          | Summary       | Type
--+-------------------------------+----------------------------------------+--------
i | google-roboto-fonts           | Mechanical yet friendly fonts       | package
 | google-roboto-mono-fonts      | Google Roboto Mono fonts         | package
 | python-gcs-oauth2-boto-plugin | GCE Storage plugin for OAuth2          | package
i | python2-boto                  | Amazon Web Services Library       | package
 | python2-boto3                 | Amazon Web Services Library         | package
 | python2-botocore              | Python interface for AWS         | package
 | python3-boto                  | Amazon Web Services Library         | package
 | python3-boto3                 | Amazon Web Services Library         | package


安裝 boto3
# pip  install  boto3

Requirement already satisfied: six>=1.5 in /usr/lib/python3.6/site-packages (from python-dateutil<3.0.0,>=2.1; python_version >= "2.7"->botocore<1.13.0,>=1.12.130->boto3) (1.11.0)
awscli 1.16.135 has requirement botocore==1.12.125, but you'll have botocore 1.12.130 which is incompatible.
Installing collected packages: botocore, boto3
 Found existing installation: botocore 1.12.125
   Uninstalling botocore-1.12.125:
     Successfully uninstalled botocore-1.12.125
Successfully installed boto3-1.9.130 botocore-1.12.130

有出現 awscli 1.16.135 要求 botocore 版本是 1.12.125 但是我們裝了 1.12.130
暫時先觀察一下

參考官方文件

連接的寫法像下列的方式
- hosts: localhost
 connection: local
 gather_facts: False

驗證的部份, 方式有兩種
  • 以 export 變數的方式
    • export AWS_ACCESS_KEY_ID='AK123'
    • export AWS_SECRET_ACCESS_KEY='abc123'
  • 存放在 playbook 中, 例如是 vars_file , 但是我覺得我會比較喜歡使用 vars_prompt , 但是缺點就是每個 ec2 moudle 都要寫 aws_access_key 與 aws_secret_key 這兩個參數
    • aws_access_key: "{{aws_access_key_id}}"
    • aws_secret_key: "{{aws_secret_access_key}}"




來建立一個測試用的 yaml 檔案
> vi   aws_create_ec2_key.yml

---
# AWS 相關測試
# edit by sakana 2019/4/14
# 官方建議的方式
- hosts: localhost
 connection: local
 gather_facts: False
#

 vars_prompt:
#要求使用者輸入 access key id 與 secret access key
   - name: "aws_access_key_id"
     prompt: "Enter aws_access_key_id"
     private: no

   - name: "aws_secret_access_key"
     prompt: "Enter aws_secret_access_key"
     private: no

   - name: "aws_region"
     prompt: "Enter AWS Region"
     private: no
     default: us-east-2

#詢問 key name
   - name: "ec2_key_name"
     prompt: "Enter ec2 key name"
     private: no


 tasks:
   - name: Create EC2 key pair
     ec2_key:
       aws_access_key: "{{ aws_access_key_id }}"
       aws_secret_key: "{{ aws_secret_access_key }}"
       name: "{{ ec2_key_name }}"
       region: "{{ aws_region }}"
       state: present
#使用 register 之後來將 key 匯出  
     register: ec2_key_result

# 使用copy module 來將傳回的資訊複製成檔案, 並設定權限
   - name: Save private key
     copy:
       content: "{{ ec2_key_result.key.private_key }}"
       dest: "~/{{ec2_key_name}}.pem"
       mode: 0400




參考網路上的作法, 使用 register 搭配 copy module 來儲存 key 並設定 permission

來進行實際測試

> ansible-playbook  aws_create_ec2_key.yml

[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

Enter aws_access_key_id:  輸入YOUR_ACCESS_KEY_ID
Enter aws_secret_access_key: 輸入YOUR_SECRET_ACCESS_KEY
Enter AWS Region [us-east-2]:
Enter ec2 key name: test20190414

PLAY [localhost] **********************************************************************************************************************************

TASK [Create EC2 key pair] ************************************************************************************************************************
changed: [localhost]

TASK [Save private key] ***************************************************************************************************************************
changed: [localhost]

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

觀察相關資訊
按照我們 playbook 內的設定, 存放到使用者家目錄
> ls  -l   ~/test20190414.pem
-r-------- 1 sakana users 1670  4月 14 11:42 /home/sakana/test20190414.pem

也可以到 Manage Console 觀察


接下來用同樣的方式測試移除 EC2 Key pair

> vi   aws_remove_ec2_key.yml

---
# AWS 相關測試
# edit by sakana 2019/4/14
# 官方建議的方式
- hosts: localhost
 connection: local
 gather_facts: False
#

 vars_prompt:
#要求使用者輸入 access key id 與 secret access key
   - name: "aws_access_key_id"
     prompt: "Enter aws_access_key_id"
     private: no

   - name: "aws_secret_access_key"
     prompt: "Enter aws_secret_access_key"
     private: no

   - name: "aws_region"
     prompt: "Enter AWS Region"
     private: no
     default: us-east-2

#詢問 key name
   - name: "ec2_key_name"
     prompt: "Enter ec2 key name"
     private: no


 tasks:
   - name: Create EC2 key pair
     ec2_key:
       aws_access_key: "{{ aws_access_key_id }}"
       aws_secret_key: "{{ aws_secret_access_key }}"
       name: "{{ ec2_key_name }}"
       region: "{{ aws_region }}"
       state: absent

主要就是 state 換成 absent

> ansible-playbook  aws_remove_ec2_key.yml

[WARNING]: provided hosts list

週六
2019年04月06日


face
AWS Elastic Load Balancing with openSUSE instance in AWS 測試小記

OS: openSUSE Leap 15
AWS CLI: 1.16.135

準備工作:

參考昨天自己的筆記建立兩個 openSUSE instances in AWS

因為要測試 Load Balancing
建立的 EC2 instance 分別隸屬於不同的 subnet ( 不同的 Availability Zone )


兩台 openSUSE Leap 15 instance ( 兩台 instances 都要做 )

==== 在 openSUSE instances 內 ====

切換成 root
>  sudo  su -

安裝 apache2 套件
# zypper  install  apache2

Building repository 'openSUSE-Leap-15.0-Non-Oss' cache ..................................................................................................[done]
Building repository 'openSUSE-Leap-15.0-Oss' cache ......................................................................................................[done]
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 11 NEW packages are going to be installed:
 apache2 apache2-prefork apache2-utils git-web libapr-util1 libapr1 libbrotlicommon1 libbrotlienc1 libgc1 system-user-wwwrun w3m

The following recommended package was automatically selected:
 w3m

11 new packages to install.
Overall download size: 3.3 MiB. Already cached: 0 B. After the operation, additional 8.8 MiB will be used.
Continue? [y/n/...? shows all options] (y):  Y

啟動 apache 服務 ( Web )
# systemctl  start  apache2

觀察服務狀態
# systemctl  status  apache2

● apache2.service - The Apache Webserver
  Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
  Active: active (running) since Sat 2019-04-06 11:29:18 UTC; 3s ago
Main PID: 2000 (httpd-prefork)

設定開機啟動服務
# systemctl  enable  apache2

Created symlink /etc/systemd/system/httpd.service → /usr/lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/apache.service → /usr/lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /usr/lib/systemd/system/apache2.service.

建立測試網頁 ( 不同 site 帶不同的數字 )
# vi   /srv/www/htdocs/index.html

<html> This is site 1 </html>

=============================

接下來在建立一個 security group 可以允許 port 80 連入

> aws ec2 create-security-group --group-name  testweb-sg  --description  "Test Web"

> aws ec2 authorize-security-group-ingress  --group-name  testweb-sg --protocol  tcp  --port  80 --cidr  0.0.0.0/0

接下來使用 aws 指令來將剛剛的 instance 掛上 test-sg ( port 22 ) 以及 testweb-sg ( port 80 )兩個 security group

針對兩個 instance 來修改
> aws ec2 modify-instance-attribute --instance-id  i-0563bb05f74c6d4d3 --groups "sg-09422cde3af0f76cb" "sg-0e725fc07ae70c8a8"

> aws ec2 modify-instance-attribute --instance-id i-06bfb784bea733d7b --groups "sg-09422cde3af0f76cb" "sg-0e725fc07ae70c8a8"

  • Instance-id 請換成自己的 id
  • --groups 後面請填上 security-group-id


測試網站存取
針對兩個 instance 的 Public IP 來存取




參考官方文件:

驗證是否有支援 ELB
> aws elbv2  help

如果有出現指令說明就是有支援

使用 aws 指令 建立 load balancer
> aws  elbv2  create-load-balancer  --name  test-elb --subnets  subnet-92dfe4fb subnet-e4e8989e  --security-groups  sg-0e725fc07ae70c8a8

  • 建立一個 test-elb, 與 2 個 subnet 和 1 個 security group

到 Manage console 觀察
目前的狀態是 provisioning ( 配置 )
Listeners 是空的


使用 aws 指令建立 target group
> aws  elbv2  create-target-group  --name  test-target  --protocol  HTTP --port  80  --vpc-id vpc-c42635ac

  • 這邊要指定 vpc-id 不能使用預設的方式

可以到 Manage console 觀察

順便觀察 Registered targets , 目前為空

接下來用 aws 指令將 instance 註冊到 target
> aws  elbv2  register-targets --target-group-arn arn:aws:elasticloadbalancing:us-east-2:772127831904:targetgroup/test-target/732b4ddaff306e56  --targets  Id=i-0563bb05f74c6d4d3  Id=i-06bfb784bea733d7b

  • Target-group-arn 用剛剛建立起來的 arn
  • --targets 後面接 2 個 openSUSE instance id

再次觀察 Registered targets


最後使用 aws 指令建立 listener

> aws  elbv2  create-listener --load-balancer-arn arn:aws:elasticloadbalancing:us-east-2:772127831904:loadbalancer/app/test-elb/00d35f538d194bd1  --protocol  HTTP  --port 80  --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-2:772127831904:targetgroup/test-target/742b4ddaff306e56


到 Manage Console 觀察 test-elb 的 Listeners


觀察  test-elb 的狀態為 active


點選 Description 觀察 DNS name 並複製 FQDN

開啟瀏覽器
使用 Load balancer 的 FQDN 進行存取測試, 應該會看到向不同 instance 進行存取


今天完成 AWS Load balaner 測試
也是再往前一小步

~ enjoy it


Reference:


週五
2019年04月05日


face
使用 AWS CLI 建立 openSUSE Leap 15 in AWS EC2 小記

OS: openSUSE Leap 15
AWS CLI: 1.16.135


測試 aws ec2 指令
> aws  ec2  describe-regions  --output  table

----------------------------------------------------------
|                     DescribeRegions             |
+--------------------------------------------------------+
||                        Regions    ||
|+-----------------------------------+------------------+|
||             Endpoint       | RegionName ||
|+-----------------------------------+------------------+|
||  ec2.eu-north-1.amazonaws.com     | eu-north-1 ||
||  ec2.ap-south-1.amazonaws.com     | ap-south-1 ||
||  ec2.eu-west-3.amazonaws.com      | eu-west-3 ||
||  ec2.eu-west-2.amazonaws.com      | eu-west-2 ||
||  ec2.eu-west-1.amazonaws.com      | eu-west-1 ||
||  ec2.ap-northeast-2.amazonaws.com |  ap-northeast-2 ||
||  ec2.ap-northeast-1.amazonaws.com |  ap-northeast-1 ||
||  ec2.sa-east-1.amazonaws.com      | sa-east-1 ||
||  ec2.ca-central-1.amazonaws.com   | ca-central-1 ||
||  ec2.ap-southeast-1.amazonaws.com |  ap-southeast-1 ||
||  ec2.ap-southeast-2.amazonaws.com |  ap-southeast-2 ||
||  ec2.eu-central-1.amazonaws.com   | eu-central-1 ||
||  ec2.us-east-1.amazonaws.com      | us-east-1 ||
||  ec2.us-east-2.amazonaws.com      | us-east-2 ||
||  ec2.us-west-1.amazonaws.com      | us-west-1 ||
||  ec2.us-west-2.amazonaws.com      | us-west-2 ||
|+-----------------------------------+------------------+|


嘗試使用 aws  ec2 指令建立 security group
這邊先嘗試不指定 vpc-id 的方式來建立, 觀察預設值
> aws  ec2  create-security-group  --group-name  test-sg  --description "Test security group"
{
   "GroupId": "sg-0408e6036599eee01"
}

建立起來的 Security Group 是建立在 US East (N. Virginia)

觀察之前 AWS 的設定
> cat  ~/.aws/config

[default]
region = us-east-1
output = json

因為之前有設定 default region 為 us-east-1 所以 security group 會建立到 N. Virginia

目前測試環境在 Ohio ( us-east-2 )
所以大概有兩種方式
  • 將 ~/.aws/config 的 default region 設定為 us-east-2
  • 使用 aws ec2 指令的時候加上 --vpc-id 選項

嘗試使用指令 刪除剛剛的 security group , 這邊我使用 --group-name 的方式
> aws  ec2  delete-security-group  --group-name  test-sg

那要如何知道 --vpc-id 呢, 可以使用 aws ec2 指令進行查詢

> aws  ec2  describe-vpcs
{
   "Vpcs": [
       {
           "CidrBlock": "172.31.0.0/16",
           "DhcpOptionsId": "dopt-eab73381",
           "State": "available",
           "VpcId": "vpc-c42535ac",
           "OwnerId": "781126831804",
           "InstanceTenancy": "default",
           "CidrBlockAssociationSet": [
               {
                   "AssociationId": "vpc-cidr-assoc-3efaf757",
                   "CidrBlock": "172.31.0.0/16",
                   "CidrBlockState": {
                       "State": "associated"
                   }
               }
           ],
           "IsDefault": true
       }
   ]
}

有了 vpc-id 接下來使用 aws ec2 指令建立 security group 測試
> aws  ec2  create-security-group  --group-name  test-sg  --vpc-id  vpc-c42535ac --description "Test cli"

{
   "GroupId": "sg-090a6648734644155"
}

接下來建立 規則, 開放 所有 IP 連線 port 22
> aws  ec2  authorize-security-group-ingress  --group-name  test-sg --protocol  tcp  --port 22 --cidr  0.0.0.0/0


接下來建立 Key Pair
使用 aws ec2 指令建立金鑰
> aws  ec2  create-key-pair  --key-name  test-key  --query  KeyMaterial"  --output  text  > test-key.pem

  • --query "KeyMaterial" 參數只擷取您需要的輸出部分到 .pem 檔案

調整 key 的權限
> chmod  400  test-key.pem

接下來準備要建立 instance
但是開始之前還有一些資訊要知道的
  • image-id
  • subnet-id
  • security-group-ids

image-id  的查詢方式 這邊我以 openSUSE 為例
> aws  ec2  describe-images  --filters  'Name=name,Values=openSUSE*'


subnet-id 查詢方式
> aws  ec2  describe-subnets

security-group-ids 查詢方式
> aws  ec2  describe-security-groups

再來就是啟動 instances 了

> aws  ec2  run-instances --image-id  ami-026fef571e7830801 --subnet-id  subnet-92dfe4fb --security-group-ids sg-090a6648734644255  --instance-type  t2.micro --key-name  test-key --count  1

建立的時候會回應相關資訊, 其中會有 InstanceId

透過 aws ec2 指令查詢 Public IP address
> aws ec2  describe-instances --instance-ids  i-YOUR_InstanceID --query "Reservations[0].Instances[0].PublicIpAddress"

"18.223.195.175"

根據得到的 IP 進行連線

> ssh  -i  test-key.pem  ec2-user@18.223.195.175

The authenticity of host '18.223.195.175 (18.223.195.175)' can't be established.
ECDSA key fingerprint is SHA256:HbjDjHC5oNzXGWwKsmExV1VzUWWfCjvmYgTHlRWbcJk.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '18.223.195.175' (ECDSA) to the list of known hosts.
openSUSE Leap 15.0 x86-64

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

Have a lot of fun...
ec2-user@ip-172-31-0-246:~>


這樣也算是多邁入 AWS 一小步
~ enjoy it

Reference:


週日
2019年03月31日


face
Flatpak 佔用過多系統空間處理小記

OS: openSUSE Leap 15
Flatpak : 0.10.4

家中工作的桌機是使用準系統 with SSD
今天早上收到 / 目錄已經 100 % 使用無可用空間嚇了一跳

使用  df -h 觀察

> df  -h

檔案系統        容量 已用 可用 已用% 掛載點
devtmpfs        7.8G 0 7.8G    0% /dev
tmpfs           7.8G 97M 7.7G    2% /dev/shm
tmpfs           7.8G 400M 7.4G    6% /run
tmpfs           7.8G 0 7.8G    0% /sys/fs/cgroup
/dev/sda2        40G 33G 0 100% /
/dev/sda2        40G 33G 0 100% /opt
/dev/sda2        40G 33G 0 100% /boot/grub2/i386-pc
/dev/sda1       500M 5.0M 495M    1% /boot/efi
/dev/sda2        40G 33G 0 100% /var
/dev/sda2        40G 33G 0 100% /tmp
/dev/sda2        40G 33G 0 100% /usr/local
/dev/sda3       185G 46G 140G   25% /home
/dev/sda2        40G 33G 0 100% /.snapshots
/dev/sda2        40G 33G 0 100% /boot/grub2/x86_64-efi

一開始是以為 /.snapshots 佔用太多空間
所以參考自己之前的筆記

使用 snapper list 指令列出 snapshot
# snapper   list

Type   | # | Pre # | Date                     | User | Cleanup | Description | Userdata     
-------+-----+-------+--------------------------+------+---------+-------------------+--------------
single | 0   | |                      | root | | current  |
single | 1   | | Sat Jun  9 11:15:49 2018 | root |         | 首個根文件系統 |
pre    | 341 |       | Thu Feb 14 18:40:24 2019 | root | number  | zypp(zypper) | important=yes
post   | 342 | 341   | Thu Feb 14 18:46:53 2019 | root | number  | | important=yes
pre    | 351 |       | Thu Feb 21 16:08:45 2019 | root | number  | zypp(packagekitd) | important=yes
post   | 352 | 351   | Thu Feb 21 16:10:24 2019 | root | number  | | important=yes
pre    | 355 |       | Wed Feb 27 23:12:58 2019 | root | number  | zypp(packagekitd) | important=yes
post   | 356 | 355   | Wed Feb 27 23:18:24 2019 | root | number  | | important=yes
pre    | 387 |       | Sun Mar 10 12:44:15 2019 | root | number  | zypp(packagekitd) | important=yes
post   | 388 | 387   | Sun Mar 10 12:45:46 2019 | root | number  | | important=yes
pre    | 391 |       | Tue Mar 19 00:05:35 2019 | root | number  | zypp(packagekitd) | important=yes
post   | 392 | 391   | Tue Mar 19 00:06:26 2019 | root | number  | | important=yes
pre    | 393 |       | Tue Mar 19 22:29:24 2019 | root | number  | zypp(packagekitd) | important=no
post   | 394 | 393   | Tue Mar 19 22:29:27 2019 | root | number  | | important=no
pre    | 395 |       | Tue Mar 19 23:26:49 2019 | root | number  | zypp(zypper) | important=no
post   | 396 | 395   | Tue Mar 19 23:27:11 2019 | root | number  | | important=no
pre    | 397 |       | Tue Mar 19 23:28:46 2019 | root | number  | zypp(zypper) | important=no
post   | 398 | 397   | Tue Mar 19 23:29:18 2019 | root | number  | | important=no
pre    | 399 |       | Tue Mar 19 23:35:50 2019 | root | number  | zypp(zypper) | important=no
post   | 400 | 399   | Tue Mar 19 23:35:55 2019 | root | number  | | important=no
pre    | 401 |       | Sat Mar 23 07:34:21 2019 | root | number  | zypp(packagekitd) | important=no
post   | 402 | 401   | Sat Mar 23 07:34:41 2019 | root | number  | | important=no
pre    | 403 |       | Sun Mar 31 07:49:14 2019 | root | number  | zypp(packagekitd) | important=yes


將上面不重要的 snapshot 刪除
# snapper  delete  392-401

再次觀察系統空間

# df  -h

Filesystem      Size Used Avail Use% Mounted on
devtmpfs        7.8G 0 7.8G   0% /dev
tmpfs           7.8G 105M 7.7G   2% /dev/shm
tmpfs           7.8G 408M 7.4G   6% /run
tmpfs           7.8G

週六
2019年03月30日


face
AWS CLI with openSUSE Leap 15 小記

最近開始接觸 AWS, 接下來要練習的就是使用 AWS 的 CLI

使用  pip 指令安裝 awscli
# pip  install  awscli

觀察版本資訊
> aws  --version
aws-cli/1.16.135 Python/3.6.5 Linux/4.12.14-lp150.12.48-default botocore/1.12.125

為了進行練習, 我在 IAM 建立一個使用者
  • 加入到 管理者群組
  • 只給 Access Key ( Programmatic access ) , 但是沒有勾選登入 AWS Management Console access

使用者的 Secret access key 只有建立的時候可以下載 .csv 或是複製上面的 key, 記得保存下來

進行相關設定
> aws  configure

輸入 Access Key 與 Secret Access Key
AWS Access Key ID [None]: AKIA3MGXVXNQDYZWXCT5
AWS Secret Access Key [None]: lZw3dL6qhQzsUSO5YU4oxWJyguclaNz0hX
Default region name [None]:
Default output format [None]:

觀察相關資訊, 就會發現家目錄下會建立 .aws 目錄
> ls  ~/.aws/
config  credentials

  • 這邊會發現到, 相關的 access key 會被存放到 ~/.aws/credentials
  • Default region 以及 output format 會被存放到 ~/.aws/config

觀察相關設定
> aws  configure  list
     Name                  Value Type  Location
     ----                  ----- ----  --------
  profile                <not set> None    None
access_key     ****************XCT5 shared-credentials-file    
secret_key     ****************z0hX shared-credentials-file    
   region                us-east-1 config-file    ~/.aws/config

指令的方式可以使用 aws  help 來查詢

使用 aws sc 指令建立 bucket, 這邊我建立一個 bucket 是 sakana-test

> aws  s3  mb  s3://sakana-test
make_bucket: sakana-test

  • mb 是建立 bucket 指令
  • s3:// 後面輸入要建立的 bucket 名稱

列出 S3 bucket
> aws  s3   ls
2019-03-30 22:24:44 sakana-test


這個時候也可以登入到 console 觀察


接下來測試將本機上面的圖片上傳道 S3 Bucket
> aws  s3  cp  2019-03-30.png    s3://sakana-test

upload: ./2019-03-30.png to s3://sakana-test/2019-03-30.png

到 Management Console 觀察

接下來嘗試將 S3 上面的檔案下載到本機

> aws  s3  cp  s3://sakana-test/2019-03-30.png   .

download: s3://sakana-test/2019-03-30.png to ./2019-03-30.png

接下來嘗試刪除 bucket

> aws  s3  rb  s3://sakana-test

remove_bucket failed: s3://sakana-test An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty

這邊會產生錯誤的原因是  aws s3 rb 是針對空的 bucket 來進行刪除, 所以會產生錯誤訊息

如果真的確定 bucket 底下的物件真的不需要, 可以使用 --force 的方式在刪除 bucket 之前刪除底下的

> aws  s3  rb  s3://sakana-test  --force

delete: s3://sakana-test/2019-03-30.png
remove_bucket: sakana-test

觀察相關資訊
> aws  s3  ls
就會發現剛剛那個 bucket 已經被刪除了

這樣也算是往 AWS 又前進一小步

~ enjoy it

Reference:


週六
2019年03月16日


face
Migrate from openSUSE Leap to SUSE Linux Enterprise Server in Azure

OS: openSUSE Leap 15 in Azure

之前 openSUSE.Asia summit 2018 就有人發表 openSUSE Leap migrate 到 SLES, 今天看到有人 post 相關 link, 就想說來實際 Lab 一下.

按照官方網站的說明先說一下, 建議這樣的方式是在測試環境中執行 :)

升級路徑參考


開始之前先觀察相關資訊

# cat   /etc/*release

NAME="openSUSE Leap"
VERSION="15.0"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.0"
PRETTY_NAME="openSUSE Leap 15.0"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.0"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"


# zypper  lr

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

# | Alias                      | Name           | Enabled | GPG Check | Refresh
--+----------------------------+-----------------------------------------+---------+-----------+--------
1 | openSUSE-Leap-15.0--Debug  | openSUSE-Leap-15.0-Debug           | No | ---- | ----
2 | openSUSE-Leap-15.0-Non-Oss | openSUSE-Leap-15.0-Non-Oss              | Yes | ( p) Yes | Yes
3 | openSUSE-Leap-15.0-Oss     | openSUSE-Leap-15.0-Oss           | Yes | ( p) Yes | Yes
4 | openSUSE-Leap-15.0-Source  | openSUSE-Leap-15.0-Source           | No | ---- | ----
5 | openSUSE-Leap-15.0-Update  | openSUSE-Leap-15.0-Update           | Yes | ( p) Yes | Yes
6 | openSUSE-Leap-cloud-tools  | openSUSE-Leap-Cloud-Tools           | Yes | ( p) Yes | Yes
7 | repo-debug-update          | openSUSE-Leap-15.0-Update-Debug         | No | ---- | ----
8 | repo-debug-update-non-oss  | openSUSE-Leap-15.0-Update-Debug-Non-Oss | No      | ---- | ----
9 | repo-update-non-oss        | openSUSE-Leap-15.0-Update-Non-Oss       | Yes | ( p) Yes | Yes


# zypper  search SUSEConnect

Loading repository data...
Reading installed packages...

S | Name        | Summary                                             | Type
--+-------------+------------------------------------------------------------+-----------
i | SUSEConnect | Utility to register a system with the SUSE Customer Center | package   

openSUSE Leap 15 in Azure 預設安裝 SUSEConnect
  • 我確認過我的 Desktop 預設沒有安裝 SUSEConnect

# zypper  search  yast2-brand

Loading repository data...
Reading installed packages...

S | Name                           | Summary       | Type
--+--------------------------------+-----------------------------------------+--------
 | yast2-branding-openSUSE        | YaST2 - Theme (openSUSE)         | package
 | yast2-branding-openSUSE-Oxygen | YaST2 - switcher into Oxygen icon theme | package

openSUSE Leap 15 in Azure 預設沒有裝 yast2-branding-openSUSE相關套件
  • 我確認我的 Desktop 預設裝 yast2-branding-openSUSE


開始進行 Migrate 流程

安裝 SUSEConnect 套件 ( openSUSE Leap 15 in Azure 已經內建 )
# zypper  in  SUSEConnect

Loading repository data...
Reading installed packages...
'SUSEConnect' is already installed.
No update candidate for 'SUSEConnect-0.3.12-lp150.2.9.1.x86_64'. The highest available version is already installed.
Resolving package dependencies...

Nothing to do.

移除 yast2-brainding-openSUSE 相關套件 ( openSUSE Leap 15 in Azure 沒有裝 )
# rpm  -e  --nodeps yast2-branding-openSUSE
error: package yast2-branding-openSUSE is not installed

# rpm  -e  --nodeps yast2-branding-openSUSE-Oxygen

error: package yast2-branding-openSUSE-Oxygen is not installed

確認 SUSEConnect 註冊狀況

# SUSEConnect  -s
[{"identifier":"openSUSE","version":"15.0","arch":"x86_64","status":"Not Registered"}]


SUSEConnect 需要使用 REGISTRATION_CODE 來註冊, 如果沒有提供註冊碼會被提示要提供

# SUSEConnect  -p  SLES/15.0/x86_64

Please register your system using the --regcode parameter, or provide the --url parameter to register against SMT.

如何取得 SCC 帳戶還有試用註冊碼?
到這邊


選取 SLES 的版本還有硬體類型 ( 例如 AMD64 / Intel 64 )
填入相關資訊就可以取得


所以要到 SCC   https://scc.suse.com/login
登入到 SUSE Customer Center


如果有註冊碼, 可以在右邊 Activate subscriptions 啟用他


可以在 subscriptions 那邊觀察到已經被啟用



進行註冊
# SUSEConnect  -r  YOUR_REGIST_CODE -p  SLES/15.0/x86_64

Registered SLES 15.0 x86_64
To server: https://scc.suse.com
Successfully registered system.


確認 SUSEConnect 註冊狀況

# SUSEConnect  -s

[{"identifier":"SLES","version":"15","arch":"x86_64","status":"Registered","regcode":"YOUR_REGIST_CODE","starts_at":"2019-03-16 10:43:00 UTC","expires_at":"2019-05-15 10:43:00 UTC","subscription_status":"ACTIVE","type":"oem"}]

這邊就會發現已經註冊了, 然後也會看到到期日

# zypper lr

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

#  | Alias                                                                       | Name | Enabled | GPG Check | Refresh
---+-----------------------------------------------------------------------------+-----------------------------------------+---------+-----------+--------
1 | SUSE_Linux_Enterprise_Server_15_x86_64:SLE-Product-SLES15-Debuginfo-Pool    | SLE-Product-SLES15-Debuginfo-Pool | No | ---- | ----
2 | SUSE_Linux_Enterprise_Server_15_x86_64:SLE-Product-SLES15-Debuginfo-Updates | SLE-Product-SLES15-Debuginfo-Updates    | No | ---- | ----
3 | SUSE_Linux_Enterprise_Server_15_x86_64:SLE-Product-SLES15-Pool              | SLE-Product-SLES15-Pool | Yes | (r ) Yes | No
4 | SUSE_Linux_Enterprise_Server_15_x86_64:SLE-Product-SLES15-Source-Pool       | SLE-Product-SLES15-Source-Pool | No | ---- | ----
5 | SUSE_Linux_Enterprise_Server_15_x86_64:SLE-Product-SLES15-Updates           | SLE-Product-SLES15-Updates | Yes | (r ) Yes | Yes    
6 | openSUSE-Leap-15.0--Debug                                                   | openSUSE-Leap-15.0-Debug | No | ---- | ----
7 | openSUSE-Leap-15.0-Non-Oss                                                  | openSUSE-Leap-15.0-Non-Oss | Yes     | (r ) Yes  | Yes
8 | openSUSE-Leap-15.0-Oss                                                      | openSUSE-Leap-15.0-Oss | Yes     | (r ) Yes  | Yes
9 | openSUSE-Leap-15.0-Source                                                   | openSUSE-Leap-15.0-Source | No | ---- | ----
10 | openSUSE-Leap-15.0-Update                                                   | openSUSE-Leap-15.0-Update | Yes     | (r ) Yes  | Yes
11

週四
2019年03月07日


face
mariadb-client with openSUSE Leap 15 連線 MySQL in Azure 小記

OS: openSUSE Leap 15
MySQL:  5.7 in Azure

首先真的只能說讀書會惠我良多
因為 python 讀書會的關係, 最近要開始練習 python 與 SQL

書上的練習是使用免費的 db4free.net
  • 但是我註冊帳號之後, 都沒有收到認證信, 所以無法使用

接下來就把方向放在自己建立的 SQL 了
為了練習方便, 所以先往雲端上面走, 所以選擇 MySQL in Azure

參考官方文件

建立 MySQL 伺服器

建立資源 -- > 資料庫 -- > 適用於 MySQL 的 Azure 資料庫
建立的時候比較要注意的應該是定價層
因為是練習性質, 所以我選擇 基本 ( 因為建立完成之後就不能改 )
點選 建立


建立完成之後可以觀察 MySQL

  • 建立的時候預設, SSL 強制執行狀態為啟用
  • 有4個資料庫

加入連線 IP 以及 修改 SSL 設定

預設如果要連線到 MySQL 資料庫要手動設定連入 IP
選取資料庫左邊的連線安全性 -- > 點選 加入用戶端IP
  • 也可以手動輸入 IP 範圍
  • 但是點選加入用戶端IP 他會自動判斷你的 PUBLIC IP 然後直接加入, 真的很好用


另外在 SSL 設定的部份, 我也先停用 強制執行 SSL 連線
點選 儲存 完成設定

接下來回到 openSUSE Leap 15 這邊
我們要使用 mysql 指令來進行連線測試
  • 但是 mysql-server 套件目前預設沒有在 openSUSE Leap 內
  • 想法上我們只是要下指令, client side 的感覺

所以就進行 zypper  search mariadb 來觀察

# zypper  search  mariadb

Loading repository data...
Reading installed packages...

S | Name                   | Summary                                         | Type
--+------------------------+-------------------------------------------------------------------+-----------
 | libmariadb-devel       | Development files for the MariaDB Connector C API                 | package
 | libmariadb3            | MariaDB connector in C                                           | package
 | libmariadb3-32bit      | MariaDB connector in C                                           | package
 | libmariadb_plugins     | Plugins for the MariaDB C Connector                               | package
 | libmariadbprivate      | Additional internal libraries for the MariaDB C Connector         | package
 | mariadb                | Server part of MariaDB                                           | package
 | mariadb                | Server part of MariaDB                                           | srcpackage
 | mariadb-bench          | Benchmarks for MariaDB                                           | package
 | mariadb-client         | Client for MariaDB                                                | package
 | mariadb-connector-c    | MariaDB connector in C                                           | srcpackage
 | mariadb-connector-odbc | MariaDB ODBC Connector                                            | package
 | mariadb-errormessages  | The error messages files required by server, client and libmysqld | package   
 | mariadb-galera         | The configuration files and scripts for galera replication        | package
 | mariadb-test           | Testsuite for MariaDB                                           | package
 | mariadb-tools          | MariaDB tools                                           | package

發現 mariadb-client 套件, 接下來進行安裝

# zypper  install  mariadb-client

Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 3 NEW packages are going to be installed:
 libmariadb3 mariadb-client mariadb-errormessages

3 new packages to install.
Overall download size: 1.4 MiB. Already cached: 0 B. After the operation, additional 28.0 MiB will be used.
Continue? [y/n/...? shows all options] (y): y

接下來進行連線測試
連線的資訊可以點選資料庫 概觀
上面會有 伺服器名稱 以及 伺服器系統管理員登入名稱


使用 mysql 指令連線
# mysql  --host  YOURSERVER.mysql.database.azure.com --user  YOURUSER@YOURSERVER  -p
Enter password: 輸入密碼

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 65365
Server version: 5.6.39.0 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

成功就可以進入 MySQL 提示字元

嘗試輸入 status 觀察狀態
MySQL [(none)]> status
--------------
mysql  Ver 15.1 Distrib 10.2.15-MariaDB, for Linux (x86_64) using  EditLine wrapper

Connection id: 65365
Current database:
Current user: YOURUSER@YOUR_CLIENT_IP
SSL: Not in use
Current pager: less
Using outfile: ''
Using delimiter: ;
Server: MySQL
Server version: 5.6.39.0 MySQL Community Server (GPL)
Protocol version: 10
Connection: test20190308.mysql.database.azure.com via TCP/IP
Server characterset: latin1
Db     characterset: latin1
Client characterset: utf8
Conn.  characterset: utf8
TCP port: 3306
Uptime: 29 min 53 sec

Threads: 5  Questions: 478  Slow queries: 0 Opens: 142  Flush tables: 3 Open tables: 15  Queries per second avg: 0.266
--------------

觀察資料庫
MySQL [(none)]> show  databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.37 sec)

離開 mysql 指令

MySQL [(none)]> \q
Bye

又往 python 與 SQL 前進一步

~ enjoy it

Reference:




face
Code-server with openSUSE Leap 15 in Azure

Code-server 套件是 vscode 的線上版

昨天也有參與一些討論, 所以今天官方也有釋放出 docker 的版本

接下來就嘗試三種使用 code-server 的方式

方式 1: 使用 container 的方式

在有 container 環境 ( docker / podman ) 底下

執行 docker run 指令
> docker  run  -p  8443:8443  -v  "${PWD}:/root/project"  codercom/code-server code-server --allow-http --no-auth

執行之後在 Firefox 可以正常連線


在 Google Chrome 則是不行

Notes:
  • 昨天晚上也有嘗試與其他的網友打包 Docker image, 後來大家發現 code-server 對net-tools 有相依性, 所以如果是自己打包請注意要安裝 net-tools


方式 2: 使用實體機器

OS:  openSUSE Leap 15
Code-server: 1.31.0-20

下載套件

我是下載 code-server-1.31.0-20-x86_64-linux.tar.gz


解壓縮檔案
> tar  zxvf  code-server-1.31.0-20-x86_64-linux.tar.gz

進入目錄
> cd   code-server-1.31.0-20-x86_64-linux/

執行 code-server 然後也可以使用 -p 指定 listen port, 這邊以 port 8000 為例

> sudo  ./code-server  -p  8000
[sudo] password for root:
INFO  code-server v1.0.0
INFO  Additional documentation: http://github.com/codercom/code-server
INFO  Initializing {"data-dir":"/root/.code-server","working-dir":"/home/sakana/Downloads/code-server-1.31.0-20-x86_64-linux","log-dir":"/root/.code-server/logs/20190307034954898"}
INFO  Starting webserver... {"host":"0.0.0.0","port":8000}
WARN  No certificate specified. This could be insecure.
WARN  Documentation on securing your setup: https://coder.com/docs
INFO   
INFO  Password: VsEamUzQLfnv
INFO   
INFO  Started (click the link below to open):
INFO  http://localhost:8000/
INFO   
INFO  Starting shared process [1/5]...
INFO  Connected to shared process

開啟瀏覽器 http://localhost:8000

會被要求輸入密碼, 輸入執行過程中帶出的密碼





方式 3:  In Microsoft Azure

OS:  openSUSE Leap 15 in Azure
Code-server: 1.31.0-20

在 Azure 上面建立 linux, 我是用 openSUSE Leap 15
使用 ssh 連入 VM

切換 root
> sudo  su -

在 Azure 上面其實可以使用 container 或是 套件執行的方式
但是為了之後使用方便, 我是使用 container 的方式
Azure 上面的 openSUSE Leap 其實已經安裝了 docker, 只是沒有啟動

檢查相關資訊
# systemctl  status  docker
● docker.service - Docker Application Container Engine
  Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
  Active: inactive (dead)
    Docs: http://docs.docker.com

啟動 docker
# systemctl  start  docker

設定開機啟動 docker
# systemctl  enable  docker

觀察相關資訊
# systemctl  status  docker
● docker.service - Docker Application Container Engine
  Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
  Active: active (running) since Thu 2019-03-07 04:14:26 UTC; 15s ago

執行 docker run 指令 測試
> docker  run  -p  8443:8443  -v  "${PWD}:/root/project"  codercom/code-server code-server --allow-http --no-auth


接下來到 VM 的 網路 -- > 新增輸入連接阜


如果只是要提供一個服務, 就可以考慮開單一 port
這邊我建立一個安全群組開放 port 8443 ~ port 8500
輸入 port 範圍 -- >  新增


開啟瀏覽器 http://SERVER_IP:8443


單一 container 沒問題, 來試試看開多個吧

寫一個簡單的 shell script 來開 15 個 code-server

以下是初步的內容
# cat  create_15_code-server.sh

#!/bin/bash
for (( i=8444 ; i < 8460 ; i=i+1 ))
 do
#    sudo docker  run -p $i:8443  -v "${PWD}:/root/project"  codercom/code-server code-server --allow-http --no-auth
   sudo docker  run -p $i:8443  codercom/code-server code-server --allow-http --no-auth &
 done

  • 我把 ${PWD} 拿掉, 因為不想要讓多個 code-server 的東西放在同一個資料夾, 會混亂
  • 執行的時候使用背景執行, 但是沒有去掉 STDOUT, 便於觀察
  • 需要很多記憶體, 如果一次執行多個, 記憶體不夠會死掉 :)

觀察資訊
# docker  ps
CONTAINER ID        IMAGE   COMMAND  CREATED STATUS              PORTS NAMES
85f909b6192e        codercom/code-server   "code-server --all..."  9 minutes ago Up 9 minutes        0.0.0.0:8449->8443/tcp   jolly_bhaskara
817e39144c05        codercom/code-server   "code-server --all..."  9 minutes ago Up 9 minutes        0.0.0.0:8456->8443/tcp   affectionate_euclid
4996dbd151ff        codercom/code-server   "code-server --all..."  9 minutes ago Up 9 minutes        0.0.0.0:8448->8443/tcp   hopeful_borg
d1fd0cdc3f0f        codercom/code-server   "code-server --all..."  9 minutes ago Up 9 minutes        0.0.0.0:8445->8443/tcp   thirsty_stonebraker
e857dc22c78e        codercom/code-server   "code-server --all..."  9 minutes ago Up 9 minutes        0.0.0.0:8452->8443/tcp   compassionate_euler
1d96d9e094df        codercom/code-server   "code-server --all..."  9 minutes ago Up 9 minutes        0

週五
2019年03月01日


face
Install openSUSE Leap 15 on DigitalOcean

在 Twitter 上面看到文章
想說來實做一下

之前就知道 DigitalOcean 可以使用 Custom image 方式建立
只不過之前看到的方式太複雜, 要處理 cloud-init 就沒有去實做


到官方網站觀察 OpenStack-Cloud 類型的 image



登入 DigitalOcean  

點選 Create Droplet


點選 Custom images
點選 Add image


看到兩個選項, 有 Import via URL 以及 Upload Image
這邊我採取的是 Import via URL


點選 Next


Image Name 以及相關選項我採用預設值
點選 Upload Image

接下來就會看到 Image 狀態


大約等個幾分鐘就會完成
可以在 Images 那邊觀察


因為 Custom Image 不能像一般的 Image 一樣使用 root password 來連線
所以要建立 SSH Key

點選左方的 Security


找到 SSH Keys
點選 Add SSH Key
新增 SSH public Key 到 Digital Ocean
  • 可以找家目錄內的 .ssh 目錄下 ( ~/.ssh ), 檔案為 .pub 檔案

將公鑰貼上
輸入名稱
Add SSH Key


回到 Droplets

點選 Create Droplet


點選 Custom images
這個時候就可以看到剛剛上傳的 Image
點選剛剛上傳的 Image
其他建立的選項也是按照預設值
SSH Key 的部份選取剛剛建立的或是已經建立過的 SSH Key
點選 Create



接下來就可以觀察到 Droplet 已經建立


接下來使用 ssh 指令進行連線

>  ssh  -l  root  SERVER_IP
>  ssh  -l  opensuse  SERVER_IP

因為 IP 的部份是使用 DHCP

連線進去的時候發現一個小問題
  • DNS 解析有問題

暫時的解法就是去 修改 /etc/resolv.conf 加入 nameserver
# vi  /etc/resolv.conf

; Created by cloud-init on instance boot automatically, do not edit.
nameserver 8.8.8.8

終於可以在 Digital Ocean 上面使用 openSUSE 了 :)

~ enjoy it

Reference:


週二
2019年02月19日


face
DB Browser for SQLite (sqlitebrowser) with openSUSE Leap 15

OS: openSUSE Leap 15

因為 python 讀書會的關係 ~ 是的, 讀書會惠我良多
所以要練習 python 與 資料庫相關練習
原本書上介紹的是 Firefox 上面的附加元件 SQLite Manager (https://github.com/lazierthanthou/sqlite-manager ) ,  可以讓我們不會 DB 的狀況下, 使用 GUI 界面, 快快樂樂建立 DB and table.

But ~~ 人生就是有這麼多 But ~
SQLite Manager 在 Browser 擴充元件 下架了

所以只好找相關的替代方案 ( 攤手 )
然後又希望可以跨平台( 其實最好是 Browser add-on )

找到了 DB Browser for SQLite


看了一下這個套件 openSUSE 有內建
使用 zypper 指令搜尋套件
# zypper  search  sqlitebrowser
Loading repository data...
Reading installed packages...

S | Name          | Summary                         | Type
--+---------------+------------------------------------------+--------
 | sqlitebrowser | Create, design and edit SQLite Databases | package

安裝 sqlitebrowser

# zypper  install  sqlitebrowser
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 3 NEW packages are going to be installed:
 libQt5PrintSupport5 libqscintilla2_qt5-13 sqlitebrowser

3 new packages to install.
Overall download size: 2.7 MiB. Already cached: 0 B. After the operation, additional 10.5 MiB will be used.
Continue? [y/n/...? shows all options] (y): Y

可以使用 sqlitebrowser 指令
或是
在應用程式內選取 sqlitebrowser


軟體畫面如下



不得不說,  真的是一個方便的工具
可以使用 GUI 輕鬆的建立 table 還有欄位
下面還有參考的指令


Note:

又往 python 前進一小步

~ enjoy it



週三
2019年02月13日


face
openSUSE Tumbleweed Kubic 快速架設 Kubernetes Cluster 小記

OS: openSUSE Tumbleweed Kubic

使用 ISO:  
  • openSUSE-Tumbleweed-Kubic-DVD-x86_64-Snapshot20190115-Media.iso
  • openSUSE-Tumbleweed-Kubic-DVD-x86_64-Snapshot20190125-Media.iso

參考官方文件


授權合約:  點選 下一步


進行網路設定


選取要執行的角色, 因為今天是要架設 kubernetes
選取 kubeadm 節點 -- > 下一步

NTP Server 設定, 按照預設值
選取 下一步



設定 root 密碼
點選 下一步

檢視安裝設定
點選 安裝


點選 安裝

安裝之後在本機以 root 登入系統

新增使用者 sakana

#useradd  -m  sakana

設定使用者 sakana 密碼
#passwd  sakana

這邊解釋一下為何要新增一般使用者
  • 原廠的文件建議你遠端連線過去操作,  好複製 kubeadm join 指令帶出來的 token,  可是預設 kubic 的 ssh 連線是不能 root 登入

在自己的機器使用 ssh 遠端連線剛剛架設的 kubic

> ssh  -l  sakana  YOUR_SERVER_IP

在 Kubic Master 上面:
切換為 root
>su  -

進行  kubeadm  init
# kubeadm init --cri-socket=/var/run/crio/crio.sock --pod-network-cidr=10.244.0.0/16
Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
 https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

 kubeadm join  xxx.yyy.zz.aa:6443 --token rx4vgw.7eps0trobpfxfwym --discovery-token-ca-cert-hash sha256:55a330afd557c210f8f2482c76c0e05a068c2d8a1c5a794458301f811a485796

退回一般使用者
#exit


> mkdir -p $HOME/.kube

> sudo  cp -i /etc/kubernetes/admin.conf  $HOME/.kube/config

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

   #1) Respect the privacy of others.
   #2) Think before you type.
   #3) With great power comes great responsibility.

[sudo] password for root:


> sudo chown $(id -u):$(id -g) $HOME/.kube/config

觀察相關資訊
> cat  ~/.kube/config

> kubectl  get nodes
NAME           STATUS ROLES    AGE VERSION
kubic-master   NotReady master   9m32s v1.13.2


> kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.extensions/kube-flannel-ds-amd64 created
daemonset.extensions/kube-flannel-ds-arm64 created
daemonset.extensions/kube-flannel-ds-arm created
daemonset.extensions/kube-flannel-ds-ppc64le created
daemonset.extensions/kube-flannel-ds-s390x created


> kubectl  get nodes
NAME           STATUS ROLES   AGE VERSION
kubic-master   Ready master   12m v1.13.2


在 Kubic Slave 上面:

安裝之後在本機以 root 登入系統

新增使用者 sakana

#useradd  -m  sakana

設定使用者 sakana 密碼
#passwd  sakana

在自己的機器使用 ssh 遠端連線剛剛架設的 kubic

> ssh  -l  sakana  YOUR_SERVER_IP

在 Kubic Slave 上面:

切換成管理者 root
> su  -

使用剛剛的資訊加入 kubic master
# kubeadm join  xxx.yyy.zz.aa:6443 --token rx4vgw.7eps0trobpfxfwym --discovery-token-ca-cert-hash sha256:55a330afd557c210f8f2482c76c0e05a068c2d8a1c5a794458301f811a485796



在 Kubic Master 上面:

> kubectl  get nodes
NAME           STATUS ROLES   AGE VERSION
kubic-2        Ready <none>   2m50s v1.13.2
kubic-master   Ready master   124m v1.13.2


在本機上面:

將遠端的 ~/.kube/config 複製過來

建立本機上面的 .kube 目錄
> mkdir -p $HOME/.kube

> scp   sakana@YOUR_SERVER_IP:/home/sakana/.kube/config   ~/.kube/config.vm

Password:  請輸入密碼
config                                                           100% 5454 860.2KB/s 00:00

觀察資訊

> ls  ~/.kube/
cache  config.azure  config.bak config.vm  http-cache

接下來準備設定 ~/.kube/config

狀況 1:
如果本來沒有 ~/.kube/config 直接更名為 config 就可以
>  mv  ~/.kube/config.vm    ~/.kube/config


狀況 2:
如果本來有管理其他的 kubernetes cluster

將所有 config  透過 export 定義 KUBECONFIG ( 請將路徑換成自己 cluster 檔案 )
> export  KUBECONFIG=~/.kube/config.vm:~/.kube/config.azure

確認相關資訊
>echo  $KUBECONFIG
/home/sakana/.kube/config.vm:/home/sakana/.kube/config.azure


使用 kubectl config 指令合併兩個檔案
> kubectl config view --flatten  > ~/.kube/mergedkub

將 mergedkub  檔案更名並複製到 ~/.kube/config
> mv  ~/.kube/mergedkub   ~/.kube/config


接下來進行測試

> kubectl  get nodes

NAME         STATUS ROLES    AGE VERSION
linux-gotz   Ready <none>   154m v1.13.2
linux-nuvj   Ready master   174m v1.13.2

週三
2019年01月30日


face
SLES 12 for SAP 上課小記

Day 1:

下載上課檔案

安裝 7-zip
# zypper  install  p7zip

解壓縮檔案
# 7z  x  SLE321.7z.001

進入相關目錄
# cd  SLE321/

調整 install script 的權限
# chmod  a+x  install_lab_env.sh

執行環境檢查
# ./ install_lab_env.sh

如果不符合環境的要求, 會出現相關修改建議
例如我這邊就是要修改 /etc/libvirt/libvirtd.conf 相關設定

# vi   /etc/libvirt/libvirtd.conf
 Locate and uncomment/edit the following line to match:
unix_sock_group = libvirt
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"
auth_unix_ro = "none"
auth_unix_rw = "none"
listen_tcp = 1
 Locate and uncomment/edit the following line to match:
auth_tcp = "none"


重新開機
# reboot

進入相關目錄
# cd  SLE321/

執行環境檢查
# ./ install_lab_env.sh

新增檔案並加入下列設定
# vi  /etc/profile.d/libvirt.sh
 Add the following line to the end of the file:
export LIBVIRT_DEFAULT_URI="qemu:///system"

登出環境

# cd  SLE321/

執行環境檢查
# ./ install_lab_env.sh

將 root 加入 libvirt 群組
# usermod  -aG  libvirt  root

登出環境

# cd  SLE321/

執行環境檢查
# ./ install_lab_env.sh

完成環境安裝


Cluster Terminology
  • Epoch - The version number of the cluster configuration / status
  • Split Brain
    • A state where the nodes in a cluster disagree about the current state of the cluster.  Must be resolved before the cluster can continue to operate
  • Fencing
    • Method to protect the cluster by denying access to resources or rebooting a node
    • 隔離, 用來防止 Split Brain
  • Active / Passive
  • Active / Active

The SLE High Availability Extension
  • Beginning with SLES 11, the cluster packages are no longer included in the base product
  • Instead, the cluster stack is available as an add-on product, or extension
    • SLES 12 integrates the delivery of the HA Extension into the software manager
  • A separate subscription is required for each node that will run the HA Extension
  • Up to 32 nodes
  • Geo Cluster Extension to add multisite support

列出 pattern
# zypper  pt


Deployment Options
  • Cluster Types
    • Local Cluster
    • Metro Cluster
    • Geo Cluster

Main components of HAE
  • High availability base components
    • Corosync - 心跳, 透過 totem 實現同步
    • Pacemaker - Cluster 的大腦
    • Management tool
      • crm shell ( CRM - Cluster Resource Manager )
      • HAWK / HAWK2
    • Stonith  
      • 用來進行隔離(Fencing)
      • Shoot The Other Node In the Head
    • CIB
      • Cluster Information Base
      • 用來存放目前 Cluster 目前運作的狀態
      • 只有主節點會更新.
    • PE
      • Policy Engine, 用來計算事件如何應對
      • 運作在 DC 節點
    • LRM
      • Local Resource Manager
      • 執行 CRM 發出的指令
    • RA
      • Resource Agent
    • DLM
      • Distributed Lock Manager
      • Provide generic cluster wide locking facilities


  • Storage components
    • cLVMd
      • 在 cluster 用 LVM
    • DRBD
      • (Distributed Replicated Block Device) 是 Linux 平台上的分散式儲存系統
      • 不提供同時讀寫
    • OCFS2 filesystem
    • GFS filesystem
  • Load balancing
    • Linux IP Virtual Server ( IPVS )
    • HAProxy
    • Conntrackd

如何判斷主節點?
  • Cluster 內其實沒有主節點或是副節點,
  • 有DC 節點也許可以視為主節點, 上面的 PE


==== Break ====

Cluster Resource Manager ( CRM )

讓大家完成環境建置

==== Lunch Break ====

Lab1: Power On and Verify the Storage Server
Lab2: Install and Configure a Cluster

Section 3: Cluster Administration Tools

HAWK

Lab 3: Cluster Administrator Tools

透過 HAWK2 以 web去觀察 cluster
透過 crm 指令去觀察與控制 cluster
透過 pssh 指令去平行處理 ssh 指令

透過 csync2 指令去同步各個 node 的檔案


週三
2019年01月23日


face
Cron job in container 小記

OS: openSUSE Leap 15
Container image:  opensuse/leap:15

昨天在 Cloud Native meet up 遇到 Haway, 被問一個問題, 如何在 container 內執行 cron task

之前沒有這樣嘗試過, 今天就來嘗試一下

想法:
  • 測試使用 cron job 每分鐘寫入訊息到檔案

下載 openSUSE Leap 15 container image

# docker  pull  opensuse/leap:15

執行 container
# docker  run  --rm  -it  opensuse/leap:15  /bin/bash

以下在 container 內操作

安裝 vim 與  cron
15a63ae236e1:/ # zypper  -n  install  vim  cron

撰寫 crontab 檔案

15a63ae236e1:/ #  vi  crontab
內容如下
* * * * * /testcron.sh

作法上就是每分鐘去執行 /testcron.sh
  • 如果是 Dockfile 內的寫法, 覺得可以用 ADD 從本機加進去已經寫好的檔案, 或是使用 RUN 搭配 wget 從網路上抓下來, 這樣不用互動來建立檔案.
  • 預設進入點會在 / 目錄下, 所以檔案的完整路徑就會是  /crontab

給予適當權限
15a63ae236e1:/ #  chmod 644 crontab

接下來編輯要去定時執行的程式
15a63ae236e1:/ #  vi   /testcron.sh
內容如下
echo “Hello, Cron”  >> /tmp/testcron.txt
Date                        >> /tmp/testcron.txt

  • 如果是 Dockfile 內的寫法, 覺得可以用 ADD 從本機加進去已經寫好的檔案, 或是使用 RUN 搭配 wget 從網路上抓下來, 這樣不用互動來建立檔案.

給予適當權限
15a63ae236e1:/ #  chmod a+x  /testcron.sh

觀察相關資訊
15a63ae236e1:/ #  ls  /var/spool/cron/tabs/

使用 crontab 指令匯入剛剛的工作
15a63ae236e1:/ #  crontab  /crontable

觀察相關資訊
15a63ae236e1:/ #  ls  /var/spool/cron/tabs/
root

觀察相關資訊
15a63ae236e1:/ #  ps aux | grep cron

執行 cron 指令
15a63ae236e1:/ #  cron

  • 在 Dockfile 寫法上,  想法上就是放在 CMD 或是 ENTRYPOINT 執行, 啟動 container  就執行

觀察相關資訊
15a63ae236e1:/ #  ps aux | grep cron

等待幾分鐘

觀察相關資訊
15a63ae236e1:/ #  cat   /tmp/testcron.txt
Hello, Cron
Wed Jan 23 08:14:01 UTC 2019
Hello, Cron
Wed Jan 23 08:15:02 UTC 2019
Hello, Cron
Wed Jan 23 08:16:01 UTC 2019


也算是多實驗一個方式
~ enjoy it

Reference:


週二
2019年01月22日


face
Nextcloud with openSUSE Leap 15 同步設置小記


OS: openSUSE Leap 15


這篇是回憶文, 因為相關機制已經運作一段時間, 目前也日趨穩定
所以就寫這篇來紀錄一下


左邊是我的 Desktop, 中間是 Raspberry Pi 3 + HD




Raspberry Pi 端:


目前使用 Raspberry Pi 3 加上 container 來運作 nextcloud 日後取代 Dropbox


使用 Docker 運作 nextcloud / owncloud


使用雙層硬碟座來連接硬碟
  • 使用 2 顆 2TB 硬碟來存放資料
    • /mnt/usb
      • 主要存放資料的地方
        • nextcloud 如上述放在指定的目錄然後讓 docker run -v 掛載目錄
        • 其他的資料透過 ssh, 讓 Client 使用 filezilla 來存取
    • /mnt/backup
      • 備份資料使用, 使用 crontab 來處理, 如果主要硬碟死掉, 還有一份
        • # crontab -l
        • 0 4 * * * rsync -a --delete /mnt/usb/* /mnt/backup/

PC 端:


安裝 nextcloud client 程式來進行同步 PC端到 Raspberry Pi 上的資料夾
  • 有建立一個 Dropbox 目錄在 Nextcloud 目錄內
  • 透過 rsync 將 Dropbox 目錄同步到 nextcloud 上面的 Dropbox 資料夾
    • > crontab -l
    • 0 22 * * * rsync -a --delete /Dropbox/sakana/Dropbox/*  /home/sakana/Nextcloud/Dropbox/


其他資料透過 filezilla 來存取


簡單來說就是
  • Dropbox 資料夾有異動, 每天晚上10點會同步到 Nextcloud 目錄下的 Dropbox 資料夾
  • PC 端的 NextCloud 下的資料夾有異動就會同步到 Raspberry Pi 上面的目錄, 然後 Raspberry Pi 上面每天早上 4點會抄寫到另外一顆硬碟


找個時間來想想 Google Drive 的同步吧


~ enjoy it


Reference:


週三
2019年01月09日


face
openSUSE Leap 15 正式版 安裝小記2

這次也是使用 USB 來進行安裝,  家中的 Leap 15 已經安裝半年
所以今天來裝公司的  Desktop


== 安裝過程小記==

這次建立的時候我還是選擇 GNOME 桌面
磁碟區分割的部分, 預設的引導行為
  • 會建立一個 /boo/efi ( vfat )
  • / 一樣使用 btrfs
  • /home 使用 xfs ( 如果有勾選 )
  • 這次感受上是把 swap 的部分擴增( 視 RAM 的大小, 讓系統可以暫停 )

安裝的內容, 我這次是全新安裝, 所以沒有匯入 SSH主機金鑰和組態


===============

Notes
  • Ifconfig 預設沒有安裝, 要使用 ip  address show

關閉GNOME裡面的搜尋功能(點選右上角的設定按鈕), 因為我覺得用不到


中文輸入法問題:

因為就算以安裝 中文輸入法也沒有出現
  • 這次在系統內選擇中文輸入法有出現, 就先觀察 ibus 1.8
  • 要習慣的應該是以 system_key( windows ) + 空白鍵 切換輸入法
  • gcin 我一直都搞不定只好先用 ibus


取消 USB 為安裝來源
# yast2  repositories


Google Chrome:

還是會有驗證性問題, 但是功能沒有差異
為了進行google 登入,先使用 Google 驗證App,  後面來處理yubikey

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

安裝的頁面變得很漂亮

.mm 的檔案指定用 freemind  開啟


新增 Packman 套件庫:

使用 #yast2  repositories 加入社群版本的Packman

#yast2  repositories

NCHC Packman 套件庫目前還沒有進行同步 Leap 15, 所以先觀察


Firefox Sync:
登入 Firefox Sync, 會處理之前有下載的 Plugin

flash-player:
# zypper   install flash-player


播放器:

# zypper  install   vlc vlc-codecs
因為 mplayber 與 smplayer 不知道為何播放 .mp4 有點問題, 但是使用 VLC 就沒有問題
所以我就安裝 VLC Media player
  • Mp4 codec 應該是要安裝 vlc-codecs,  需要 Packman 套件庫

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

安裝  ffmpeg ( 會把提供者從 openSUSE 換成 Packman )
# zypper  install ffmpeg

這樣的好處是使用 youtube-dl  可以轉換 mp3 格式


透過 youtube-dl  -F 來觀察可以下載的格式

> youtube-dl  -F  http://www.youtube.com/watch?v=13eLHrDcb1k
[youtube] Setting language
[youtube] 13eLHrDcb1k: Downloading video webpage
[youtube] 13eLHrDcb1k: Downloading video info webpage
[youtube] 13eLHrDcb1k: Extracting video information
Available formats:
22 : mp4 [720x1280]
18 : mp4 [360x640]
43 : webm [360x640]
5 : flv [240x400]
17 : mp4 [144x176]

指定要下載的格式進行下載 (請注意 -f 是小寫)

> youtube-dl  -f  22  http://www.youtube.com/watch?v=13eLHrDcb1k

下載為 mp3
首先要安裝 ffmpeg 套件

>youtube-dl    http://www.youtube.com/watch?v=13eLHrDcb1k --extract-audio --audio-format mp3

PDF Viewer 安裝:
Foxit
之前42.3 的 PDF Viewer 中文顯示有問題所以使用 Foxit, Leap 15 中文預設沒問題, 但是也是順手裝起來
  • 下載軟體的 .tar.gz 然後以  root 安裝

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


下載 RPM 版本用軟體安裝就裝好了 :)

使用 #yast2 sound 調整音效


Dropbox:

目前版本 2.10.0
使用 # zypper install dropbox 來安裝

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


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

.7z 支援:
# zypper  install p7zip

imagewriter:
# zypper  install imagewriter
用來製作開機 USB

hexchat:
# zypper  install hexchat



以下為個人記事


rdesktop 安裝與測試:
#zypper  install freerdp

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


VMware workstation Pro 15:

安裝 kernel-default-devel  
# zypper   install   kernel-default-devel kernel-source
# ./VMware-Workstation-Full-15.0.2-10952284.x86_64.bundle

如果啟動的時候出現找不到 Kernel Header
# yast2  sw_single
點選 kernel-default-devel 套件, 點選 Versions 分頁, 勾選適當的 kernel 版本


取消 “Enable virtual machine sharing and remote access

2017-11-13 20-45-20 的螢幕擷圖.png


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 安裝:

下載 smartgit-linux-18_2_3.tar.gz

解壓縮到 /opt
# tar  zxvf   smartgit-linux-18_*.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

這次沒有發生 一般使用者發生找不到 jre 路徑

解法, 目前是在 ~/.smartgit/smartgit.vmoptions 檔案內
將 jre 指向 /opt/smartgit/jre

> cat   ~/.smartgit/smartgit.vmoptions
jre=/opt/smartgit/jre



按照上面的參考設定

# zypper  install alacarte
設定 smart git icon 使用 alacarte

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


ansible 安裝:

目前版本 2.5.1
#zypper  install ansible

安裝 pysphere:

為了 ansible and VMware Module

使用 one-click 安裝

使用 server:monitoring 套件那個安裝

Docker 安裝:

目前版本 18.06.1-ce
#zypper  install docker

將使用者 sakana  加入 docker 群組

#systemctl  start docker
#systemctl  enable docker


GNOME Extension:

參考調校小記

> gnome-tweak-tool
裝了
  • TopIcons
  • NetSpeed


Forticlient SSL VPN 安裝:
Dropbox 內2017/packages 的 source code

使用 forticlientsslvpn_linux_4

週五
2019年01月04日


face
Visual Studio Code with openSUSE Leap 15 小記

OS: openSUSE Leap 15.0
Visual Studio Code:  1.30.1

2019 年計畫的一部分就是要增強自己程式能力的部份, 農曆年後應該會再多一個 python 的讀書會
所以為了這個目的, 開始進行環境的準備.

開發環境的部份選擇 Visual Studio Code

參考 openSUSE wiki 上面的作法

新增 Microsoft 的 Key
# rpm  --import   https://packages.microsoft.com/keys/microsoft.asc

將 vscode repo 資訊加入到 /etc/zypp/repos.d 目錄
# sh  -c  ' echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc"  > /etc/zypp/repos.d/vscode.repo '

觀察檔案資訊

# cat   /etc/zypp/repos.d/vscode.repo
[code]
name=Visual Studio Code
baseurl=https://packages.microsoft.com/yumrepos/vscode
enabled=1
type=rpm-md
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc

執行 zypper  refresh
# zypper  refresh

安裝 vscode
# zypper  install  code

Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
 code

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

安裝好之後就會在應用程式內看到


啟動程式後的界面



然後會自動帶起 vscode 介紹網頁

首先第一件事就是安裝 python 的 Extension
點選歡迎畫面的 Tools and languages
左邊會看到比較受歡迎的 Extension, 最上面就有 Python, 點選 Install 的按鈕

然後我也順便安裝了 Docker Extension

可以點選 左方的 Extension 按鈕進行確認


顏色的部份我是選擇 light theme 感覺比較清爽



接下來就準備多練習程式了 :)

~ enjoy it

Reference:



週六
2018年12月22日


face
方便的 my.vmware.com 下載工具 - vmw-cli 測試小記

OS: openSUSE Leap 15 in Azure

之前看到一個工具 vmw-cli 可以用 command line 方式下載 VMware 產品 ISO
  • vmw-cli is a CLI client used to login and interact with my.vmware.com. It provides an interface for programmatic query and download of VMware product binaries.

今天有點時間, 來嘗試一下

# zypper  install  npm8
Building repository 'openSUSE-Leap-15.0-Non-Oss' cache ...................[done]
Building repository 'openSUSE-Leap-15.0-Oss' cache .......................[done]
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 4 NEW packages are going to be installed:
 nodejs-common nodejs8 nodejs8-devel npm8

The following recommended package was automatically selected:
 npm8

4 new packages to install.
Overall download size: 8.7 MiB. Already cached: 0 B. After the operation,
additional 34.7 MiB will be used.
Continue? [y/n/...? shows all options] (y): Y


使用 npm 安裝 vmw-cli

# npm  install  vmw-cli  --global

/usr/local/bin/vmw-cli -> /usr/local/lib/node_modules/vmw-cli/lib/vmw-cli.js
+ vmw-cli@1.1.13
added 82 packages in 8.946s

還沒有定義帳號密碼前先觀察資訊, 使用 vmw-cli  list 可以列出產品

# vmw-cli  list
vmware-workstation-pro
vmware-workstation-player
vmware-workspace
vmware-workspace-one
vmware-vsphere
vmware-vsphere-with-operations-management
vmware-vsphere-storage-appliance
vmware-vsphere-integrated-containers
vmware-vsphere-hypervisor-esxi
vmware-vsphere-data-protection-advanced
vmware-vsan
...


但是要進行其他相關指令會被提示要有帳號以及密碼

# vmw-cli   index vmware-vsphere

Updating [fileIndex.json] for all permitted downloads in [vmware-vsphere] ...
[ERROR]: environment variables $VMWUSER and $VMWPASS not set! Please configure

接下來嘗試 export 帳密
#export  VMWUSER='<userid>'
#export  VMWPASS='<password>'

嘗試 inex 但是這個過程會很久, 然後會產生 fileIndex.json
# vmw-cli  index vmware-vsphere

觀察相關資訊

# ls  /usr/local/lib/node_modules/vmw-cli/lib
cookies.json  extract-files.js  get-file.js get-product.js   group.vmware-vsphere.json index.json.session  utils.js vmw-cli.js xtable.js
examples      fileIndex.json    get-index.js  get-solution.js  index.json          mainIndex.json vmw-api.js  xcell.js

接下來嘗試 vmw-cli  find 指令
這邊是找出檔案名稱內有 vcsa 字元的

# vmw-cli   find  fileName:vcsa

Loading available solutions in [fileIndex.json] ...

solution                                   productGroup productType version fileName                                                      fileDate fileSize fileType download  
-----------------------------------------  ------------ ---------------- --------- ------------------------------------------------------------  ---------- -------- -------- --------
vmware-workspace-one                       VC67U1 Product Binaries  6.7.0U1 VMware-VCSA-all-6.7.0-10244745.iso                            2018-10-16 3.95 GB iso yes
vmware-workspace-one                       VC60U2M Product Binaries  6.0U2M VMware-VCSA-all-6.0.0-4191361.iso                             2016-09-15 2.605 GB iso yes
vmware-vsphere                             VC67U1 Product Binaries 6.7.0U1 VMware-VCSA-all-6.7.0-10244745.iso                            2018-10-16 3.95 GB iso yes
vmware-vsphere                             VC65U2C Product Binaries 6.5.0 U2c VMware-VCSA-all-6.5.0-9451637.iso                             2018-08-14 3.27 GB iso yes
vmware-vsphere                             VC65U1G_OSS Open Source 6.5.0U1g open-source-license-VMware-vCenter-Server-VCSA-65U1-g-GA.txt  2018-03-20 4.59 MB txt yes
vmware-vsphere                             VC60U3H Product Binaries 6.0 U3h VMware-VCSA-all-6.0.0-9451619.iso                             2018-08-14 3.09 GB iso yes
vmware-vsphere                             VC60U2M Product Binaries 6.0U2M VMware-VCSA-all-6.0.0-4191361.iso                             2016-09-15 2.605 GB iso yes
vmware-vsphere-with-operations-management  VC67U1        Product Binaries  6.7.0U1 VMware-VCSA-all-6.7.0-10244745.iso                            2018-10-16 3.95 GB iso yes
vmware-vsphere-with-operations-management  VC60U3H       Product Binaries  6.0 U3h VMware-VCSA-all-6.0.0-9451619.iso                             2018-08-14 3.09 GB iso yes
vmware-vsphere-with-operations-management  VC60U2M       Product Binaries  6.0U2M VMware-VCSA-all-6.0.0-4191361.iso                             2016-09-15 2.605 GB iso yes
vmware-vsphere-with-operations-management  VC65U2C       Product Binaries  6.5.0 U2c VMware-VCSA-all-6.5.0-9451637.iso                             2018-08-14 3.27 GB iso yes
vmware-vsphere-with-operations-management  VC65U1G_OSS   Open Source    6.5.0U1g open-source-license-VMware-vCenter-Server-VCSA-65U1-g-GA.txt  2018-03-20 4.59 MB txt yes
vmware-vsan                                VC67U1 Product Binaries 6.7.0U1 VMware-VCSA-all-6.7.0-10244745.iso                            2018-10-16 3.95 GB iso yes
vmware-vsan                                VC65U2C Product Binaries 6.5.0 U2c VMware-VCSA-all-6.5.0-9451637.iso                             2018-08-14 3.27

face
CrazyDiskInfo with openSUSE Leap 15


OS: openSUSE Leap 15 in Azure


昨天在橋本修太的 Twitter 看到 Haruka 一篇文章 【小ネタ】openSUSEで CrazyDiskInfo をインストールしてディスクの健康状態を監視  , 所以就順手做了起來

套件名稱 CrazyDiskInfo


查了 software.opensuse.org/search


我使用的方式是 One click install 方式來安裝


安裝 OneClickInstallCLI 套件 yast2-metapackage-handler


# zypper  install   yast2-metapackage-handler


Loading repository data...
Reading installed packages...
Resolving package dependencies...


The following 12 NEW packages are going to be installed:
 expat perl-CPAN-Changes perl-Devel-Symdump perl-Net-DBus perl-Pod-Coverage perl-Test-Pod perl-Test-Pod-Coverage
 perl-X11-Protocol perl-XML-Twig perl-XML-XPath xdg-utils yast2-metapackage-handler


12 new packages to install.
Overall download size: 933.4 KiB. Already cached: 0 B. After the operation, additional 2.9 MiB will be used.
Continue? [y/n/...? shows all options] (y):


使用 OneClickInstallCLI 指令來安裝




If you continue, the following repositories will be subscribed:
* http://download.opensuse.org/repositories/home:/tsuroot/openSUSE_Leap_15.0/
If you continue, the following software packages will be installed:
* crazydiskinfo
Continue? y/N
Y (這邊輸入Y 繼續)
Adding Repositories...


這樣就完成安裝了


# crazy
No S.M.A.R.T readable devices.
If you are non-root user, please use sudo or become root.


傻眼..... Azure 上面的磁碟沒有 SMART readable device Orz….
真是 make me crazy XD


好吧, 只有拿自己的桌機繼續實驗了


OS:  openSUSE Leap 15


安裝相關套件


If you continue, the following repositories will be subscribed:
* http://download.opensuse.org/repositories/home:/tsuroot/openSUSE_Leap_15.0/
If you continue, the following software packages will be installed:
* crazydiskinfo
Continue? y/N
Y (這邊輸入Y 繼續)
Adding Repositories...


執行 crazy 指令, 輸出結果如下圖


# crazy




Reference:

~ enjoy it

週四
2018年11月29日


Ray Chen: elementary os 5.0 Juno

01:28 UTCmember

face


1. ASUS X553M:

https://wiki.archlinux.org/index.php/ASUS_X553MA

By adding the kernel parameter modprobe.blacklist=dw_dmac,dw_dmac_core

2. 基本安裝:

https://ithelp.ithome.com.tw/users/20107229/ironman/1409 

3. 基本安裝2:

https://www.ubuntupit.com/best-things-to-do-after-installing-elementary-os/

4. 應用程式圖示無法正確顯示:

修改 /usr/share/applications/ 下的 *.desktop 刪除 Icon[zh_TW]=...

5. 安裝 wingpanel-indicator-ayatana

https://elementaryos.stackexchange.com/questions/16502/missing-icons-in-the-wingpanel

6. 修改 fcitx 系統匣圖示:







/usr/share/icons/HighContrast/scalable/devices/input-keyboard.svg

7. 安裝 desktop folder:

https://www.omgubuntu.co.uk/2018/01/elementary-desktop-icons-files-app

8. 設定 plank 或安裝 ubuntu 版本(支援 zoom 功能):

https://elementaryos.stackexchange.com/questions/2680/how-can-i-customise-plank

https://elementaryos.stackexchange.com/questions/1933/plank-magnifying-effect

9. X553M ramdom freeze:

http://forums.debian.net/viewtopic.php?f=10&t=130571

You might try adding intel_idle.max_cstate=1 to the GRUB line that boots your system



週六
2018年10月20日


face
SCSI scan tool in VMware 小記

OS: openSUSE Leap 42.3 in VMware
VMware: vSphere ESXi 6.5

這兩天因為一個專案要調整 VM 磁碟空間, 所以有注意到 在 VMware 內新增磁碟會遇到的狀況, 寫這篇小記紀錄一下

首先描述一下情境
當我們在 VMware 的 VM 裡面新增硬碟的時候, 如果用主觀意識來想, 會覺得應該 OS 會馬上抓到硬碟.

所以想法上 當使用 fdisk -l 的時候應該要看得到新的硬碟

但是如果在 VMware 內( 也許實體也是 ), 事實上不是這樣的, 還要經過 rescan SCSI 裝置, 才能讓 VM 知道他有新的裝置可以使用.

在 openSUSE Leap 的環境內, 已經有內建的指令可以作這件事.
使用 rescan-scsi-bus.sh

檔案位置在 /usr/bin 下
# which  rescan-scsi-bus.sh
/usr/bin/rescan-scsi-bus.sh

提供的套件為 sg3_utils
# rpm  -qf  /usr/bin/rescan-scsi-bus.sh
sg3_utils-1.43-12.1.x86_64


當在 VMware 內新增硬碟的時候 rescan-scsi-bus.sh 是必須加上 -a 參數才有效的( 實際測試也是這樣 )

所以作法就是
#rescan-scsi-bus.sh  -a

接下來使用  fdisk -l 就可以看的到了
:)

==== 同場加映 gparted ====

在 openSUSE and SUSE 的環境, 磁碟的編輯都是透過 yast2  disk 來進行, 但是如果在 ubuntu 或是其他的系統, 要建立分割區的話, 另外一種簡單的方式就是使用 gparted

openSUSE 這邊只要使用
# zypper  install gparted
就可以進行安裝
在圖形界面下就可以看到 GParted 程式



==== 同場加映 scsi rescan in Ubuntu 16.04 ====

那上述的情況如果在 Ubuntu 16.04 又該如何呢?

OS: Ubuntu 16.04 in VMware

作法就是安裝 scsitools 套件

#sudo  apt-get  install  scsitools

接下來就可以使用  rescan-scsi-bus 指令啦
#sudo  rescan-scsi-bus

這邊也感謝  Daniel Lin 提供給我資訊還有方向 :)

~ enjoy it

Reference:






週二
2018年08月28日


face
Raspberry Pi 3 with openSUSE Leap 15 小記

Hardware: Raspberry Pi 3
OS: openSUSE Leap 15


距離上次安裝 Raspberry Pi 已經 8 個月了 :)
參考:

我還是使用 X11 的桌面環境


將 SD Card 插入 linux 內, 這邊以  /dev/sdf 為例

使用下列指令建立 openSUSE Leap 15 with RaspberryPi
  • 下面的 /dev/sdf 是你的 SD Card 千萬不要殺錯人


# xzcat  openSUSE-Leap15.0-ARM-X11-raspberrypi3.aarch64-2018.07.02-Buildlp150.1.1.raw.xz |  dd  bs=4M of=/dev/sdf   iflag=fullblock  oflag=direct ; sync

好了之後將 SD Card 放入 Raspberry Pi 開機就可以
  • 第一次因為要安裝, 所以會比較久, 去喝個咖啡動一動吧
  • 預設帳號是 root  密碼是 linux


這個版本就沒有無線網路的 bug, 所以使用 #yast2  lan 設定好無線之後就直接使用


~ enjoy it

Reference:


週六
2018年08月25日


face
netbox with docker in azure

看到 digital ocean 出了一個專案 netbox 就想說來試試看

上面看到有人有做 docker 的版本

OS:  openSUSE Leap 42.3  in Azure

首先登入 Azure 的 openSUSE Leap 42.3

切換成 root
> sudo   su -

啟動 docker 服務
# systemctl  start  docker

安裝 docker-compose 指令
# zypper  install  docker-compose

Clone 專案
# git  clone  -b   master  https://github.com/ninech/netbox-docker.git

Cloning into 'netbox-docker'...
remote: Counting objects: 652, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 652 (delta 44), reused 72 (delta 38), pack-reused 563
Receiving objects: 100% (652/652), 214.17 KiB | 5.22 MiB/s, done.
Resolving deltas: 100% (355/355), done.

觀察資訊
# ls
.bash_history  .gnupg bin netbox-docker

進到專案目錄
# cd   netbox-docker/

openSUSE Leap 42.3 預設用的 docker-compose 版本比較舊 ( 1.8.1 )
  • openSUSE Leap 15 版本就夠新了1.17

參考官方網站安裝方式 https://docs.docker.c