2020年9月16日 星期三

[AWS] AWS CI/CD 動手做 - Travis CI - 2

 接續上一篇AWS CI/CD 動手做 - Travis CI - 1 的內容

我們繼續做後面的步驟

7. 新增 .travis.yaml 到 GitHub Project 上面

(上一篇有給yaml的範例,可直接copy來用)

8. 新增 .travis.yaml to github repo

  • 更改 .travis.yaml 內的 bucket name
  • 更改 .travis.yaml 內的 access key
  • 更改 .travis.yaml 內的 secret access key
  • 加密 travis encrypt aws secret access key
  • 加密 travis encrypt SOMEVAR="secretvalue" --add               

(加密此travis.yaml用的,後面是密碼,前面是項次,因為裡面有aws 的key,如果不加密很快就會被其他人拿來利用)

9. 在Repo根目錄建立appspec.yml

(編輯yml檔,格式務必正確,盡量不要使用tab)

version: 0.0

os: linux

files:

    - source: /                           #置於Repo的根目錄下,要進行CI/CD的來源目錄

    destination: /cd_squid           #置於On-Premise下,被進行CI/CD的目的來源

    hooks:       #下方設定為CI/CD期間所要進行之動作

    AfterInstall:

    - location: scripts/after_install.sh

    timeout: 60

    runas: root

    ApplicationStart:

     - location: scripts/application_start.sh

     timeout: 60

      runas: root

     ValidateService:

     - location: scripts/validate_service.sh

     timeout: 60

runas: root

***************************************************************************

下一個篇就會開始講CD的了,前面就是所有CI的流程建置

統整一下:透過Github 把Code 放在上面,透過Travis CI 去推Code

然後CI過的話就會把Code先存一份在Aws S3 bucket上面備份

在進行CD的後續流程

2020年7月7日 星期二

[AWS] AWS CI/CD 動手做 - Travis CI - 1

最近在公司接觸了CI/CD的服務部屬,但是因為是直接接手別人建好的服務
想說趁機趁還有印象時快點把SOP寫起來,這樣也是加深自己的印象
也可以提供一些如果想把地端服務做CI/CD的MIS可以做參考
這邊會是以在地端有Linux Service要做CI/CD著手

何謂 CICD ,其實講的比較簡單一點就是將上程式的流程自動化,自動 build code、執行 unit test、自動更新線上服務...所有反覆步驟都轉為自動化執行

CI(Continuous integration),即是「持續整合」

CD(Continuous Deployment),即是「持續佈署」


本篇會使用的版控工具為 GitHub
使用 Travis CI 作為版控的串接服務,因為Travis CI 只能跟GitHub做串接
Trvais CI的解釋 可參考Miles大神的介紹,述小弟不在贅述
儲存相關設定的會在 aws S3 Bucket
這邊地端服務會以常見的Squid Proxy Service 作為Demo
使用的Liunx版本為Ubuntu 18.04 TLS


1.  首先在 GitHub 上面開啟一個 Private Project
(補充:
如果不會使用GitHub可參考這篇)


2.  Download Project 到本機桌面


3.  使用Git 的相關指令來確認是否跟GitHub Project有互通

  •  git add .
  •  git commit -m "xxx"
  •  git push
  •  git pull 


4. 新建一個 AWS S3 bucket,盡量可以跟 Github Project的名字一樣

(補充:為什麼需要使用S3呢,因為S3是用來儲存你所需要部屬的程式或是設定檔,讓Travis CI打包檔案丟上來用的空間)


5. 建立一個 IAM User  Travis CI,盡量可以跟 Github Project 的名字一樣,比較好辨識

(補充:為什麼要給Travis CI一個權限呢,因為Travis CI需要去觸發Codedeploy去接續後續的的部屬流程以及需要把打包好的東西丟至S3 Bucket上,所以需要開權限)


6. IAM User 權限 給他 “AmazonS3FullAccess” 就好


7. 新增 .travis.yaml 到 GitHub Project 上面


"後面會再繼續寫步驟,這只是一開始而已,沒這麼簡單"


#####以下是 .travis.yaml的範例#####


language: python

python:

- '2.7'

services:

- docker

before_install:

- chmod +x tests/*.sh

install:

- docker build -t "GitHub Project Name"/squid .

- docker run -di --name squid "GitHub Project Name"/squid

script:

- docker exec -it squid /tests/test_config.sh

- docker exec -it squid /tests/test_service.sh

notifications:

  email:

    recipients:

    - your-email

    on_success: change

    on_failure: always

  slack:

   

before_deploy:

- zip -r latest-${TRAVIS_BUILD_NUMBER}.zip *

- mkdir -p "GitHub Project Name"

- mv latest-${TRAVIS_BUILD_NUMBER}.zip "GitHub Project Name"/latest-${TRAVIS_BUILD_NUMBER}.zip

deploy:

- provider: s3

  access_key_id: "KEY"

  secret_access_key: "KEY"

  bucket: "GitHub Project Name-bucket"

  skip_cleanup: true

  local_dir: "GitHub Project Name"

  region: your aws region

  on:

    branch: master


2019年12月17日 星期二

[Microsoft] Microsoft Rewards 問題解答

轉貼至:http://mkvq.blogspot.com/2018/04/microsoft-rewards.html

https://account.microsoft.com/rewards/
【新手教學
Q:在 Microsoft 購物就能賺取點數。如果您可以挑選 Microsoft 提供的其中一項優惠,您會選擇哪一項?
A:XBOX LIVE GOLD 會員資格

Q:等我們準備好之後,您就會獲得 50 點 - 快來設定兌換目標!
A:NT$60 MICROSOFT 禮物卡

【Reward 挑戰】
Q:Microsoft Rewards 是在哪一年推出?
A:2016

Q:在哪裡購物可以賺取 Microsoft Reward 點數?
A:Microsoft Store

Q:在 Microsoft Store 消費每 __ 元可賺取 1 點
A:30(新台幣)

Q:一個月內累積多少點才能晉升到第 2 級?
A:500點

【瀏覽器免費贈點機智問答】
Q:與其他瀏覽器相較之下,Microsoft Edge 可在 Windows 10 上讓什麼延長 36%-53%?
A:電池續航力

Q:Microsoft Edge 是唯一有 ___ 功能的瀏覽器,可讓您撰寫網頁筆記。
A:網頁筆記

Q:在 Microsoft Edge 中,誰會在您停留的相同網頁上回答問題?
A:Cortana

Q:SmartScreen 篩選工具能在 Microsoft Edge 中為您提供什麼樣的防護?
A:網路釣魚和惡意程式碼

【Microsoft 機智問答】
Q:Microsoft 在美國哪一州創立?
A:新墨西哥州

Q:Windows 95 推出時的主題歌「Start Me Up」是哪個樂團唱的?
A:滾石合唱團

Q:哪一位演員與共同創辦人比爾蓋茲一同演出 2008 年的 Microsoft 廣告?
A:Jerry Seinfeld

Q:Microsoft 共同創辦人保羅艾倫擁有哪一支美式足球隊?
A:西雅圖海鷹

Q:Microsoft 最近收購了哪一個創於瑞典的品牌?
A:Minecraft

2019年12月2日 星期一

[Linux] CentOS 7 Vsftp FTP Service 安裝

因為工作上的需求需要重建FTP Service,想說就順便寫一下SOP
筆記一下

先更新yum repo
yum update

安裝vsftp程式
yum -y install vsftpd

修改設定檔
vi /etc/vsftpd/vsftpd.conf

#限制匿名登入
anonymous_enable=NO

#限制使用者無法跳出家目錄
chroot_list_enable=YES 啟用鎖定家目錄
chroot_local_user=YES 啟用本地使用者(與chroot_list_file搭配,YES表示chroot_list內跳出家目錄)
chroot_list_file=/etc/vsftpd/chroot_list 家目錄使用者(這裡表示跳出者,不想有人跳出都設定空白即可)

#排除根目錄寫入的問題
allow_writeable_chroot=YES 安全性問題,預設不允許你的根目錄的權限設定是可以寫入的,這邊排除它

#寫入 /etc/vsftpd/user_list 變成可以使用 FTP 的帳號
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list 這裡面是可以使用喔,不要搞顛倒了
userlist_enable=YES

#最大速率 100k
local_max_rate=100000

啟動vsftpd 服務
systemctl enable vsftpd

systemctl start vsftpd

2019年11月22日 星期五

[Linux] 解決在 CentOS Vsftpd Service 連接 出現 500 OOPS 的錯誤訊息

最近老K在重建公司的FTP Server時遇到了這個500 OOPS的問題

上網找了一下解法...沒想到只要加一行指令就可以解掉了


修改前:
連線時會遇到500 OOPS錯誤













修改後:
編輯 /etc/vsftpd/vsftpd.conf 設定檔
vim /etc/vsftpd/vsftpd.conf
加入下面這一行
allow_writeable_chroot=YES

















重新啟動 vsftpd service
systemctl stop vsftpd
systemctl start vsftpd









就可以正常連接了

2019年10月9日 星期三

[CodiMD] Codimd 安裝血淚史...踩了一堆雷

為什麼會有這個需求呢...因為一開始SOP都是放在外面服務上
但你又要把一些ip密碼的什麼修改掉...新人到職後根本看不懂你在寫什麼
後來就上網查到Codimd(hackmd)這套mark down 共編筆記
相關功能請參考 >(https://hackmd.io/s/features-tw)













設定Proxy
vim /etc/yum.conf
設定Proxy=http://x.x.x.x:3128   (因為內部鎖很多只能透過proxy出去更新)
yum update -y

關閉防火牆
systemctl stop firewalld
 systemctl disable firewalld

關閉Selinux
 vim /etc/selinux/config
SELINUX=disabled
修改完 Selinux 後需Reboot一次

安裝需要套件
yum install git curl

因為要安裝新版node js 需要curl 新的source
curl -sL https://rpm.nodesource.com/setup_11.x | sudo -E bash -
yum install nodejs npm node-gyp  gcc gcc-c++
yum install epel-release
yum update

因為要安裝新版mysql 需要wget 新的source
yum install mysql-community-server
systemctl start mysqld
systemctl status mysqld


Clone Codimd git

安裝Codimd
cp config.json.example config.json
bin/setup

設定MySQL資料庫
mysql -uroot -p
設定密碼等等
新建databases "codimd"

CREATE DATABASE codimd CHARACTER SET utf8 COLLATE utf8_general_ci;
show databases;
確認codimd 這個databases 有被成功建立

設定Codimd 去串mysql 連線
vim /你的安裝路徑/codimd/.sequelizerc
修改 "url" 這行就好了
"mysql://root:XXXXXXX@localhost:3306/codimd"

開始編輯config.json(很重要…Codimd的精華)
Vim config.jason
主要是修改db參數,因為這邊我沒有要串ldap,有需要者可參考此blog (https://spicyboyd.blogspot.com/2019/03/linux-hackmd-codimd.html)

 "db": {
            "username": "root",
            "password": "xxxxxxxx",
            "database": "codimd",
            "host": "localhost",
            "port": "3306",
            "dialect": "mysql"


可以改port 他預設是3000,K這邊改成80,因為只有內部使用而已
(之後會再餵憑證進去...畢竟只走http會被稽核"誤")
然後我沒有要開放給匿名建置筆記本
所以我這兩個選項都改成 "false"
 allowAnonymous: false,
 allowAnonymousEdits: false,

如果沒串ldap,他可以用email註冊登入
所以這邊也要設定 "true"
  email: true,
  allowEmailRegister: true,
編輯完後 存檔離開























修改環境變數
另外因為他預設吃的環境變數是 "development"
所以要改成  "production"
暫時設定環境變數
export PATH=$PATH:NODE_ENV=production
永久的就寫到 vim /etc/profile 就好


執行服務
cd /你的安裝路徑/codimd/
npm run build
node_modules/.bin/sequelize db:migrate
npm start
開啟瀏覽器 輸入 Server IP:80 <-----K這邊已經先改成80 port


這樣一個私有的mark down 筆記服務就起來了

因為網路上文件很雜很亂,我踩過很多雷
後來整合了很多blog的技術文件才成功安裝

安裝完畫面如下:







Codimd github : (https://github.com/codimd)





2019年6月11日 星期二

[Citrix] XenServer 監控 storage 容量

最近有一個需求,就是要監控XenServer 的 storange

因為我們分很多個pool,每個pool是使用不同的lun

所以剛好有這個需求就把script放上來分享給大家

vgdisplay --units G 這個指令就是把你掛載的storange show出來給你看

然後找到對應的storange 名稱 :VG_XenStorage-6e4d4811-ffcd-2593-38f5-abxxxxxxxxx

我這邊告警條件是設定超過85 % 就會發mail通知


#!/bin/bash

storage=VG_XenStorage-6e4d4811-ffcd-2593-38f5-abxxxxxxxxx
diskuse=`vgdisplay --units G $storage |grep "Alloc PE"|awk '{print $7}'`
disktotal=`vgdisplay --units G $storage |grep "VG Size" |awk '{print $3}'`
WARN=85
ADMIN=60dmx@google.com.tw

a=`awk 'BEGIN{printf "%.2f\n",('$disktotal'/'100')}'`
b=`awk 'BEGIN{printf "%.2f\n",('$diskuse'/'$a')}'`
c=`echo | awk '{print int('$diskuse'/'$a')}'`

if [ $c -gt $WARN ]
then
        echo "disk size full!! \n on $(hostname) " | mail -s "Warning: disk space $c %" $ADMIN
        echo "disk size full!! \n on $(hostname) Warning: disk space $c %" > /tmp/disk.txt
fi

[Citrix] XenServer 5.X 6.X 版本repo 更新

最近在增加Xenserver的底層監控發現沒辦法直接用mail去發信

後來發現是因為repo 太舊了...只好把centos 5 的repo換掉

就可以更新yum 安裝檔案了

記得要先把citrix.repo enable=1 改成 0
/etc/yum.repos.d

然後把CentOS-Base.repo 改成下面新的就可以正常更新安裝了


[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/5.11/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/5.11/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/5.11/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

2019年4月9日 星期二

[3C開箱] APC BACK-UPS 1100

之前接手了一台二手 APC 的UPS smart 700
雖然之前已經換過裡面的電池了,但最近又出現異常
所幸上網找了其他款APC的UPS來頂替..!
(被除役的UPS被我拿來接MOD 電視 PS4 Apple tv 用)







































看來看去後來挑到這款符合我需求的UPS "APC BACK-UPS 1100"























 

登登....拆開後迫不及待把它裝起來使用,其實最讓我期待的是有專用的軟體去監控UPS
電量等相關數據的軟體 : PowerChute 電源監控軟體 






































其實家用玩家到底需不需要使用到UPS呢
這個見仁見智拉,我只是單純擔心萬一雷擊或是跳電
造成主機板損壞所以才買的,簡單來說就是買個心安而已
或是停電時可以有短暫的半小時來存檔電腦上的資料

功能諸元表
  6個電池備援與突波保護插座 
■ 可防範透過電話線傳輸的突波和尖波 
■ 按鈕式斷路器可從超載狀況快速恢復正常 
■ PowerChute 電源監控軟體 
■ 全機兩年保固(含電池) 








































最後因為想練習拍影片所以拍了一小段開箱影片,還請多多指教

[Citrix] Xenserver 監控 - Netdata 安裝

最近同事推薦了一款很炫炮的監控軟體,畫面很漂亮很酷
二話不說就馬上上網找步驟安裝起來,但是因為XenServer
安裝比較麻煩需要先改repo才能進行 yum install
這邊我會再寫一篇修改for XenServer 7.x版本的repo檔
下圖是Netdata 監控XenServer 所看到的DashBoard



安裝步驟如下 :

Step 1: Update the system

For security purposes, update the system to the latest stable status using YUM:
sudo yum update -y && sudo reboot
After the reboot finishes, log in with the same sudo user.

Step 2: Install dependencies

In order to install Netdata, you need to install the dependencies below:
sudo yum install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autogen automake pkgconfig
sudo yum install curl jq nodejs

Step 3: Install Netdata

Install Netdata with the official installation script:
cd ~
git clone https://github.com/firehol/netdata.git --depth=1
cd netdata
sudo ./netdata-installer.sh
During the installation process, Press ENTER to start the installation.
If no errors occur during installation, the Netdata daemon will start.

Step 4: Modify firewall rules

Before you can access Netdata's web interface, you need to modify firewall rules to allow traffic on port 19999, the default communication port of Netdata:
sudo firewall-cmd --permanent --zone=public --add-port=19999/tcp
sudo firewall-cmd --reload

Step 5: View the monitoring interface

Confirm the installation by opening your web browser and visiting the monitoring interface of Netdata:
http://<your-Vultr-server-IP>:19999

[系統設定]
vim /etc/netdata/netdata.conf

* global - 服務的全域設定
* plugins - 啟用或停用插件
* plugin:NAME - 各個插件的設定
* CHART_NAME - 各個圖表的設定
以預設值就已經可以正常的運作了,而這些參數可以視狀況修改:
* update every = 1,每一秒更新一次
* default port = 19999,預設通訊埠在 TCP 19999
* bind to = *,不綁定 IPv4、IPv6 位址
* disconnect idle web clients after seconds = 60,Web Client 閒置 60 秒後就踢掉
* enable web responses gzip compression = yes,啟用網頁 GZip 壓縮功能

[Linux] Git Proxy setting

Configure Git to use a proxy

有些公司都會鎖定Proxy,所以像你要yum install 或是git curl 等等
都需要指定proxy,這邊教大家如何設定git 的 proxy

git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
git config --global http.https://domain.com.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
git config --global http.https://domain.com.sslVerify false
這邊也可以直接使用vim 來編輯 

vim ~/.gitconfig

[http]
        proxy = http://proxyUsername:proxyPassword@proxy.server.com:port






2019年2月25日 星期一

生活日常 - 讓你一叫不醒的床墊..眠豆腐

因為最近剛搬新家,被指派要尋找好睡的床墊...

晃著晃著就意外看到我最喜歡的 youtuber "壹加壹" 的開箱影片(有沒有這麼剛好)

請從7分58秒處開始收看~~~~~~~



看了看其實還真的還蠻心動的欸 (腦波很弱) ,但............就很怕會踩雷阿

畢竟沒有試睡過就買了,也太衝動了點吧!!!是不是.........

於是就開始在網路上瘋狂爬文,以及看 ppt 的各種評價

當然啦查Google 也是必需的,誰叫這是工程師的必備技能阿阿阿

看著看著越來越心動,加上看到很多人開箱都說讚,覺得那個床墊好像感覺真的很棒

但...壓倒駱駝的最後一根稻草竟然是這個!!!!!!!!  他的100天試睡計畫

反正大不了睡不喜歡就退了?  直接二話不說立馬拿起信用卡給他刷下去


100 晚試睡計畫

更棒的是,你再也不必跑到賣場尷尬的試躺了,眠豆腐認為最好的試躺場所就是你的臥房,而且不是五分鐘,是 100 個晚上!
這就是眠豆腐震撼業界的「100 晚試睡計畫」!
只要選定尺寸輕鬆一按,就能在家享受眠豆腐,100 晚內不滿意,專人回收全額退費。


千等萬等終於趕在年前送到家裡了....一張床竟然被縮成這樣子,騙我沒看過床墊?


我...該不會被騙了吧...拆開整個大傻眼

竟然用真空包裝縮成一小卷

(結果太興奮忘記拍照了)
.
.
.
.
.
.
  好險攤開後長這樣啦...嚇死我了...能把一張床縮小成這樣也不簡單阿




割開後大概讓他充氣三~五分鐘左右就會膨脹成一張床了(期待)
在充氣的時候那個畫面以及聲音真的很療育阿~~~~~阿斯



結果忘了拍本體就包上床包並躺上去翻滾~~喂!!!!!!!!!!!!!!!!!!!!!!
只好偷一下眠豆腐官網的圖片了來讓你們看一下..是不是看起來很好睡
軟軟的床在呼喚你...快來躺我快來躺我






結論....我和老婆躺上去後就決定不去想退貨的事情了
這麼好睡我幹嘛要退貨拉...........
這是不是被詛咒的床墊阿...躺上去後完全不想下床
睡一睡神清氣爽,考試都考一百分了!?

看到蠻多朋友再問我的就想說不如寫一個心得好了
如果真的擔心的話,來我房間吧?我陪妳一起躺躺看....?!
真的大推拉~~~~~

2019年1月30日 星期三

[Python] 爬網頁分析練習 套件安裝

因為工作需求,第一次自己寫一個很簡單的爬蟲分析

其實也是照著網路上面各個神人的方式刻成符合自己的需求

首先因為python 簡陋,你要依你的需求安裝module

才能帶入這個module的指令

我們今天是要爬網頁,所以會需要安裝下面幾個套件

使用pip install 的指令進行安裝 pip install (your_module_name)

第一個要安裝BeautifulSoup 套件
再來我們還需要搭配使用 lxml 套件與 requests 套件。
lxml 套件是用來作為 BeautifulSoup 的解析器
BeautifulSoup 可以支援的解析器其實不只一種
還有 html.parser(Python 內建)與 html5lib
根據官方文件的推薦,我們使用解析速度最快的 lxml