顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

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月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 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日 星期二

[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年1月30日 星期三

[Python] CentOS 7 安裝 Python 3.7

1. 我們先看看原生現有的python2在哪裡

[root@kevin /]# whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python.bak /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
[root@kevin bin]# ll python*
lrwxrwxrwx. 1 root root    9 5月  27 2016 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 11月 20 2015 python2.7
lrwxrwxrwx. 1 root root    7 5月  27 2016 python.bak -> python2

2. 接下來我們要安裝編譯Python3的相關包,安裝相對應套件

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
這裡面有一個包很關鍵libffi-devel,因為只有3.7才會用到這個包,如果不安裝這個包的話,在make階段會出現如下的報錯:
# ModuleNotFoundError: No module named '_ctypes'

3. 安裝pip,因為CentOs 是沒有pip 的。

yum -y install epel-release 
#安装pip 
yum install python-pip

4. 可以用python 安裝一下wget

pip install wget

5. 我們可以下載python3.7的源碼包了

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
#解壓縮
tar -zxvf Python-3.7.0.tgz

#解壓縮後,依序執行下面指令進行編譯
./configure prefix=/usr/local/python3 
make && make install
如果最後沒提示出錯,就代表正確安裝了,在/usr/local/目錄下就會有python3目錄

6. 添加Link

#添加python3的link 
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3.7 
#添加 pip3 的link 
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3.7
#測試是否成功 
python -V

[Linux] DHCP 服務檢查


1. 查看是否設置開機啟動chkconfig --list | grep dhcpd

2. 查看端口是否打開netstat -anulp | grep :67 

3.查看服務狀態/etc/init.d/dhcpd status【查看是否運行dhcp服務: ps aux | grep dhcp |grep -v grep 】 

4:關閉dhcpd /etc/init.d/dhcpd stop  

5:開啟dhcpd/etc/init.d/dhcpd start

2019年1月21日 星期一

[Linux] Postfix mail 常用命令以及除錯mailq

maildrop:本地郵件放置在maildrop中,同時也被拷貝到incoming中。
incoming:放置正在到達隊列或管理進程尚未發現的郵件。
active:放置隊列管理進程已經打開了並正準備投遞的郵件,該隊列有長度的限制。
deferred:放置不能被投遞的郵件。可能是推遲發送的郵件
啟動postfix
/usr/sbin/postfix start
停止postfix
/usr/sbin/postfix stop
檢查postfix配置檔
/usr/sbin/postfix check
顯示Postfix當前生效的配置信息
postconf -n
重新讀取postfix配置檔
/usr/sbin/postfix reload
查看隊列中的郵件:
mailq
postqueue -p
查看隊列大小
mailq | wc -l
postqueue -p | wc -l
查看信件內容
postcat -q Queue_ID
強制發送隊列中的郵件
/usr/sbin/postfix flush
postqueue -f
暫緩發送隊列中的問題郵件
postsuper -h Queue_ID
postsuper -h ALL deferred
解除暫緩發送的郵件
postsuper -H Queue_ID
postsuper -H ALL deferred
重新加入隊列:
postsuper -r Queue_ID
postsuper -r ALL
刪除指定郵件
postsuper -d Queue_ID
清空隊列中的郵件
postsuper -d ALL
# 刪除隊列中有問題的郵件(正在deferred列表中的郵件,直接刪除郵件文檔,可看出哪些信被刪除了 ):
postsuper -d ALL deferred
find /var/spool/postfix/deferred -type f -exec rm -vf {} \;
# find /var/spool/postfix/defer -type f -exec rm -vf {} \;
列出所有問題郵件(目前所有無法發送的郵件)
find /var/spool/postfix/deferred -type f -exec ls -l --time-style=+%Y-%m-%d_%H:%M:%S {} \;
刪除已經3天未發出的郵件
find /var/spool/postfix/deferred -type f -mtime +3 -exec rm -f {} \;
刪除超過5天的問題郵件的退信記錄(超過5天的 “defer” 列表中的退信)
find /var/spool/postfix/defer -type f -mtime +5 -exec rm -f {} \;
# 以下是一些相關的日誌
查看系統日誌:
tail -f /var/log/messages
查看郵件日誌:基本很全面,幾乎所有遇到的郵件問題都可以通過該日誌來處理
tail -f /var/log/maillog