歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ansible :一個配置管理和IT自動化工具

Ansible :一個配置管理和IT自動化工具

日期:2017/2/28 14:25:53   编辑:Linux教程

今天我來談談 ansible,一個由 Python 編寫的強大的配置管理解決方案。盡管市面上已經有很多可供選擇的配置管理解決方案,但他們各有優劣,而 ansible 的特點就在於它的簡潔。讓 ansible 在主流的配置管理系統中與眾不同的一點便是,它並不需要你在想要配置的每個節點上安裝自己的組件。同時提供的一個優點在於,如果需要的話,你可以在不止一個地方控制你的整個基礎架構。最後一點是它的正確性,或許這裡有些爭議,但是我認為在大多數時候這仍然可以作為它的一個優點。說得足夠多了,讓我們來著手在 RHEL/CentOS 和基於 Debian/Ubuntu 的系統中安裝和配置 Ansible。

Ansible批量搭建LAMP環境 http://www.linuxidc.com/Linux/2014-10/108264.htm

准備工作

  1. 發行版:RHEL/CentOS/Debian/Ubuntu Linux
  2. Jinja2:Python 的一個對設計師友好的現代模板語言
  3. PyYAML:Python 的一個 YAML 編碼/反編碼函數庫
  4. paramiko:純 Python 編寫的 SSHv2 協議函數庫 (譯者注:原文對函數庫名有拼寫錯誤)
  5. httplib2:一個功能全面的 HTTP 客戶端函數庫
  6. 本文中列出的絕大部分操作已經假設你將在 bash 或者其他任何現代的 shell 中以 root 用戶執行。

Ansible 如何工作

Ansible 工具並不使用守護進程,它也不需要任何額外的自定義安全架構,因此它的部署可以說是十分容易。你需要的全部東西便是 SSH 客戶端和服務器了。

  1. +-----------------++---------------+
  2. |安裝了Ansible的| SSH |文件服務器1|
  3. |Linux/Unix工作站|<------------------>|數據庫服務器2|在本地或遠程
  4. +-----------------+模塊|代理服務器3|數據中心的
  5. 192.168.1.100+---------------+Unix/Linux服務器

其中:

  1. 192.168.1.100 - 在你本地的工作站或服務器上安裝 Ansible。
  2. 文件服務器1到代理服務器3 - 使用 192.168.1.100 和 Ansible 來自動管理所有的服務器。
  3. SSH - 在 192.168.1.100 和本地/遠程的服務器之間設置 SSH 密鑰。

Ansible 安裝教程

ansible 的安裝輕而易舉,許多發行版的第三方軟件倉庫中都有現成的軟件包,可以直接安裝。其他簡單的安裝方法包括使用 pip 安裝它,或者從 github 裡獲取最新的版本。若想使用你的軟件包管理器安裝,在基於 RHEL/CentOS Linux 的系統裡你很可能需要 EPEL 倉庫。

在基於 RHEL/CentOS Linux 的系統中安裝 ansible

輸入如下 yum 命令:

  1. $ sudo yum install ansible

在基於 Debian/Ubuntu Linux 的系統中安裝 ansible

輸入如下 apt-get 命令:

  1. $ sudo apt-get install software-properties-common
  2. $ sudo apt-add-repository ppa:ansible/ansible
  3. $ sudo apt-get update
  4. $ sudo apt-get install ansible

使用 pip 安裝 ansible

pip 命令是一個安裝和管理 Python 軟件包的工具,比如它能管理 Python Package Index 中的那些軟件包。如下方式在 Linux 和類 Unix 系統中通用:

  1. $ sudo pip install ansible

從源代碼安裝最新版本的 ansible

你可以通過如下命令從 github 中安裝最新版本:

  1. $ cd ~
  2. $ git clone git://github.com/ansible/ansible.git
  3. $ cd ./ansible
  4. $ source ./hacking/env-setup

當你從一個 git checkout 中運行 ansible 的時候,請記住你每次用它之前都需要設置你的環境,或者你可以把這個設置過程加入你的 bash rc 文件中:

  1. # 加入 BASH RC
  2. $ echo "export ANSIBLE_HOSTS=~/ansible_hosts">>~/.bashrc
  3. $ echo "source ~/ansible/hacking/env-setup">>~/.bashrc

ansible 的 hosts 文件包括了一系列它能操作的主機。默認情況下 ansible 通過路徑 /etc/ansible/hosts 查找 hosts 文件,不過這個行為也是可以更改的,這樣當你想操作不止一個 ansible 或者針對不同的數據中心的不同客戶操作的時候也是很方便的。你可以通過命令行參數 -i 指定 hosts 文件:

  1. $ ansible all -m shell -a "hostname"--ask-pass-i /etc/some/other/dir/ansible_hosts

不過我更傾向於使用一個環境變量,這可以在你想要通過 source 一個不同的文件來切換工作目標的時候起到作用。這裡的環境變量是 $ANSIBLE_HOSTS,可以這樣設置:

  1. $ export ANSIBLE_HOSTS=~/ansible_hosts

一旦所有需要的組件都已經安裝完畢,而且你也准備好了你的 hosts 文件,你就可以來試一試它了。為了快速測試,這裡我把 127.0.0.1 寫到了 ansible 的 hosts 文件裡:

  1. $ echo "127.0.0.1">~/ansible_hosts

現在來測試一個簡單的 ping:

  1. $ ansible all -m ping

或者提示 ssh 密碼:

  1. $ ansible all -m ping --ask-pass

我在剛開始的設置中遇到過幾次問題,因此這裡強烈推薦為 ansible 設置 SSH 公鑰認證。不過在剛剛的測試中我們使用了 --ask-pass,在一些機器上你會需要安裝 sshpass 或者像這樣指定 -c paramiko:

  1. $ ansible all -m ping --ask-pass-c paramiko

當然你也可以安裝 sshpass,然而 sshpass 並不總是在標准的倉庫中提供,因此 paramiko 可能更為簡單。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-11/109365p2.htm

Copyright © Linux教程網 All Rights Reserved