之前介紹用 manifests 佈署,但是只是要安裝一個 nginx 就要寫那麼多行,如果是更複雜的設定那這個 node 的設定檔就會寫得很長,如此可見有 n 台 node 的時候這個 manifests 將會非常可觀,不過小弟說過 Puppet 幾乎無所不能的彈性,所以 ...
Puppet 是一個有模組概念的工具,利用已經編寫好的 module 在 manifests 就不需要在打上落落長的設定檔,底下我會示範如何安裝 module、編寫模組 module,然後利用 module 來寫 manifests 看出差異
文章目前都已轉入WordPress囉,請連這裡 https://shazi.info,若有連結失效請到新站台查詢!並告知站長,這裡僅提供第一次發文的同步更新,文章有編修將不再修正。
2017年1月30日 星期一
用 apt-get 刪不乾淨的 remove 參數
今天在安裝一台 Apache 2.4 的時候頻頻無法啟動 service 出現以下錯誤訊息
$ sudo /etc/init.d/apache2 restart
/etc/init.d/apache2: 46: .: Can't open /etc/apache2/envvars
[....] Restarting apache2 (via systemctl): apache2.serviceJob for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
failed!
2017年1月20日 星期五
Ubuntu 16.04 建立 APT Mirror site
最近因為配合工作所以建立了一個 APT Mirror site,順手記錄一下安裝步驟
由於是 Mirror site,所以要準備一個硬碟至少 300GB 的空間,因為光是 Ubuntu 官方源 amd64、i386、src .. 加一加就 200 多 GB 了
環境:
由於是 Mirror site,所以要準備一個硬碟至少 300GB 的空間,因為光是 Ubuntu 官方源 amd64、i386、src .. 加一加就 200 多 GB 了
環境:
- Ubuntu 16.04 xenial
- 預備存放 packages 的空間:/deb
2017年1月17日 星期二
Git 在 Windows Cygwin clone 換行符號的問題
這幾天在開發工具的時候在測試 Windows Cygwin 相容性的時候一直出現錯誤訊息:
我在之前有寫過一篇關於使用 git add 時出現轉換 CRLF to LF 格式的文章,在這邊出現的問題在於 Windows clone or pull 下來 source code 出現的問題
/test.conf: 列 5: $'\r' : 命令找不到
我在之前有寫過一篇關於使用 git add 時出現轉換 CRLF to LF 格式的文章,在這邊出現的問題在於 Windows clone or pull 下來 source code 出現的問題
2017年1月13日 星期五
Yahoo! 開源的 DevOps 專案 - Screwdriver
Yahoo! 在 1/12 號 release 了一個 DevOps 的專案 Screwdriver,這是 Yahoo! 在內部執行多年的 DevOps 專案,終於在最近 release open source 了,Screwdriver 是基於 python 2.7 開發的,並且使用 docker, docker-compose Container。
2017年1月10日 星期二
【DevOps】Puppet 自動化部署 – 設定第一個自動佈署工作(manifests)
在 Puppet 中必須撰寫 manifests 去佈署你的 Agent 伺服器,顧名思義 manifests 是每一個 node 的佈署清單,要做什麼事情都在 manifests 這邊撰寫,可以參考下圖架構關係
Master 和 Agent 之間取得佈署清單流程:
Master 和 Agent 之間取得佈署清單流程:
- Agent 傳送 catalog 內容包含 nodename (節點名稱) 和 facts (由 facter 所獲取的系統參數)
- Master 從 catalog 提供的資訊將 manifests 編譯重新打包 catalog。
- Agent 收到 catalog 後執行佈署工作,並且回應 Report 給 Master 執行結果。
2017年1月8日 星期日
了解為何 OpenStack 為何沒有 disk by-id
此篇是前篇在查虛擬機真實性的延伸閱讀;
在一般的 Virtual Machine 都會在 /dev/disk/by-id 替 disk 產生一個 UUID link 到實際硬碟位置 (sda、sda1、sdb ... etc)
在一般的 Virtual Machine 都會在 /dev/disk/by-id 替 disk 產生一個 UUID link 到實際硬碟位置 (sda、sda1、sdb ... etc)
$ ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 9 Jan 2 00:33 ata-u02-Ubuntu-0_SSD_H27AXNE0H76MV18T13AG -> ../../sda
lrwxrwxrwx 1 root root 10 Jan 2 00:33 ata-u02-Ubuntu-0_SSD_H27AXNE0H76MV18T13AG-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jan 2 00:33 ata-u02-Ubuntu-0_SSD_H27AXNE0H76MV18T13AG-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Jan 2 00:33 ata-u02-Ubuntu-0_SSD_H27AXNE0H76MV18T13AG-part5 -> ../../sda5
..
..
etc
2017年1月6日 星期五
用 virt-what 判斷是否為虛擬機、了解為何 OpenStack / VMWare 為何沒有 disk by-id
剛好翻到一篇以前我想過的一個問題「如何知道你目前所在的設備是不是虛擬機?」,為何會有這個問題?
記得當時找了蠻久的,都沒有相對應的 solution,結果就在我一個無意間的 Google 逛街下看到「7 Ways to Detect Virtualization from your VM」
從文中選了一個號稱能在任何的 Linux 編譯成功,並且在我目前環境中都能判斷成功的 virt-what
- 當你身為一個廠商連到客戶端的設備時,是否也有過質疑客戶使用虛擬機造成效能不彰的問題?
- 抑或是 host 造成的 bugs 影響 guest
- 或是單純你只想知道目前所使用的 host software 是哪一種
記得當時找了蠻久的,都沒有相對應的 solution,結果就在我一個無意間的 Google 逛街下看到「7 Ways to Detect Virtualization from your VM」
從文中選了一個號稱能在任何的 Linux 編譯成功,並且在我目前環境中都能判斷成功的 virt-what
用 dmidecode 查看 Linux 硬體資訊
前幾天一位同事問到如何查看目前 Server 上的記憶體插了多少隻記憶體、目前插了多少隻、還有多少隻可以插。
在 Linux 上除了可以在 /proc 和 dmesg 看到目前伺服器的資源以外,如果要查看目前硬體的型號還可以用 dmidecode 這個工具查看所有的 DMI (Direct Media Interface)
在 Linux 上除了可以在 /proc 和 dmesg 看到目前伺服器的資源以外,如果要查看目前硬體的型號還可以用 dmidecode 這個工具查看所有的 DMI (Direct Media Interface)
2017年1月2日 星期一
看看全球的 time server 如何處理 2017 年的閏秒
在今年, 2016 跨 2017 的時候多了一個閏秒,也就是 2016 年多了 1 秒,實際跨年倒數要再多一秒!這個對一般人來說是個不痛不養的 1 秒,但是對於技術人員來說,多這一秒可能會造成天下大亂,因為伺服器通常無法處理有61秒的一分鐘。
一般公司的內部 time server 就不說了,多數都是對外校時,但對於全球性的 time server 來說就不是這麼簡單了,從 leap smear 這邊看到在各大 time server 是如何處理 2017 年的閏秒
一般公司的內部 time server 就不說了,多數都是對外校時,但對於全球性的 time server 來說就不是這麼簡單了,從 leap smear 這邊看到在各大 time server 是如何處理 2017 年的閏秒
【DevOps】Puppet 4 自動化部署 - 實作 Policy-based autosigning
前面介紹到了 Policy-based autosigning,在這邊依照官方所述來測試 Policy-based autosigning 的實作環境
首先必須先了解一下 Policy-based autosigning 的運作概念是在 csr 證書中加入參數供認證,由於在 Puppet 的認證關係中是由 Agent 發起,所以在 csr 動手腳的動作就落在 Agent 上面,
在 Master 中開啟 Policy-based autosigning 支援
可以在 puppet.conf 中加入 autosign 參數來開啟 Policy-based autosigning
在這邊必須注意的是 autosign 參數帶的是一個 script 檔,他將會替你執行這個 script 去驗證 Agent 的 csr 資訊。
首先必須先了解一下 Policy-based autosigning 的運作概念是在 csr 證書中加入參數供認證,由於在 Puppet 的認證關係中是由 Agent 發起,所以在 csr 動手腳的動作就落在 Agent 上面,
在 Master 中開啟 Policy-based autosigning 支援
可以在 puppet.conf 中加入 autosign 參數來開啟 Policy-based autosigning
To enable policy-based autosigning, setautosign = <policy executable file>
in the[master]
section of the CA Puppet master's puppet.conf.
在這邊必須注意的是 autosign 參數帶的是一個 script 檔,他將會替你執行這個 script 去驗證 Agent 的 csr 資訊。
用 diff 建立 patch 檔案上補丁
前陣子修了 nginx 的 bugfix 剛好用上 diff 建立 patch 補丁檔,這邊記錄一下如何用 diff 和 patch 這兩個工具。
用 diff 產生 patch 補丁
首先你必須先擁有 新/舊檔案 (file.old / file.new),然後用 diff 比較兩隻檔案的差異
所產生的 file.patch 就是 patch 補丁檔。
用 diff 產生 patch 補丁
首先你必須先擁有 新/舊檔案 (file.old / file.new),然後用 diff 比較兩隻檔案的差異
$ diff -Naur file.old file.new > file.patch
-a 將所有檔案都視為文字檔
-u 輸出預設三行的相同文字行
-r 遞迴比較所有的子目錄
-N 將缺少的檔案視為空檔案
所產生的 file.patch 就是 patch 補丁檔。
MacOS 把惱人的 Yahoo! 輸入法一點通服務關閉
這兩天安裝了 Yahoo! 輸入法,然後在打 ` 的時候一直出現 "一點通" 服務
我實在不懂為何 Yahoo 要把這麼智障的功能寫在單一按鍵上,雖然他早就停止維護了,但還是要抱怨一下在一開始開發的時候設計出這種快捷鍵,難道 Yahoo 工程師都不用打 ` 嗎?
我實在不懂為何 Yahoo 要把這麼智障的功能寫在單一按鍵上,雖然他早就停止維護了,但還是要抱怨一下在一開始開發的時候設計出這種快捷鍵,難道 Yahoo 工程師都不用打 ` 嗎?
Debian / Ubuntu 鍵盤設定語系 - 常用 dpkg-reconfigure 工具
這幾天在安裝 Ubuntu,不知道是哪個時候手殘,點錯了鍵盤語系,導致進入 terminal 輸入的東西都和我的鍵盤完全搭不上邊
然後就又開始了我的 troubleshooting 之旅 ...
然後就又開始了我的 troubleshooting 之旅 ...
【DevOps】Puppet 4 自動化部署 - Master 和 Agent 的認證關係
在前篇了解了基本的 Puppet 如何建立 Master / Agent 之後,現在深入了解一下 Master / Agent 之間如何認證彼此的關係。
在 Puppet 的世界中,Master 和 Agent 是靠著 SSL 認證進行認證
在 Puppet 的世界中,Master 和 Agent 是靠著 SSL 認證進行認證
訂閱:
文章 (Atom)