ansible是一個一鍵部署服務的軟體,類似于saltstack,puppet,但是與後者不同的是,ansible是依賴于ssh連接配接去執行對應的部署,而後兩者是要在需要部署的機器上裝agent才可以完成部署,那我如果需要部署相同配置的100台伺服器,用ssh連接配接的方法就顯得很高效了。
ansible 10.1.1.60 -m ping
上面這條指令表示用ansible去ping這個ip的主機,-m表示調用ping這個子產品,當然ansible還有很多子產品,具體看我們在什麼環境下使用什麼樣的子產品,但是這條指令有兩個條件才可以執行
1,被ping的主機與ansible所在的主機可以通過ssh連接配接,有這個服務
2,被ping的主機确定已經添加到ansible的管理清單中
在進行ansinle的操作時候,首先ansible需要一個自己的獨立的epel源,建議使用阿裡雲或者epel的源比較好,當源配置完成後,就直接yum install ansible安裝成功
阿裡源:
pwd
/etc/yum.repos.d
cat aliBase.repo
[aliBase]
name=aliBase
baseurl=
https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=
$releasever/os/$basearch/RPM-GPG-KEY-CentOS-$releasever
假設我有四台主機,1,2,3,4
要通過1來管理其他三台,需要在裝有ansible的1上的/etc/ansible/hosts中配置相關的清單
那我們在hosts中直接寫入1的ip:10.1.1.60
再執行我們之前的ping指令看看會發生什麼:

很明顯不行,是因為格式錯誤,而正确的格式應該是:
是以ansible的配置清單一定要注意格式的書寫
那麼在進行執行指令和配置清單之前還有一項重要的操作,那就是為了避免每次ssh連接配接的時候需要登入密碼:
是以我們可以在ansible主機上做一個ssh-keygen的免密認證,就是生成公鑰和私鑰後将公鑰交給我們需要連接配接的主機,避免了每次連接配接需要輸入密碼:
可以看到在使用者的家目錄下生成了一堆的公鑰和私鑰
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
我們可以通過上面這條指令将我們生成的公鑰交給177這台主機
輸入一次密碼後現在已經完成了認證,
現在我們再次試一下連接配接看用不用密碼:
很明顯不用
好了,繼續講我們的ansible
那麼在進行完公鑰認證後,我們ansible的hosts清單中就不需要配置使用者和密碼這一項了,直接演變成如下:
那麼如果我們需要管理多個伺服器,ssh生成的密鑰肯定不止一個,需要不同的密鑰去對應管理不同的伺服器,我們需要ssh-agent來管理我們的多對密鑰,ssh-agent會在下一篇部落格有所介紹,今天的ansible先有個初步的了解