Wine資料集——貝葉斯分類演算法(MATLAB實現)
文章目錄
Ansible學習筆記
背景:在構建了三個節點組成的叢集之後,我們需要進行工具的部署,這裡選擇自動化工具Ansible。
推薦學習bilibili上的Ansible課程,連結如下:
Reference: https://space.bilibili.com/364122352/channel/detail?cid=125322
1. 環境準備
採用VirtualBox建立的叢集環境作Ansible的學習,具體配置請參考如下連結:
https://gitee.com/petwan/public_doc/blob/master/VirtualBox%E4%BD%BF%E7%94%A8%E7%AC%94%E8%AE%B0.md
Node | IP Address |
---|---|
Master節點 | 192.168.31.235 |
Node1節點 | 192.168.31.153 |
Node2節點 | 192.168.31.119 |
1.1 節點配置
為了方便進行學習,這裡選擇MobaXterm通過SSH的方法訪問3個節點。
為了後續學習方便,這裡對3個節點的hostname進行修改
sudo nano /etc/hostname
# 檢視修改後的hostname
cat /etc/hostname
對映如下:
Node | IP Address | hostname |
---|---|---|
Master節點 | 192.168.31.235 | ansiblemaster |
Node1節點 | 192.168.31.153 | ansiblenode1 |
Node2節點 | 192.168.31.119 | ansiblenode2 |
修改結束後,reboot三個節點。
1.2 Ansible安裝
這裡計劃在Master節點安裝Ansible,對兩個Node節點。
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible
驗證安裝,檢視ansible的安裝版本
ansible --version
# 執行結果
ansible 2.9.6
....
python version = 3.8.2 ...
本地測試
# ansible [IP] -m [module]
ansible localhost -m ping
測試結果
localhost | SUCCESS => {
"changed": false,
"ping": "pong"
}
1.3 節點通訊
雖然在我學習的過程中,3個節點的IP地址沒有發生過變化,但是因為之前3個節點沒有設定靜態地址,因此在開始學習ansible之前,我們希望通過hostname的方法進行節點的確定,而非IP地址。
在ansiblemaster節點上,我們新增兩個slave節點的資訊
sudo nano /etc/hosts
# 新增下面的IP和hostname
192.168.31.235 ansiblemaster
192.168.31.153 ansiblenode1
192.168.31.119 ansiblenode2
這樣,後續如果IP地址發生了變化,我們只需要在ansiblemaster節點上修改相應的hosts檔案即可。
測試一下
ping ansiblemaster
ping ansiblenode1
ping ansiblenode2
1.4 VS Code
因為Ansible的學習需要編寫YAML檔案,這裡採用VS Code作為編輯器。
但是需要注意的是,我沒有直接在ansiblemaster節點上安裝VS Code,而是安裝在了宿主機上。
直接安裝在ansiblemaster節點上會減少配置ssh remote的配置。
1.5 其他依賴
這部分的依賴會在使用過程中需要,當然也可以等問題遇到之後再安裝
# ansiblemaster節點
sudo apt install sshpass
2. Ansible學習
注意:因為工作的需要,才學習這個工具,實際應用中不需要了解具體的實現原理,因此這個學習筆記是以操作為主,直接跳過原理部分的介紹。
ansible在使用時,會有自己的預設的配置檔案,具體如下:
# 基本配置檔案
config file = /etc/ansible/ansible.cfg
# 叢集環境配置檔案
inventory file = /etc/ansible/hosts
如果使用者想要自定義以上的配置,有兩種選擇:
- 修改相應的檔案
- 過載上述檔案
2.1.1 開始
雖然我們已經通過ping
測試過三個節點的連通性,但這裡我們採用ansible的ping模組測試以下,作為Ansible學習的開端。
如果我們想測試以下ansiblemaster與其他節點的連通,可以利用下列命令:
ansible all -m ping
結果提示:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the
implicit localhost does not match 'all'
這就是在本節開頭說的問題,叢集環境配置檔案中沒有進行配置,我們在下一節中解決。
2.1.2 連通性測試
在VSCode中建立folder,並在folder中新建檔案hosts,並修改其內容,推送到ansible master節點上執行。
ansible_node1 ansible_connection=ssh ansible_user=ubuntu ansible_ssh_pass=slavenode1
ansible_node2 ansible_connection=ssh ansible_user=ubuntu ansible_ssh_pass=slavenode2
替換自己的ansible_user 和 ansible_ssh_pass
測試連通
# ansiblemaster
ansible all -m ping -i hosts
如果報出如下錯誤
“msg”: "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host’s fingerprint to your known_hosts file to manage this host.
說明控制端和被控制端第一次通訊,需要先新增指紋資訊。
可以通過ssh先進行控制端和被控制端的通訊,建立後再次執行上述命令即可
對於叢集而言,僅需開啟ansible中的以下選項即可
host_key_checking = False
返回結果如下
ansiblenode2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
ansiblenode1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
當然,也可以只針對hosts配置檔案中的某個節點進行連通測試
ansible ansiblenode1 -m ping -i hosts
2.1.3 合理利用hosts
對於叢集中的節點,通常會有幾個功能明確的分組,假設node1負責功能邏輯,node2負責資料庫,要對這些節點進行管理,可以在hosts配置檔案中對其進行分組。
以下的這個例子有點單薄,我們對已有的兩個節點進行分組,修改hosts檔案
[web]
ansiblenode1 ansible_connection=ssh ansible_user=ubuntu ansible_ssh_pass=slavenode1
[db]
ansiblenode2 ansible_connection=ssh ansible_user=ubuntu ansible_ssh_pass=slavenode2
可以按分組進行連通性測試
ansible web -m ping -i hosts
2.1.4 SSH免密
這個步驟比較常規
後續的筆記等待gitee完成後更新。