S小魚仔S 網誌搜尋

2018年5月23日 星期三

S小魚仔S Centos 7 搭建 Ansible 自動化運維 簡易手冊

簡單的自動化IT工具。Ansible基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。

Ansible只需要在一台普通的服務器上運行即可,不需要在被管控的服務器上安裝客戶端。因為它是基於SSH的,Linux服務器離不開SSH,所以Ansible不需要為配置工作添加額外的支持包含客戶端 (Agent) 。

Ansible在管理節點將Ansible模塊通過 SSH 協議(或者 Kerberos、LDAP)推送到被管理端執行,執行完之後自動刪除。

#==修改「電腦」名稱 ( ansible )====
hostnamectl set-hostname ansible

#==關閉「selinux 」======
#關閉「Selinux」為「disabled」才不會阻擋「服務連線」服務
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

#====需要「Reboot」重開機====
reboot -h now

#=安裝「epel-release」yum 源
sudo yum install epel-release -y

#=安裝「ansible
sudo yum install ansible -y


一. 「Ansible」 加入「監控主機

#配置「hosts」文檔

vi /etc/ansible/hosts

#「servers」=「group」(群組),ansible 可以指定「群組」或「單一節點」主機

[servers]
192.168.8.50 ansible_ssh_user=test ansible_ssh_pass=test ansible_ssh_port=22
192.168.8.51 ansible_ssh_user=test ansible_ssh_pass=test ansible_ssh_port=22

#設定 「Ansible」配置文檔 ( 關閉 SSH KEY 驗證 )

vi /etc/ansible/ansible.cfg

[defaults]

host_key_checking = false

二.「Ansible」(Ad-Hoc command) 簡易「指令

#修改「單節點」主機「名稱
ansible 192.168.8.50 -m hostname -a "name=python"

#修改「單節點」主機「端口」服務
ansible 192.168.8.51 -m command -a 'netstat -ltunp'

#修改「單節點」主機「網卡
ansible 192.168.8.51 -m command -a 'ifconfig'

#修改「單節點關閉「selinux
ansible 192.168.8.51 -m selinux -a 'state=disabled'

#修改「單節點重啟「主機
ansible 192.168.8.51 -m command -a 'reboot -h now'

#測試「Ping」群組「servers」節點主機
ansible servers -m ping

#複製 來「」到 」檔案 並 賦予「權限
ansible servers -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"

#下載「URL」(HTTP) 檔案
ansible servers -m get_url -a 'url=http://releases.ansible.com/ansible/ansible-1.1.tar.gz dest=/opt/'

三.「Ansible」派送「Shell」腳本

#給予「腳本」執行「權限
chmod +x /opt/ansible_test.sh

#複製 來「」到 目「」腳本 並 賦予「權限
ansible servers -m copy -a "src=/opt/ansible_test.sh dest=/opt/ owner=root group=root mode=0755"

#指定「群組」執行「ansible_test.sh」檔案
ansible servers -m shell -a "/opt/ansible_test.sh"

四.「Ansible」派送「*.yml」腳本

Ansible 使用 Playbook 進行「yml」派送,Playbooks 有五個組成結構。

Variables - 變量元素,可傳遞給Tasks/Templates使用
Tasks - 任務元素,即調用模塊完成任務
Templates - 模板元素,可根據變量動態生成配置文件
Hadlers - 處理器元素,通常指在某事件滿足時觸發的操作
Roles - 角色元素


==相關範例如下==

#建立「yml」描述檔
vi /opt/test.yml


- hosts: 192.168.8.51
  #==執行「任務
tasks:
    #===Yum「java」安裝
  - name:  yum install java
yum:
             name: java
             state: latest
    

#執行「test.yml」檔案
ansible-playbook /opt/test.yml

參考資料
运维那点事 运维开发 DBA 分享平台」-「Ansible第一篇:介绍及安装
官方網站」-「http://docs.ansible.com/
http://docs.ansible.com」-「Windows Support
运维那点事 运维开发DBA分享平台」-「Ansible第四篇:Playbook基础

2018年5月3日 星期四

S小魚仔S Centos 7 搭建 Frp Reverse Proxy (反向代理服務器) 實現 內網穿透

什麼是「FRP」?  當您的網路環境沒有「公網地址」(Public IP) 搭建「FRP」可以實現「公網穿透內網」原理相當於「反向代理服務器」,可以達成「TCP、UDP、HTTP、HTTPS」轉發,詳細原理請參考該作者「https://github.com/fatedier/frp」,可以搭建在「Windows」和「Linux」主機。

要實現這一目標,先得有一個具備公網 IP 的 VPS ( vultrvirmachBandwagonhost ) 或 主機,雖說還是離不開公網IP,但在大陸這總比找寬帶運營商要個公網IP簡單多了。


使用版本「frp_0.17.0_linux_amd64.tar.gz」內含 ( frps 和 frpc )

簡單步驟原理講解

1. Domain (一級域名) 供應商「指向frps 公網 IP (完成域名解析)
PS. DDNS 動態域名沒測試過

2. 配置「frps」服務器端

=== frps ( Server ) ===

#修改「電腦」名稱
hostnamectl set-hostname Frps

#加入「防火牆」規則  - Frp Server
sudo firewall-cmd --add-port=7000/tcp --permanent

#加入「防火牆」規則  - Https
sudo firewall-cmd --add-port=443/tcp --permanent

#加入「防火牆」規則  - Http
sudo firewall-cmd --add-port=80/tcp --permanent

#重新啟動「防火牆
sudo firewall-cmd --reload

#關閉「selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

#需要「Reboot」重開機
reboot -h now

#切換「/opt」目錄
cd /opt

#下載「frp_0.17.0_linux_amd64.tar.gz
wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_amd64.tar.gz

#解壓縮「frp_0.17.0_linux_amd64.tar.gz」
tar -zxvf frp_0.17.0_linux_amd64.tar.gz

#切換「frp_0.17.0_linux_amd64」目錄
cd /opt/frp_0.17.0_linux_amd64

#刪除「客戶端」文件
rm -f frpc frpc_full.ini frpc.ini

#編輯「服務器端」檔案 ( frps.ini )
vi /opt/frp_0.17.0_linux_amd64/frps.ini


[common]
bind_port = 7000 #啟用「監聽端口
vhost_http_port = 80 #啟用「監聽端口
vhost_https_port = 443 #啟用「監聽端口
privilege_mode = true # 傳輸「加密
privilege_token = 789 #「加密」認證

[https]
type = https

[http]
type = http

#賦予「授權
chmod +x frps frps.ini

#背景執行
nohup /opt/frp_0.17.0_linux_amd64/frps -c /opt/frp_0.17.0_linux_amd64/frps.ini &

#檢查「Log
cat /opt/frp_0.17.0_linux_amd64/nohup.out

#檢查「端口」狀態
netstat -ltunp

3. 配置「frpc」客戶端

=== frpc ( Client ) ===

#切換「/opt」目錄
cd /opt

#下載「frp_0.17.0_linux_amd64.tar.gz」
wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_amd64.tar.gz

#解壓縮「frp_0.17.0_linux_amd64.tar.gz」
tar -zxvf frp_0.17.0_linux_amd64.tar.gz

#切換「/opt/frp_0.17.0_linux_amd64」目錄
cd /opt/frp_0.17.0_linux_amd64

#刪除「服務器端」文件
rm -f frps frps_full.ini frps.ini

#編輯「客戶端」檔案 (frpc.ini)
vi /opt/frp_0.17.0_linux_amd64/frpc.ini

[common]
server_addr = 219.76.152.250 #指向「服務器端」IP
server_port = 7000 #服務器「監聽端口
privilege_token = 789 # 驗證「密碼

[http_01] #自訂「標籤」不能重複
type = http #建立「協議
local_ip=192.168.3.251  #內網「主機
local_port = 80 #內網「端口
custom_domains=zabbix.contoso.com #自訂「二級」域名

#「實現」端口轉發 範例
[forwarding_01]
type = tcp
local_ip=192.168.3.250
local_port = 3389
remote_port = 5000

#背景執行

nohup /opt/frp_0.17.0_linux_amd64/frpc -c /opt/frp_0.17.0_linux_amd64/frpc.ini &

#檢查「Log

cat /opt/frp_0.17.0_linux_amd64/nohup.out

接著透過「瀏覽器」輸入「http://zabbix.contoso.com」即可完成 Frp 內網穿透,有興趣朋友可以接著研究「frp xtcp」可以完成「P2P」點對點傳輸,大幅節省 vps 主機 頻寬流量限額 。


參考資料
http://github.com」-「frp
www.dkys.org」-「frp内网穿透中文文档
不曾長大 Blog」-「利用frp实现外网访问内网
segmentfault.com」-「如何用 Frp 实现外网访问群晖 NAS

2018年4月29日 星期日

S小魚仔S Tencent (騰訊雲) VPS 設定 SSH KEY

騰訊雲 (國際版) 提供 海外註冊 前三個月 每月反饋 50 美金 共 150 美金,果斷註冊來玩一下,如何註冊不是本文重點,自己想辦法。

使用「Tencent」建立「SSH KEY」請使用「Puttygen」工具 ( 建立 Public Key 和 Private Key )

1. 選擇「RSA」加密
2. 點選「Generate
3. 產生「Publick Key」(複製下來)

進入「騰訊雲 (國際版)」網頁

必須 關閉「VPS」主機,才能做「Publick Key」加密 

1. 點選「SSH KEY
2. 點選「Create a key

1. 選擇「Use an existing public key
2. 輸入 「名稱
3. 貼上「public key

選擇「SSH KEY Name」綁定「VPS」主機


以上「VPS」掛載「Publick Key」完成,接下來「匯出」( Private key )


匯出「Private key」使用「putty」或「遠端工具」載入即可

2018年4月24日 星期二

S小魚仔S Zabbix 3.4 安裝 zabbix_manager 建立 Excel Report

Zabbix_Manager」(二次開發) 作者「王斌」,主要功能有「zabbix_alert」、「zabbix_templates」、「XLSWriter」( Report )....等

===先決條件===

# Zabbix Server 需要建置 帳號「admin」、「zabbix」 (注意大小寫) (超級管理員權限)


# python 版本 2.7 以上
whereis python

#安裝「git」下載「github」套件
yum install git-all -y

====下載「Github - Zabbix_manager」套件===

#切換「/opt」目錄
cd /opt

#下載「zabbix_manager
git clone https://github.com/BillWang139967/zabbix_manager.git

#切換「zabbix_manager」目錄
cd /opt/zabbix_manager

#啟用「start.sh」進行「腳本」安裝
sh start.sh

#使用「Apache」搭建 Web 需要修改「zabbix_setting.ini
vi /etc/zabbix_tool/zabbix_setting.ini
apache=True

輸入「zabbix_api」就會帶出「應用參數

#接下來「重啟」服務器
Reboot -h now

#檢查「Table」群組
zabbix_api hostgroup_get --table

#產生「Zabbix Servers Group」CPU 報表
zabbix_api --report "CPU" "2018-04-23 00:00:00" "2018-04-24 00:00:00" --hostgroupid "4" --table --xls /opt/Cpu.xls

匯出「Excel」參考表

參考資料
github.com」-「zabbix_manager
www.w3cschool.cn」-「多端阅读《zabbix_manager》

2018年3月24日 星期六

S小魚仔S CentOS 7 Install Docker ELK 簡易配置

因為工作需求常常到客戶端採集日誌,又不想繁瑣安裝 「ELK」,這次我們採用比較熱門 Docker 快速安裝「ELK」,採用「mcmoe and antoineco」作者搭建「Github Docker ELK」版本
PS. 「ELK」版本更新速度非常快,幾乎週一個版本號。


==關閉「selinux 」======
#關閉「Selinux」為「disabled」才不會阻擋「服務連線」服務
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

PS. 記得關閉「selinux」重開機

==更新「YUM Repository」==
;安裝「Docker」前, 更新「YUM」資源庫。
yum -y update

==安裝「Docker」======

;安裝「Docker
sudo yum install docker -y

;啟用「Docker
sudo service docker start

;開機自動「啟動」Docker
sudo chkconfig docker on

;啟用「Docker」狀態
sudo service docker status

==安裝「Docker ELK」======

#安裝「Git」套件
yum install git-all -y

#安裝「Docker Compose」套件
PS. 為什麼要安裝「Docker Compose」套件?
通過 Compose (基于*.YUML语法)文件,在這個檔上面描述應用的架構,如使用什麼鏡像、數據卷、網絡、綁定服務埠等等,然後再用一條命令就可以管理所有的服務 (如啟動、停止、重啓、日誌監控等等)。
sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#賦予「Docker Compose」執行權限
sudo chmod +x /usr/local/bin/docker-compose

#確認「Docker Compose」版本
docker-compose --version

#切換到「Opt」目錄
cd /opt

#下載「Git Hub」elk 套件
git clone https://github.com/deviantony/docker-elk.git

#切換「docker-elk」目錄
cd /opt/docker-elk

# docker-compose up 會執行「docker-compose.yml」( -d = 背景執行 )
docker-compose up -d


拉取鏡像...請稍後

#確認「ELK」三個「CONTAINER ID」容器 對應「IMAGE NAMES
sudo docker ps

接下來就是「ELK Docker」通訊端口對應關係
Logstash TCP Input - 5000
Elasticsearch HTTP - 9200
Elasticsearch TCP Transport - 9300
Kibana - 5601

查詢「CONTAINER ID」(容器) 與「Port」(端口) 映射關係
docker port IMAGE NAMES (以此類推)

透過網頁瀏覽「http://IP:5601」( Kibana Web UI )

如何進入「Docker ELK」容器 ( CONTAINER )

docker exec -it IMAGE NAMES bash

Docker ELK」三個( elasticsearch.yml、logstash.conf、kibana.yml ) 設定檔分別在「容器」裡面,必須進入「容器」才可以看到相關配置檔。

#「elasticsearch」設定檔
/usr/share/elasticsearch/config/elasticsearch.yml

#「logstash」設定檔
/usr/share/logstash/pipeline/logstash.conf

#「kibana」設定檔
/usr/share/kibana/config/kibana.yml

參考資料
Github.com」-「docker-filebeat

2018年2月6日 星期二

S小魚仔S 使用 ESXi-Customizer-PS 封裝 Esxi 6.5 Realtek、ACHI 驅動程式

第一次使用「組裝電腦」安裝「Esxi 6.5」,紀錄實戰經驗。

使用「組裝電腦」安裝「Esxi 6.5」網路驅動是要非常小心,本次 主機板型號「B150M-A/M.2」,CPU 需要開啟「V-T」虛擬化技術,網路卡晶片剛好就是「Realtek® RTL8111H」 ,這會讓您安裝「Esxi」出現「如下錯誤」( 沒有網路卡驅動程式 )

接下來就是重要處理方法

1. 前往「List of currently available ESXi packages」尋找「驅動程式」下載「.vib」,請參考此篇文章「ESXi 新增Realtek網路驅動





3. 點選「桌面」( VMware PowerCLI 32 Bit ) 圖示
PS. 您可能會遇到「PowerShell 无法加载文件ps1

4. 輸入「以下指令

.\ESXi-Customizer-PS-v2.5.1.ps1 <== 切換下載「ESXi-Customizer-PS」位置根目錄
-v 選擇「版本
-load 「載入驅動」型號
-pkgDir 選擇「驅動資料夾 」(xxx.vib)
-outDir 選擇「Esxi - ISO」匯出位置


.\ESXi-Customizer-PS-v2.5.1.ps1 -v65 -vft -load net-igb,net-e1000e,net55-r8168,net51-r8169,sata-xahci,net-forcedeth-1,esx-ui,esx-tools-for-esxi,esxcli-shell,fw-ntpd -pkgDir 'C:\Users\Administrator\Desktop\Vmware_Vsphere_ESXi_Customizer_PS\Driver' -outDir 'C:\Users\Administrator\Desktop\Vmware_Vsphere_ESXi_Customizer_PS\iso'

耐心等待「ESXI-ISO」完成

終於完成

使用「UltraISO」燒入「USB」從「USB」啟動導引安裝「Esxi 6.5」即可


原本以為可以順利安裝「Esxi 6.5」,接下來您可能還會遇到
Failed to Validate Acceptance Level. Failed to Check Acceptance Level: None」,由於現在台式主機大多採用「UEFI」引導模式,需要改「BIOS」為傳統「Legacy」模式。





參考資料
可丁丹尼 @ 一路往前走2.0」-「ESXi 新增Realtek網路驅動