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简单现网配置

相关文章
相关标签/搜索