來說一下Ansible的簡明教程

2021-10-05 09:55:44 字數 2846 閱讀 8699

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命令將對查詢到的檔案執行指定的操作。這些操作可簡可繁,簡單的例如僅輸出...