ansible是當下比較流行的自動化運維工具,可通過ssh協議對遠端伺服器進行集中化的配置管理、應用部署等,常結合jenkins來實現自動化部署。
除了ansible,還有像saltstack、fabric(曾經管理100多台伺服器上的應用時也曾受益於它)、puppet等自動化工具。相比之下,ansible最大的優勢就是無需在被管理主機端部署任何客戶端**程式,通過ssh通道就可以進行遠端命令的執行或配置的下發,足夠輕量級,但同時功能非常強大,且各項功能通過模組來實現,具備良好的擴充套件性。不足之處是ansible只支援在linux系統上安裝,不支援windows。
如果你需要在多於一台伺服器上做相同的操作,那麼建議你使用ansible之類的自動化工具,這將極大提高你的操作效率。
1.找一台主機用於做管理伺服器,在其上安裝ansible
yum -y install ansible
ansible基於python實現,一般linux系統都自帶python,所以可以直接使用yum安裝或pip安裝。
安裝完後,在/etc/ansible/目錄下生成三個主要的檔案或目錄,
[root@tool-server ~]# ll /etc/ansible/
total 24
-rw-r--r--. 1 root root 19179 jan 30 2018 ansible.cfg
-rw-r--r--. 1 root root 1136 apr 17 15:17 hosts
drwxr-xr-x. 2 root root 6 jan 30 2018 roles
2.在/etc/ansible/hosts檔案中新增需要被管理的伺服器節點
[root@tool-server ~]# vim /etc/ansible/hosts
[k8s]
192.168.40.201
192.168.40.202
192.168.40.205
192.168.40.206
[k8s]
表示將下面的伺服器節點分到k8s的組中,後面執行命令時可指定針對某個組執行。
3.生成ssh key,並copy到被管理節點上,實現免密ssh訪問
在管理節點執行ssh-keygen
生成ssh key,然後copy到各被管理節點上
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
上面命令將~/.ssh/id_rsa.pub
檔案內容新增到被管理節點的/root/.ssh/authorized_keys檔案中,實現管理節點到被管理節點的免密ssh訪問。
4.除錯ansible
針對k8s伺服器組執行ping,驗證ansible到各被管理節點的連通性
[root@tool-server ~]# ansible k8s -m ping
192.168.40.201 | success =>
192.168.40.205 | success =>
192.168.40.202 | success =>
192.168.40.206 | success =>
ansible只需要在管理主機上安裝,然後打通管理主機到各被管理主機的ssh免密訪問即可進行集中化的管理控制,不需在被管理主機安裝任何**程式。
ansible的命令格式為,ansible 主機群組名 -m 命令模組名 -a "批量執行的操作"
其中-m不是必須的,預設為command模組,-a也不是必須的,表示命令模組的引數,比如前面的ping模組就沒有引數。
可以使用ansible-doc -l
列出所有可用的命令模組,ansible-doc -s 模組名
檢視指定模組的引數資訊
常用命令模組
1.command
command是ansible的預設模組,不指定-m引數時預設使用command。command可以執行遠端主機許可權範圍內的所有shell命令,但不支援管道操作
# 檢視k8s分組主機記憶體使用情況
ansible k8s -m command -a "free -g"
2.shell
shell基本與command相同,但shell支援管道操作
#shell支援管道操作 |grep mem
ansible k8s -m shell -a "free -g|grep mem"
3.script
script就是在遠端主機上執行管理端儲存的shell指令碼檔案,相當於scp+shell
# /root/echo.sh為管理端本地shell指令碼
ansible k8s -m script -a "/root/echo.sh"
4.copy
copy實現管理端到遠端主機的檔案拷貝,相當於scp
#拷貝本地echo.s**件到k8s組中遠端主機的/tmp目錄下,所屬使用者、組為 root ,許可權為 0755
ansible k8s -m copy -a "src=/root/echo.sh dest=/tmp/ owner=root group=root mode=0755"
5.yum
軟體包安裝或刪除
ansible k8s -m yum -a "name=wget state=latest"
其中state有如下取值:
紐約州長:抗體測試顯示紐約或270萬人感染新冠病毒
簡單來說一下ui route
ui router被認為是angularui為開發者提供的最實用的乙個模組,它是乙個讓開發者能夠根據url狀態或者說是 機器狀態 來組織和控制介面ui的渲染,而不是僅僅只改變路由 傳統angularjs應用實用的方式 該模組為開發者提供了很多最檢視 view 額外的控制。開發者可以建立巢狀分層的檢視...
請你來說一下共享記憶體相關api
linux允許不同程序訪問同乙個邏輯記憶體,提供了一組api,標頭檔案在sys shm.h中。1 新建共享記憶體shmget int shmget key t key,size t size,int shm key 共享記憶體鍵值,可以理解為共享記憶體的唯一性標記。size 共享記憶體大小 shmf...
Linux環境下的find命令簡明教程
find命令是unix系統中最為古老與複雜的命令之一,它功能強大,可以根據不同的標準在任何位置搜尋任何檔案。find命令的基本思想即搜尋乙個或者多個目錄樹,根據使用者指定的測試條件,查詢符合特定標準的檔案。當查詢完成之後,find命令將對查詢到的檔案執行指定的操作。這些操作可簡可繁,簡單的例如僅輸出...