ansible 服務器批量管理

選擇ansible的緣由

不須要安裝安裝客戶端,採用ssh鏈接,小規模服務器方便無壓力linux

安裝ansible

本次採用docker的方式安裝ansible,這樣跨平臺部署方便,windows,linux,mac 均可以快速的安裝部署。 已經寫好了配置文件,只須要執行如下命令既可安裝和啓動ansibledocker

cd ansible
# build 鏡像
docker-compose build
# 啓動container
docker-compose up -d

# 進入container 並執行ansible 命令
cary@caoleideMacBook-Pro:~/Code/ansible$ docker-compose exec ansible bash
bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
[console]# ansible-playbook app.yml  -k
sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
SSH password:

PLAY [ansible playbook] ***********************************************************************************************************************************************
sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)

TASK [Gathering Facts] ************************************************************************************************************************************************
ok: [192.168.33.12]
ok: [192.168.33.11]
ok: [192.168.33.13]

TASK [copy file] ******************************************************************************************************************************************************
changed: [192.168.33.12]
changed: [192.168.33.11]
changed: [192.168.33.13]

RUNNING HANDLER [up status] *******************************************************************************************************************************************
changed: [192.168.33.13]
changed: [192.168.33.11]
changed: [192.168.33.12]

RUNNING HANDLER [restart docker] **************************************************************************************************************************************
changed: [192.168.33.12]
changed: [192.168.33.11]
changed: [192.168.33.13]

PLAY RECAP ************************************************************************************************************************************************************
192.168.33.11              : ok=4    changed=3    unreachable=0    failed=0
192.168.33.12              : ok=4    changed=3    unreachable=0    failed=0
192.168.33.13              : ok=4    changed=3    unreachable=0    failed=0

[console]#

次命令執行了文件的拷貝,拷貝完成後執行程序的啓動並判斷狀態windows

定義一組任務

輸入圖片說明 上圖的配置文件定義了一組任務,bash

  • hosts 是指所須要管理的服務器組, all 表明全部,也能夠指定組名
  • remote_user 是經過ssh遠程鏈接使用的用戶名
  • become 參數是指是否啓用sudo 來提升權限,若是是root用戶此參數就沒有意義
  • tasks 定義一組任務 一個name是一個任務的名稱,其中copy是ansible的文件拷貝模塊(其實是rsync)只同步有變化的文件,src是指源文件,dest是指遠程服務器上的目錄。
  • handlers 是一些命令,tasks中能夠經過notify通知它裏面的一個或多個命令,等tasks執行完後再執行handlers中的命令。

輸入圖片說明

定義被管理的服務器

hosts 配置文件定義的是被管理服務器的ip地址或主機名 [swarm]是組名的寫法,能夠經過指定組名批量管理組中的服務器服務器

執行任務組

ansible-playbook app.yml  -k

執行一組命令使用 ansible-playbook 並指定定義命令的配置文件(採用yml)格式app

  • 參數 -k 是指使用密碼 由於在app.yml中已經指定用戶,全部這裏輸入的密碼是此用戶的密碼
相關文章
相關標籤/搜索