Ansible學習筆記--Ansible安裝及使用方法

Ansible是一個簡單高效的自動化運維管理工具,用Python開發,集合了衆多運維工具(puppet, chef等)的優點,可用於管理大批量機器,實現併發地在多臺機器上部署應用、安裝軟件、執行命令、配置和編排任務。

安裝

Ansible官方文檔中提供了不同環境下的安裝方法,這裏的是Ubuntu下使用apt進行最新版本的安裝,當然也可以使用源碼進行安裝。

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible

優勢

Ansible雖然很簡單,但是相比其他運維工具仍然具有很多優勢,比如:
- 比較輕量級,而且無需在被管理節點上安裝agent,也無需在管理節點上啓動服務;
- 配置簡單,默認使用ssh協議對節點進行管理;
- 可將批量任務寫成腳本執行,而且不用提前分發到遠程節點上;
- 支持API及自定義模塊,可通過Python輕鬆擴展

Ansible核心組件

Ansible架構圖

Ansible包含如下核心組件:
1. Connection Plugins: 用於與其他主機進行通信。
2. Host Inventory: 記錄了由ansible管理的主機信息,包括IP端口,登錄用賬號密碼等等。
3. Modules(Core/Custom): 用於執行具體的任務。Ansible只作爲框架,執行任務並不是由自己完成,而是由modules來完成,modules分爲Core和自定義模塊。
4. Playbooks: 劇本,yaml格式的文件,用於定義批量任務。

Ansible執行過程

Ansible執行過程

使用樣例

這裏我們的機器拓撲如下,在測試之前我們需要在每一個Linux節點上啓動ssh服務。

  • 192.168.1.6 server0 管理節點
  • 192.168.1.8 server1 被管理的linux節點
  • 192.168.1.7 win1 被管理的windows節點

在管理節點192.168.1.6上面完成Ansible的安裝之後,會自動創建/etc/ansible文件夾,該文件夾下的ansible.cfg爲ansible配置文件,hosts爲默認的inventory。

我們在hosts文件中增加server1的主機信息,如下:

[server1]
192.168.1.8

然後運行ping模塊,測試機器聯通性,此時需要手動輸入server1的密碼。這裏可以使用-i選項指定特定的inventory文件,不指定則默認使用hosts文件。

$ ansible server1 -u root -k -m ping
SSH password: 
192.168.1.8 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}

我們也可以通過提前運行ssh-copy-id命令將server0的公鑰拷貝到server1上實現免密碼登錄,或者在inventory中提前配置好賬號密碼,這樣就不用每次手動輸入了,配置信息如下:

[server1]
192.168.1.8 ansible_ssh_user="root" ansible_ssh_pass="admin123"

然後使用如下命令進行訪問。

$ ansible server1 -m ping
192.168.1.8 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}

常用模塊

管理Linux節點的常用模塊有:
- command, script, shell: 遠程命令模塊
- copy: 用於拷貝文件到目標機器
- stat: 獲取遠程文件狀態信息
- get_url: 用於在遠程主機上下載指定url到本地
- apt, yum: 執行linux平臺軟件包管理操作
- cron: 配置遠程主機crontab任務
- file: 設置文件屬性
- service: 遠程主機服務管理

完整的模塊列表可以參考官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章