Ansible 是一個開源自動化工具,可以從中央控制節點統一配置伺服器、安裝軟體或執行各種 IT 任務。它採用一對多、無客戶端的機制,從控制節點上透過 SSH 傳送指令給遠端的客戶機來完成任務(當然除了 SSH 外也可以用別的協議)。
Ansible 的主要使用群體是系統管理員,他們經常會週期性地執行一些安裝、配置應用的工作。儘管如此,一些非特權使用者也可以使用 Ansible,例如資料庫管理員就可以透過 Ansible 用 mysql
這個使用者來建立資料庫、新增資料庫使用者、定義訪問許可權等。
讓我們來看一個簡單的使用場景,一位系統管理員每天要配置 100 臺伺服器,並且必須在每臺機器上執行一系列 Bash 命令,然後交付給使用者。
這是個簡單的例子,但應該能夠證明:在 yaml 檔案裡寫好命令然後在遠端伺服器上執行,是一件非常輕鬆的事。而且如果執行環境不同,就可以加入判斷條件,指明某些命令只能在特定的伺服器上執行(如:只在那些不是 Ubuntu 或 Debian 的系統上執行 yum
命令)。
Ansible 的一個重要特性是用劇本來描述一個計算機系統的最終狀態,所以一個劇本可以在伺服器上反覆執行而不影響其最終狀態(LCTT 譯註:即是冪等的)。如果某個任務已經被實施過了(如,“使用者 sysman
已經存在”),那麼 Ansible 就會忽略它繼續執行後續的任務。
定義
這些定義以及它們之間的關係可以用下圖來描述:
請註意上面的例子只是組織任務的方式之一,我們當然也可以把安裝資料庫和安裝 web 伺服器的劇本拆開,放到不同的角色裡。Ansible 星繫上最常見的角色是獨立安裝、配置每個應用服務,你可以參考這些安裝 mysql[3] 和 httpd 的例子。
編寫劇本的小技巧
學習 Ansible 最好的資源是其官方檔案[5]。另外,像學習其他東西一樣,搜尋引擎是你的好朋友。我推薦你從一些簡單的任務開始,比如安裝應用或建立使用者。下麵是一些有用的指南:
--check-mode
引數 )。/etc/ansible/hosts
裡定義的主機名都可以被正確解析。StrictHostKeyChecking
設定成 “no”)。總結一下
Ansible 是你在資料中心裡實施運維自動化的好選擇,因為它:
你是怎樣使用 Ansible 讓資料中心更加自動化的呢?請在評論中分享您的經驗。
via: https://opensource.com/article/18/2/tips-success-when-getting-started-ansible
作者:Jose Delarosa[7] 譯者:jdh8383 校對:wxy