自動化運維工具Ansible詳細部署
==========================================================================================
一、基礎介紹
==========================================================================================
1、簡介
ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。
(1)、連線外掛connection plugins:負責和被監控端實現通訊;
(2)、host inventory:指定操作的主機,是一個配置檔案裡面定義監控的主機;
(3)、各種模組核心模組、command模組、自定義模組;
(4)、藉助於外掛完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性執行多個任務。
2、總體架構
3、特性
(1)、no agents:不需要在被管控主機上安裝任何客戶端;
(2)、no server:無伺服器端,使用時直接執行命令即可;
(3)、modules in any languages:基於模組工作,可使用任意語言開發模組;
(4)、yaml,not code:使用yaml語言定製劇本playbook;
(5)、ssh by default:基於SSH工作;
(6)、strong multi-tier solution:可實現多級指揮。
4、優點
(1)、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;
(2)、批量任務執行可以寫成指令碼,而且不用分發到遠端就可以執行;
(3)、使用python編寫,維護更簡單,
(4)、支援sudo。
5、任務執行流程
說明:
(1)、以上內容大多是基於他人分享的基礎上總結而來,學習借鑑之用;
(2)、本次安裝基於 CentOS 6.4系統環境。
==========================================================================================
二、Ansible基礎安裝與配置
==========================================================================================
1、Ansible基礎安裝
(1)、python2.7安裝
# tar xvzf Python-2.7.8.tgz
# cd Python-2.7.8
# ./configure --prefix=/usr/local
# make --jobs=`grep processor/proc/cpuinfo | wc -l`
# make install
## 將python標頭檔案拷貝到標準目錄,以避免編譯ansible時,找不到所需的標頭檔案
# cd /usr/local/include/python2.7
# cp -a ./* /usr/local/include/
## 備份舊版本的python,並符號連結新版本的python
# cd /usr/bin
# mv python python2.6
# ln -s /usr/local/bin/python
## 修改yum指令碼,使其指向舊版本的python,已避免其無法執行
# vim /usr/bin/yum
#!/usr/bin/python --> #!/usr/bin/python2.6
(2)、setuptools模組安裝
# tar xvzf setuptools-7.0.tar.gz
# cd setuptools-7.0
# python setup.py install
(3)、pycrypto模組安裝
# tar xvzf pycrypto-2.6.1.tar.gz
# cd pycrypto-2.6.1
# python setup.py install
(4)、PyYAML模組安裝
# tar xvzf yaml-0.1.5.tar.gz
# cd yaml-0.1.5
# ./configure --prefix=/usr/local
# make --jobs=`grep processor/proc/cpuinfo | wc -l`
# make install
# tar xvzf PyYAML-3.11.tar.gz
# cd PyYAML-3.11
# python setup.py install
(5)、Jinja2模組安裝
# tar xvzf MarkupSafe-0.9.3.tar.gz
# cd MarkupSafe-0.9.3
# python setup.py install
# tar xvzf Jinja2-2.7.3.tar.gz
# cd Jinja2-2.7.3
# python setup.py install
(6)、paramiko模組安裝
# tar xvzf ecdsa-0.11.tar.gz
# cd ecdsa-0.11
# python setup.py install
# tar xvzf paramiko-1.15.1.tar.gz
# cd paramiko-1.15.1
# python setup.py install
(7)、simplejson模組安裝
# tar xvzf simplejson-3.6.5.tar.gz
# cd simplejson-3.6.5
# python setup.py install
(8)、ansible安裝
# tar xvzf ansible-1.7.2.tar.gz
# cd ansible-1.7.2
# python setup.py install
2、Ansible配置
(1)、SSH免金鑰登入設定
## 生成公鑰/私鑰
# ssh-keygen -t rsa -P ''
## 寫入信任檔案(將/root/.ssh/id_rsa_storm1.pub分發到其他伺服器,並在所有伺服器上執行如下指令):
# cat /root/.ssh/id_rsa_storm1.pub >> /root/.ssh/authorized_keys
# chmod 600 /root/.ssh/authorized_keys
(2)、ansible配置
# mkdir -p /etc/ansible
# vim /etc/ansible/ansible.cfg
……
remote_port = 36000
private_key_file = /root/.ssh/id_rsa_storm1
……
## 主機組定義
# vim /etc/ansible/hosts
[storm_cluster]
10.223.55.100
10.223.55.101
10.223.38.226
10.223.38.227
10.223.39.216
10.223.25.123
(3)、簡單測試
# ansible storm_cluster -m command -a 'uptime'
說明:第一次執行時,需要輸入一下“yes”【進行公鑰驗證】,後續無需再次輸入。
## 再次執行
# ansible storm_cluster -m command -a 'uptime'
3、常用模組使用
(1)、setup
## 用來檢視遠端主機的一些基本資訊
# ansible storm_cluster -m setup
(2)、ping
## 用來測試遠端主機的執行狀態
# ansible storm_cluster -m ping
(3)、file
## 設定檔案的屬性
相關選項如下:
force:需要在兩種情況下強制建立軟連結,一種是原始檔不存在,但之後會建立的情況下;另一種是目標軟連結已存在,需要先取消之前的軟鏈,然後建立新的軟鏈,有兩個選項:yes|no
group:定義檔案/目錄的屬組
mode:定義檔案/目錄的許可權
owner:定義檔案/目錄的屬主
path:必選項,定義檔案/目錄的路徑
recurse:遞迴設定檔案的屬性,只對目錄有效
src:被連結的原始檔路徑,只應用於state=link的情況
dest:被連結到的路徑,只應用於state=link的情況
state:
directory:如果目錄不存在,就建立目錄
file:即使檔案不存在,也不會被建立
link:建立軟連結
hard:建立硬連結
touch:如果檔案不存在,則會建立一個新的檔案,如果檔案或目錄已存在,則更新其最後修改時間
absent:刪除目錄、檔案或者取消連結檔案
示例:
## 遠端檔案符號連結建立
# ansible storm_cluster -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"
## 遠端檔案資訊檢視
# ansible storm_cluster -m command -a "ls –al /tmp/resolv.conf"
## 遠端檔案符號連結刪除
# ansible storm_cluster -m file -a "path=/tmp/resolv.conf state=absent"
## 遠端檔案資訊檢視
# ansible storm_cluster -m command -a "ls -al /tmp/resolv.conf"
說明:如上顯示,代表檔案或連結已經刪除。
(4)、copy
## 複製檔案到遠端主機
相關選項如下:
backup:在覆蓋之前,將原始檔備份,備份檔案包含時間資訊。有兩個選項:yes|no
content:用於替代“src”,可以直接設定指定檔案的值
dest:必選項。要將原始檔複製到的遠端主機的絕對路徑,如果原始檔是一個目錄,那麼該路徑也必須是個目錄
directory_mode:遞迴設定目錄的許可權,預設為系統預設許可權
force:如果目標主機包含該檔案,但內容不同,如果設定為yes,則強制覆蓋,如果為no,則只有當目標主機的目標位置不存在該檔案時,才複製。預設為yes
others:所有的file模組裡的選項都可以在這裡使用
src:被複制到遠端主機的本地檔案,可以是絕對路徑,也可以是相對路徑。如果路徑是一個目錄,它將遞迴複製。在這種情況下,如果路徑使用“/”來結尾,則只複製目錄裡的內容,如果沒有使用“/”來結尾,則包含目錄在內的整個內容全部複製,類似於rsync。
示例:
## 將本地檔案“/etc/ansible/ansible.cfg”複製到遠端伺服器
# ansible storm_cluster -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"
## 遠端檔案資訊檢視
# ansible storm_cluster -m command -a "ls -al /tmp/ansible.cfg"
(5)、command
## 在遠端主機上執行命令
相關選項如下:
creates:一個檔名,當該檔案存在,則該命令不執行
free_form:要執行的linux指令
chdir:在執行指令之前,先切換到該目錄
removes:一個檔名,當該檔案不存在,則該選項不執行
executable:切換shell來執行指令,該執行路徑必須是一個絕對路徑
示例:
# ansible storm_cluster -m command -a "uptime"
(6)、shell
## 切換到某個shell執行指定的指令,引數與command相同。
與<
相關推薦
自動化運維工具Ansible詳細部署
========================================================================================== 一、基礎介紹 ====================================
自動化運維工具SaltStack詳細部署【轉】
lib64 time 兩個 功能 .so odi 組件 部分 srv ==========================================================================================一、基礎介紹======
自動化運維工具ansible詳細介紹以模塊的使用
option gcc 配置文件 詳細介紹 通信 cache actual value 就是 ansible ansible的理論部分 ansible的介紹 ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、
自動化運維工具 Ansible 的詳細部署
Ansible 的來歷 Ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。 Ansible是基於 paramiko 開發的,並且基於模
自動化運維工具Ansible實戰(一)簡介和部署
Ansible 自動化運維 一、Ansible的介紹 Ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點。實現了批量系統配置、批量程序部署、批量運行命令等功能。Ansible是基於模塊工作的,本身沒
自動化運維工具ansible的簡單使用
linux 自動化運維 ansible 準備兩臺機器,一臺作為服務端,一臺作為客戶端1、在其中一臺服務端上安裝ansible[[email protected]/* */ ~]# yum install -y epel-release[[email protected]/*
自動化運維工具Ansible實戰(五)playbook使用
play playbook ansible (一)playbook簡述 ansbile-playbook是一系統ansible命令的集合,其利用yaml 語言編寫,運行過程,ansbile-playbook命令根據自上而下的順序依次執行。同時,playbook開創了很多特性,它可以允許你
自動化運維工具Ansible實戰(七)playbook循環
ansible ansible-play (一)簡述 在使用ansible做自動化運維的時候,免不了的要重復執行某些操作,如:添加幾個用戶,創建幾個MySQL用戶並為之賦予權限,操作某個目錄下所有文件等等。好在playbook支持循環語句,可以使得某些需求很容易而且很規範的實現。(二)常用的循環
自動化運維工具Ansible學習筆記
playbook ansible 自動化 一、簡介1.1 基本概念: ansible是一個基於python開發的輕量級自動化運維管理工具,可以用來批量執行命令,安裝程序,支持playbook編排。它通過ssh協議來連接主機,去中心化,相對比puppet和saltstack無需安裝客戶即可實現文件
自動化運維工具Ansible之roles
roles 自動化運維 ansible 自動化運維工具ansible之roles 一、概述1.1 概念roles 用於層次性、結構化地組織playbook。roles 能夠根據層次型結構自動裝載變量文件、tasks以及handlers等。要使用roles只需要在playbook中使用inclu
企業輕量級自動化運維工具—ansible(常見的錯誤解決,免秘鑰互信,常用的模塊)
企業 輕量級 自動化 企業輕量級自動化運維工具—ansible1.ansible簡介 ansible是“Ansible is Simple IT Automation”——簡單的自動化IT工具。它可以做到自動化部署APP;自動化管理配置項;自動化的持續交付;自動化的(AWS)雲服務管理。可實
自動化運維工具——ansible詳解(一)
數據 修改時間 們的 ransac 例如 ces 備份文件 其中 其他 ansible 簡介 ansible 是什麽? ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系
Saltstack自動化運維工具 實戰與部署
caf 主動推送 n-k 分鐘 啟動服務 ade 個人觀點 ots 處理 自動化工具比較Puppet也許是四款工具中最深入人心的。就可用操作、模塊和用戶界面而言,它是最全面的。Puppet呈現了數據中心協調的全貌,幾乎涵蓋每一個運行系統,為各大操作系統提供了深入的工具。初始
自動化運維工具puppet的部署與應用
puppet 自動化運維 facter linux 楊書凡 作為一名運維工程師,維護服務器的正常運行是最基本的職責,隨著服務器的增多,任務量也隨之增大,就需要尋找一款能夠降低工作量的工具。那麽今天就給大家介紹一批工具,這批工具是“可編程”的,只需要為這批工具寫上幾行代碼,它便會自動
自動化運維工具Ansible實戰(五)Playbooks劇本使用
Ansible 自動化運維 Playbook 一、Playbook 簡介 Playbooks與Ad-Hoc相比,是一種完全不同的運用Ansible的方式,而且是非常之強大的;也是系統ansible命令的集合,其利用yaml語言編寫,運行過程,ansbile-playbook命令根據自上而下的順序依
自動化運維之Ansible服務部署
基礎 cat body openstac -m release firewall 應用領域 引擎 Ansible簡介 Ansible使用Python語言開發,巧妙的設計、實現了簡單易用、功能強大的自動化管理工具。目前它已經廣泛應用於各種規模、各個領域的企業。 Ansib
自動化運維之ansible-安裝部署與基礎命令篇
ip地址 cksum keygen python 了解 success 系統 ron pytho 一、Ansible簡介 Ansible基於Python語言開發,集合了眾多優秀運維工具的優點,實現了批量運行命令、部署程序、配置系統等功能。 二、安裝部署Ansible服務 A
走進自動化運維之Ansible服務部署,附帶(參數及模塊)詳解!
輸入 epel源 檢測 鏈接文件 日誌輸出 運維 介紹 講解 book 何為Ansible: 簡單的自動化運維管理工具,不需要配置代理工具,基於Python研發。 Ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ans
自動化運維工具---SaltStack安裝部署及簡單案例
com 常用模塊 分類 fire thead 批量部署 配置 出現 nio SaltStack原理 SaltStack由Master(服務端)和Minion(客戶端)組成,Master和Minion之間通過ZeroMQ(消息隊列)進行通訊,Master和Minion分別監
自動化運維工具Ansible
mirrors fig 自動化 entos onf oot ear 實現 sea 一、簡介 當下有許多的運維自動化工具( 配置管理 ),例如:Ansible、SaltStack、Puppet、Fabric 等。 Ansible 一種集成 IT 系統的配置管理、應用部署、執行