Ansible安裝配置及命令使用詳解


Ansible和saltstack目前市面上一些其它的項目管理工具有很大的不同,它的設計初衷就是為了更方便、快捷的進行配置管理。它易於安裝和使用、語法也非常簡單易學。你可以用Ansible將平常復雜的配置工作變得簡單,變得更加標准化更容易控制。

Ansible只需要在一台普通的服務器上運行即可,不需要在被管控的服務器上安裝客戶端。因為它是基於SSH的,Linux服務器離不開SSH,所以Ansible不需要為配置工作添加額外的支持。 你可以通過命令行來使用Ansible,運行Ansible的服務器這里俗稱“管理節點”;通過Ansible進行管理的服務器俗稱“受控節點”。

Ansible是一款極為靈活的開源工具套件,能夠大大簡化Unix管理員的自動化配置管理與流程控制方式。它利用推送方式對客戶系統加以配置,這樣所有工作都可在主服務器端完成。其命令行機制同樣非常強大,允許大家利用商業許可Web UI實現授權管理與配置。

Ansible優點:

1) 輕量級,不需要去客戶端安裝agent,更新時,只需要在操作機上進行一次更新即可,采用SSH協議(免密鑰)。        

2) 批量任務執行可以寫成腳本,而且不用分發到遠程就可以執行。        

3) 使用python編寫的,維護更簡單。        

4) 支持sudo普通用戶命令。

 

Ansible安裝配置

Ansible 能夠安裝到 Linux、BSD、Mac OS X 等平台,Python 版本最低要求為 2.6。

CentOS直接使用yum安裝即可,安裝之前先安裝epel源碼。

rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm 

然后執行命令: yum install ansible -y 安裝即可。

安裝完后正式來使用,ansible默認配置文件路徑為:

/etc/ansible:

常見的命令參數有:

默認hosts內容可以配置分組,我們可以定義各種ip及規則,內容如下(自動化的前提就是ssh互通免密鑰):

  • Ansible日常使用

ansible -i  /etc/ansible/hosts  all  -a  “date”

可以單獨匹配某個組

這里可以單獨匹配ip段

ansible主要參數如下:

-u  username          指定ssh連接的用戶名,即執行后面命令的用戶

-i  inventory_file    指定所使用的inventory文件的位置,默認為/etc/ansible/hosts

-m  module     指定使用的模塊,默認為command,常見模塊有command、shell、script、yum、copy等等

-f  10                指定並發數,並發量大的時候,提高該值

--sudo  [-k]       當需要root權限執行的化,-k參數用來輸入root密碼。

-a            指定模塊的參數,可以是命令等等。

  • Ansible正則表達式使用

ansible  192.168.33.*  -m  command  -a  "df -h"

  • 遠程批量拷貝文件或者目錄

ansible all -m copy -a 'src=/etc/passwd  dest=/tmp/  mode=755 owner=root' 

  • Ansible YUM遠程批量安裝

Ansible  192.168.*  -m  yum -a  "name=sysstat,screen,ntpdate   state=installed"

 

 Playbook配置管理

我們使用如上這些命令可以快速利用Ansible的工具編寫腳本、從而以非常簡便的方式實現任務處理的自動化與流程化。

除此之外,我們還可以創建Ansible Playbook以收集命令與任務集,這樣能夠大大降低管理工作的復雜程度。

Playbook采用YAML語法結構,因此它們一般比較易於閱讀並加以配置,如下簡單案例使用playbook實現在客戶端安裝screen軟件。

/etc/ansible/目錄下,新建screen.yaml文件,內容如下:

- hosts: all

  remote_user: root

  tasks:

  - name: yum install screen

    shell: yum install screen -y

文件解析:-hosts:all指定對所有hosts生效,remote_user表示遠程root,tasks表示需要執行的任務;name顯示的名稱,shell后面接:需要在遠程客戶端執行的命令。可以寫多個命令,以;分號隔開即可,例如 shell: yum install screen -y ;mkdir /tmp/`date +%Y%m%d`

當然了,我們還可以定義各種不同的playbook類型,如下我們可以定義源碼安裝Nginx或者yum安裝LAMP論壇。

執行結果如下圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM