ansible简单本地配置

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

Ansible 官方文档:http://docs.ansible.com/

这里不过多描述,ansible的工作原理、playbook。很多信息可以从文档中获取。

在一个公司项目中选用什么样的辅助工具,完全看个人的喜好和项目需求。我也希望,各位在选择工具的时候;不要浪费太多时间。一个好的工具,不是最热、最火、最主流才是最好的;而是合适才是最好的。

Puppet、SaltStack、Ansible简单比较。

Puppet:

优点历史悠久,比较成熟,功能强,可远程可本地。批量执行功能没有,配置比较复杂,而且有服务端、客户端

SaltStack:

和ansible都是python流的,而且就功能上来讲,两者也极为相似,不同之处是salt stack是有客户端的,并且execution模块还用0MQ实现了pub-sub,命令和执行结果因此可以高效并行传输,

不过成也萧何败也萧何,第一个sub阶段(将querystring下发到所有机器,然后收集机器响应的阶段)太依赖与客户端返回了,如果客户端未能及时返回或未响应的话,playbook执行阶段可能会直接漏掉这部分机器而没有任何提示,

这对于运维来说是不可接受的

Ansible:

与前面的相比,没有什么特别明显的特性。配置管理方面绝对比不上puppet。批量执行也没有SaltStack高尚。但是ansible仅依赖ssh,与登录授权管理系统天然集成,简单即有效,没有比这更美妙的事情了。

为什么我选择用ansible,因为ansible,不需要客户端、部署简单、上手极其容易。所有我现在了ansible。就这么简单。

项目需求简单介绍,为了研发简单自己上传代码到业务服务器。在本地建立了jenkins+ansible集成平台,控制线上跳板机将代码推送到业务服务器。

一、本地实例配置:

说明:

1、ubuntu14.04 X64

2、安装省略

3、远程使用playbook配置

4、这里只用的哦hosts文件和playbook目录

5、所有的登录方式都是ssh+key,这里省略

二、配置文件配置

1、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

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

posted @ 2016-05-30 14:22  老男人(Sam)  阅读(1155)  评论(0编辑  收藏  举报