ansible入門--安裝、配置與執行介紹

概念介紹

        Ansible是一個開源配置管理工具,可以使用它來自動化任務,部署應用程序實現IT基礎架構。Ansible可以用來自動化日常任務,比如,服務器的初始化配置、安全基線配置、更新和打補丁系統,安裝軟件包等。Ansible架構相對比較簡單,僅需通過SSH連接客戶機執行任務即可

術語介紹

Ansible的與節點有關的重要術語包括控制節點,受管節點,清單和主機文件:

控制節點(Control node):指安裝了Ansible的主機,也叫Ansible服務器端,管理機。 Ansible控制節點主要用於發佈運行任務,執行控制命令。Ansible的程序都安裝在控制節點上,控制節點需要安裝Python和Ansible所需的各種依賴庫。注意:目前Ansible還不能安裝在Windows下。

受控節點(Managed nodes):也叫客戶機,就是想用Ansible執行任務的客戶服務器。

清單(Inventory):受控節點的列表,就是所有要管理的主機列表。

host文件:清單列表通常保存在一個名爲host文件中。在host文件中,可以使用IP地址或者主機名來表示具體的管理主機和認證信息,並可以根據主機的用戶進行分組。缺省文件:/etc/ansible/hosts,可以通過-i指定自定義的host文件。

模塊(Modules):模塊是Ansible執行特定任務的代碼塊。比如:添加用戶,上傳文件和對客戶機執行ping操作等。Ansible現在默認自帶450多個模塊,,Ansible Galaxy公共存儲庫則包含大約1600個模塊。

任務(Task):是Ansible客戶機上執行的操作。可以使用ad-hoc單行命令執行一個任務。

劇本(Playbook):是利用YAML標記語言編寫的可重複執行的任務的列表,playbook實現任務的更便捷的讀寫和貢獻。Playbook可以理解爲是多個ad-hoc單行命令組合在一起形成業務流程或者執行計劃共同執行,在Github上有大量的Ansible playbooks共享,你要你有一雙善於發現的眼睛你就能找到大量的寶藏。

角色(roles):角色是Ansible 1.2版本引入的新特性,用於層次性、結構化地組織playbook。roles能夠根據層次型結構自動裝載變量文件、tasks以及handlers等。

安裝

Ansible可以運行在任何機器上,但是對管理機有一定要求。管理機應安裝Python 2(2.7)或Python 3(3.5或更高版本),另外,管理機不支持Windows控制節點。我們可以使用Linux發行版包管理器、源碼安裝或者Python包管理器(PIP)來安裝Ansible,下面演示使用yum進行安裝

安裝epel倉庫

Ansible倉庫默認不在yum倉庫中,因此我們需要使用下面的命令啓用epel倉庫。

sudo yum install epel-release -y

安裝ansible

sudo yum install ansible –y

驗證安裝是否成功

執行ansible命令

出現下面畫面說明安裝成功

配置

ansible 程序結構

安裝目錄如下(yum安裝):
  配置文件目錄:/etc/ansible/
  執行文件目錄:/usr/bin/
  Lib庫依賴目錄:/usr/lib/pythonX.X/site-packages/ansible/
  Help文檔目錄:/usr/share/doc/ansible-X.X.X/
  Man文檔目錄:/usr/share/man/man1/

常用配置項

ansible 的配置文件爲/etc/ansible/ansible.cfg,ansible 有許多參數,下面我們列出一些常見的參數:

  1. inventory = /etc/ansible/hosts #這個參數表示資源清單inventory文件的位置
  2. library = /usr/share/ansible #指向存放Ansible模塊的目錄,支持多個目錄方式,只要用冒號(:)隔開就可以
  3. forks = 5 #併發連接數,默認爲5
  4. sudo_user = root #設置默認執行命令的用戶
  5. remote_port = 22 #指定連接被管節點的管理端口,默認爲22端口,建議修改,能夠更加安全
  6. host_key_checking = False #設置是否檢查SSH主機的密鑰,值爲True/False。關閉後第一次連接不會提示配置實例
  7. timeout = 10 #設置SSH連接的超時時間,單位爲秒
  8. log_path = /var/log/ansible.log #指定一個存儲ansible日誌的文件(默認不記錄日誌)

修改Inventory列表

默認清單配置文件位於/etc/ansible/hosts中,但是通過ansible.cfg配置文件中修改此位置。也可以通過-i自定義hosts清單。

爲了安全起見,筆者建議不要直接在/etc/ansible/host配置清單,尤其是有用戶認證等信息時候。對於長期不執行ansible可以將host文件加密鎖定,防止信息泄露,引起安全事故

清單文件格式如下:

[platform]

Hadoop1

Hadoop2

Hadoop3

Kafka

Zookeeper

Elasticsearch

Postgresql

[web]

active

standby

可以對不同用途分組,用[]指定分組名。

執行

Ansible有兩種執行模式,ad-hoc以及playbook

        ad-hoc命令行是我們可以隨手執行的單個ansible任務,是ansible任務快速執行方式。對於一些快速獲取的任務使用ad-doc命令非常簡便有效,而且有助於我們學習和熟悉Ansible的使用。

        Playbook 是Ansible提供的最強大的任務執行方法。與ad-hoc命令不同,Playbooks配置在文件中,可以重用和共享給其他人。

        Playbooks是以YAML標記語言來定義的。每個playbook由一個或多個play組成。play的目標是將一組主機映射到任務中去。每個play包含一個或多個任務,這些任務每次執行一次。

        可以簡單的理解,Playbook就是多個ad-hoc進行編排後按照一定的邏輯進行執行的一個ad-hoc命令集

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