ansible簡單本地配置

Ansible 中文權威指南:http://www.ansible.com.cn/html

Ansible 官方文檔:http://docs.ansible.com/python

這裏不過多描述,ansible的工做原理、playbook。不少信息能夠從文檔中獲取。git

在一個公司項目中選用什麼樣的輔助工具,徹底看我的的喜愛和項目需求。我也但願,各位在選擇工具的時候;不要浪費太多時間。一個好的工具,不是最熱、最火、最主流纔是最好的;而是合適纔是最好的。shell

Puppet、SaltStack、Ansible簡單比較。ubuntu

Puppet:vim

優勢歷史悠久,比較成熟,功能強,可遠程可本地。批量執行功能沒有,配置比較複雜,並且有服務端、客戶端bash

SaltStack:服務器

和ansible都是python流的,並且就功能上來說,二者也極爲類似,不一樣之處是salt stack是有客戶端的,而且execution模塊還用0MQ實現了pub-sub,命令和執行結果所以能夠高效並行傳輸,運維

不過成也蕭何敗也蕭何,第一個sub階段(將querystring下發到全部機器,而後收集機器響應的階段)太依賴與客戶端返回了,若是客戶端未能及時返回或未響應的話,playbook執行階段可能會直接漏掉這部分機器而沒有任何提示,ssh

這對於運維來講是不可接受的

Ansible:

與前面的相比,沒有什麼特別明顯的特性。配置管理方面絕對比不上puppet。批量執行也沒有SaltStack高尚。可是ansible僅依賴ssh,與登陸受權管理系統自然集成,簡單即有效,沒有比這更美妙的事情了。

爲何我選擇用ansible,由於ansible,不須要客戶端、部署簡單、上手極其容易。全部我如今了ansible。就這麼簡單。

項目需求簡單介紹,爲了研發簡單本身上傳代碼到業務服務器。在本地創建了jenkins+ansible集成平臺,控制線上跳板機將代碼推送到業務服務器。

1、本地實例配置:

說明:

一、ubuntu14.04 X64

二、安裝省略

三、遠程使用playbook配置

四、這裏只用的哦hosts文件和playbook目錄

五、全部的登陸方式都是ssh+key,這裏省略

2、配置文件配置

一、hosts配置:

#主機和組的配置
#定義一個主機 指定ssh_ip ssh_port  ssh_user  這裏爲了顧及所有使用內網ip
onlinemaster  ansible_ssh_host=192.168.1.241 ansible_ssh_port=22 ansible_ssh_user=root

[online]
onlinemaster  
View Code

二、playbook配置:

這裏涉及幾個操做:

A、將代碼更新到OnlineMaster本地、

B、生成當前時間到OnlineMaster ansible log

C、控制OnlineMaster ansible執行操做(將OnlineMaster上的代碼推進到業務服務器)結果輸出到 OnlineMaster ansible log

2016-05-30 17:06:53

D、取回OnlineMaster的 ansible log回Local 本地打印出來、

E、清空OnlineMaster的ansible log

註明:以上全部操做分爲兩個文件 【A】【B C D E】最終使用腳原本作構建:

#!/bin/bash
case "$1" in
online.yml)
cd /etc/ansible && ansible-playbook -i hosts playbooks/upCode/$1
;;
*)
echo $"Usage: $0 {online.yml}" 
exit 3
;;
esac

case "$2" in
online_rsync.yml)
cd /etc/ansible && ansible-playbook -i hosts playbooks/rsync/$2
;;
*)
echo $"Usage: $0 {online_rsync.yml}" 
exit 3
;;
esac

# 在Local本地打印出取回來的狀態opera.log文件
echo ""
echo  "\033[41;37m################在本地打印出取回來的狀態opera.log文件,此文件是遠端ansible執行的結果##########################\033[0m"
cat playbooks/log/opera.log
echo  "\033[41;37m#############################################################################################################\033[0m"
echo ""
# 清空Local本地的up.log文件
rm -rf playbooks/log/opera.log
exit 0
View Code

 配置A:

目錄playbooks/upCode/

vim online.yml
#####################################
---    #YAML特有的開頭格式
 - name: hosts or group #調用hosts中配置的host或者host_group
   hosts: online

   tasks:          #定義一下任務下面的是包含一個文件進來,這個好處是方面管理、擴展  
    - include: tasks/updateCode.yml
View Code
vim tasks/updateCode.yml
#####################################

---
 - name: 更新代碼到本地   #這裏用shell command均可以
   shell:  "cd /var/www/project  &&  git pull >> /etc/ansible/playbooks/log/opera.log"
View Code

 配置B C D E:

目錄playbooks/rsync/

vim online_rsync.yml
#############################################

---
 - name: hosts or gropu
   hosts: master


   tasks:
    - include: tasks/cDate.yml         #建立時間
    - include: tasks/rsync_test.yml   #控制遠程的ansible推進代碼
    - include: tasks/fetchRe.yml      #獲取log文件回本地
    - include: tasks/cleanLog.yml    #清空遠程的log文件

#############################################

tasks下面的文件:
cDate.yml
*******************
--
 - name: 當前時間
   shell: date +"%Y-%m-%d %H:%M.%S" >> /etc/ansible/playbooks/log/opera.log

*******************
rsync_test.yml
*******************
---
 - name: 控制遠端ansible執行操做
   shell: "cd /etc/ansible && ansible-playbook -i hosts playbooks/gamec/rsync.yml >> /etc/ansible/playbooks/log/opera.log"
*******************

*******************
fetchRe.yml
*******************
---
 - name: 獲取遠程節點生成的opera.log文件,回到本地
   fetch: src=/etc/ansible/playbooks/log/opera.log dest=/etc/ansible/playbooks/log/ flat=yes fail_on_missing=yes  
# src是遠端,dest是本地目錄 
*******************

*******************
cleanLog.yml
*******************
---
 - name: 清空遠端控制端opera.log文件
   shell: echo "" > /etc/ansible/playbooks/log/opera.log
*******************
View Code

 

下回文檔: ansible簡單現網配置

相關文章
相關標籤/搜索