Ansible 詳細用法部署安裝

摘要: absible 部署安裝python

#1、概述
運維工具按需不須要有代理程序來劃分的話分兩類:shell

agent(須要有代理工具):基於專用的agent程序完成管理功能,puppet, func, zabbixubuntu

agentless(無須代理工具):基於ssh服務完成管理,ansible, fabric
#2、簡介vim

  Ansible是一個簡單的自動化運維管理工具,基於Python語言實現,由Paramiko和PyYAML兩個關鍵模塊構建,可用於自動化部署應用、配置、編排task(持續交付、無宕機更新等)。主版本大概每2個月發佈一次。ruby

  Ansible與Saltstack最大的區別是Ansible無需在被控主機部署任何客戶端代理,默認直接經過SSH通道進行遠程命令執行或下發配置:相同點是都具有功能強大、靈活的系統管理、狀態配置,二者都提供豐富的模板及API,對雲計算平臺、大數據都有很好的支持。bash

1.特色

  • 部署簡單,只需在主控端部署Ansible環境,被控端無需作任何操做; 默認使用SSH協議對設備進行管理;
  • 主從集中化管理;
  • 配置簡單、功能強大、擴展性強;
  • 支持API及自定義模塊,可經過Python輕鬆擴展;
  • 經過Playbooks來定製強大的配置、狀態管理;
  • 對雲計算平臺、大數據都有很好的支持;
  • 提供一個功能強大、操做性強的Web管理界面和REST API接口——AWX平臺。
  • 冪等性:一種操做重複屢次結果相同

簡評:
(1)、輕量級,無需在客戶端安裝agent,更新時,只需在操做機上進行一次更新便可;
(2)、批量任務執行能夠寫成腳本,並且不用分發到遠程就能夠執行;
(3)、使用python編寫,維護更簡單,ruby語法過於複雜;
(4)、支持sudo。
二、Ansible架構圖
QQ_20170524110419服務器

Ansible核心組件說明:架構

  • Ansible:Ansible的核心程序
  • Host Lnventory:記錄了每個由Ansible管理的主機信息,信息包括ssh端口,root賬號密碼,ip地址等等。能夠經過file來加載,能夠經過CMDB加載less

  • Playbooks:YAML格式文件,多個任務定義在一個文件中,使用時能夠統一調用,「劇本」用來定義那些主機須要調用那些模塊來完成的功能.運維

  • Core Modules:Ansible執行任何管理任務都不是由Ansible本身完成,而是由核心模塊完成;Ansible管理主機以前,先調用core Modules中的模塊,而後指明管理Host Lnventory中的主機,就能夠完成管理主機。

  • Custom Modules:自定義模塊,完成Ansible核心模塊沒法完成的功能,此模塊支持任何語言編寫。

  • Connection Plugins:鏈接插件,Ansible和Host通訊使用

三、ansible執行過程,其中暖色調的表明已經模塊化。
screenshot

3、基礎環境的安裝與配置

一、ssh免密登陸 配置 一直回車
```ssh-keygen -N ''

二、shell腳本複製到101-150服務器 ```for i in `seq 101 150` do /usr/bin/expect << EOF spawn ssh-copy-id bfadmin@192.168.100.$i expect { "yes/no" { send "yes\r"; exp_continue; } "*password" { send "P@ssw0rd\r" } } expect "~$ " send "exit\r" expect eof EOF done 

三、安裝Ansible 環境 及pssh 環境包

sudo sed  -i  -re  's/\w+\.archive\.ubuntu\.com/archive.ubuntu.com/g' /etc/apt/sources.list sudo apt-get update sudo wget http://www.theether.org/pssh/pssh-1.4.3.tar.gz #下載PSSH安裝包 tar zxvf pssh-1.4.3.tar.gz cd pssh-1.4.3 sudo wget 'http://peak.telecommunity.com/dist/ez_setup.py' sudo python ez_setup.py sudo python setup.py install sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get install ansible 

4.配置文件
/etc/ansible/ansible.cfg

host_key_checking = False

5.主機清單
/etc/ansible/hosts

6.ansible命令的使用說明
經常使用選項

ansible -m MOD_NAME -a MOD_ARGS
表示調用什麼模塊,使用模塊的那些參數

ansible -h

[root@localhost ~]# ansible -h
Usage: ansible [options]

Options:
-a MODULE_ARGS, --args=MODULE_ARGS 模塊的參數,若是執行默認COMMAND的模塊,便是命令參數,如:「date」,"pwd"等等
module arguments 模塊參數
-k, --ask-pass ask for SSH password 登陸密碼,提示輸入SSH密碼而不是假設基於密鑰的驗證
--ask-su-pass ask for su password su切換密碼
-K, --ask-sudo-pass ask for sudo password 提示密碼使用sudo,sudo表示提權操做
--ask-vault-pass ask for vault password
-B SECONDS, --background=SECONDS 後臺運行超時時間
run asynchronously, failing after X seconds
(default=N/A)
-C, --check don't make any changes; instead, try to predict some 只是測試一下會改變什麼內容,不會真正去執行;相反,試圖預測一些可能發生的變化
of the changes that may occur
-c CONNECTION, --connection=CONNECTION 鏈接類型使用。可能的選項是paramiko(SSH),SSH和地方。當地主要是用於crontab或啓動。
connection type to use (default=smart)
-f FORKS, --forks=FORKS 並行任務數。NUM被指定爲一個整數,默認是5
specify number of parallel processes to use
(default=5)
-h, --help show this help message and exit 打開幫助文檔API
-i INVENTORY, --inventory-file=INVENTORY 指定庫存主機文件的路徑,默認爲/etc/ansible/hosts
specify inventory host file
(default=/etc/ansible/hosts)
-l SUBSET, --limit=SUBSET 進一步限制所選主機/組模式 --limit=192.168.91.135 只對這個ip執行
further limit selected hosts to an additional pattern
--list-hosts outputs a list of matching hosts; does not execute
anything else
-m MODULE_NAME, --module-name=MODULE_NAME 執行模塊的名字,默認使用 command 模塊,因此若是是隻執行單一命令能夠不用 -m參數
module name to execute (default=command)
-M MODULE_PATH, --module-path=MODULE_PATH 要執行的模塊的路徑,默認爲/usr/share/ansible/
specify path(s) to module library
(default=/usr/share/ansible/)
-o, --one-line condense output 壓縮輸出,摘要輸出.嘗試一切都在一行上輸出。
-P POLL_INTERVAL, --poll=POLL_INTERVAL 調查背景工做每隔數秒。須要- b
set the poll interval if using -B (default=15)
--private-key=PRIVATE_KEY_FILE 私鑰路徑,使用這個文件來驗證鏈接
use this file to authenticate the connection
-S, --su run operations with su 用 su 命令
-R SU_USER, --su-user=SU_USER 指定SU的用戶,默認是root用戶
run operations with su as this user (default=root)
-s, --sudo run operations with sudo (nopasswd)
-U SUDO_USER, --sudo-user=SUDO_USER sudo到哪一個用戶,默認爲 root
desired sudo user (default=root)
-T TIMEOUT, --timeout=TIMEOUT 指定SSH默認超時時間, 默認是10S
override the SSH timeout in seconds (default=10)
-t TREE, --tree=TREE log output to this directory 將日誌內容保存在該輸出目錄,結果保存在一個文件中在每臺主機上。
-u REMOTE_USER, --user=REMOTE_USER 遠程用戶, 默認是root用戶
connect as this user (default=root)
--vault-password-file=VAULT_PASSWORD_FILE
vault password file
-v, --verbose verbose mode (-vvv for more, -vvvv to enable 詳細信息
connection debugging)
--version show program's version number and exit 輸出ansible的版本

相關文章
相關標籤/搜索