[ansible-playbook]4 持续集成环境之分布式部署利器 ansible play学习

3 ansible-play讲的中太少了,今天稍微深入学习一点

预计阅读时间:15分钟

一: 安装部署

参考 http://getansible.com/begin/an_zhuang_ansile

二:常用模块

a. service 用于启动检查服务

b. file 用于文件删除 链接 创建

c.shell 用于执行脚本(不推荐,因为shell操作有时并非幂等,而且不方便检查执行结果)

d.copy 用于拷贝文件

e. vars+ template 用于根据模板文件基于变量创建配置文件

样例:

test.yml

---
#Task1
- hosts: web
  vars:
   domain: 0731
  remote_user: root
  tasks:
  - name: test connection
    ping:
  - name: httpd check
    service: name=sshd state=started
  - name: remove foo.conf
    file: dest=/etc/foo.conf state=absent
    #- name: delete foo.conf
    #shell: rm -f /etc/foo.conf

  - name: copy foo.conf
    copy: src=/srv/myfiles/foo.conf dest=/etc/foo.conf
          owner=root group=root mode=064
    notify:
      - Verify Conf

  - name: Add template Config
    template: src=serversforhackers.com.j2 dest=/etc/{{ domain }}.conf owner=root group=root

  handlers:
  - name: Verify Conf
    shell: file /etc/foo.conf

#Task2
- hosts: server
  vars:
    sdomain: server_0731
    domain: 0731
  remote_user: root
  tasks:
  - name: Add template Config
    template: src=serversforhackers.com.j2 dest=/etc/{{ sdomain }}.conf owner=root group=root

模板文件: templates/serversforhackers.com.j2

server {
    # Enforce the use of HTTPS
    listen 80 default_server;
    server_name *.{{ domain }};
    return 301 https://{{ domain }}$request_uri;
}

hosts文件:

[web]
10.0.0.3
10.0.0.4
[server]
10.0.0.5
10.0.0.6
[gateway]
10.0.0.7

执行脚本: # ansible-playbook -i host test.yml   (-i 表示指定读取的host文件路径)

PLAY [web] *******************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

TASK [test connection] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

TASK [httpd check] ***********************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.3]
ok: [10.0.0.4]

TASK [remove foo.conf] *******************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.3]
changed: [10.0.0.4]

TASK [copy foo.conf] *********************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.4]
changed: [10.0.0.3]

TASK [Add template Config] ***************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

RUNNING HANDLER [Verify Conf] ************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.3]
changed: [10.0.0.4]

PLAY [server] ****************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.5]
ok: [10.0.0.6]

TASK [Add template Config] ***************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.5]
ok: [10.0.0.6]

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
10.0.0.3                   : ok=7    changed=3    unreachable=0    failed=0
10.0.0.4                   : ok=7    changed=3    unreachable=0    failed=0
10.0.0.5                   : ok=2    changed=0    unreachable=0    failed=0
10.0.0.6                   : ok=2    changed=0    unreachable=0    failed=0

注:完整模块参见 http://docs.ansible.com/ansible/latest/modules_by_category.html

三 常见检查

语法检查  # ansible-playbook --syntax-check test.yml

注:报错信息有可能位置不准,碰见过对齐格式不正确引发的错误

列出主机  # ansible-playbook -i hosts --list-hosts test.yml

四 最佳实践

参考 http://docs.ansible.com/ansible/latest/playbooks_best_practices.html

根据 Roles分类,存放template 文件,加密yml(如果需要的话)

Git hub上的实例: https://github.com/ansible/ansible-examples

参考资料:

https://serversforhackers.com/c/an-ansible-tutorial

http://getansible.com/advance/best_practice/zui_jia_shi_yong_fang_fa

时间: 2024-10-19 15:20:52

[ansible-playbook]4 持续集成环境之分布式部署利器 ansible play学习的相关文章

用MSBuild和Jenkins搭建持续集成环境(2)

http://www.infoq.com/cn/articles/MSBuild-2 作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意: 挥一挥衣袖,带走满满干货,关注活动大本营,时不时发福利呦!3 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读 我的阅读清单 这是持续集成系列的下半部分,如果你还没看过上半部分的话,请点击这里:用MSBuild和Jenkins搭建持续集成环境(1). 与Jenkins相会

构建基于Jenkins + Github的持续集成环境

搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集成的基础上收到反馈并加以改进,不必等到开发的后期才寻找和修复缺陷.当然要明白的是持续集成环境的搭建也不是一劳永逸的,随着软件项目复杂度的增加,持续集成的环境同样要加以维护以确保集成环境的可靠性. 持续集成的重要要素:1.统一的代码库. 2.CI服务器 3.自动化测试和构建的脚本 4.Slaves 持

简单搭建Gitlab CI持续集成环境

简单搭建Gitlab CI持续集成环境 简单介绍Gitlab CI的功能 从GitLab 8.X 开始,GitLab CI就已经集成在GitLab中,我们只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,开启Runner,即可进行持续集成.而且随着GitLab的升级,GitLab CI变得越来越强大. GitLab Runner 在没使用过Gitlab之前,我也有一个困惑,到底Gitlab Runner是什么东西.它的作用是什么?</br>GitLab Runne

持续集成环境搭建

Jenkins - 持续集成环境搭建 1. Jenkins 概述 Jenkins是一个开源的持续集成工具.持续集成主要功能是进行自动化的构建.自动化构建包括自动编译.发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件. 2. Jenkins功能 主要功能: l 代码库(svn/git等)代码发生变化后更新代码至jenkins工作目录 l 代码变化后启动编译或设置定时编译 l 输出编译结果,包括生成的目标文件 l 邮件通知构建结果 3. Jenkins构建过程 1. 向代码库提交代

jenkins + Git 搭建持续集成环境

jenkins + Git 搭建持续集成环境 持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前广泛应用的持续集成工具,本文记录我使用jenkins+Git配置持续集成环境的整个流程以及踩到的坑(jenkins过程的坑往往不是在第一次配置,而是在配置结束后更改某些配置项的时候踩到). 总体流程如下: tomcat8.0下载地址:http://tom

基于 Jenkins 快速搭建持续集成环境

持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能.本文正是从持续集成的基本概念入手,通过具体实例,介绍了如何基于 Jenkins 快速搭建持续集成环境. 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变

jenkins gulp 持续集成环境搭建

本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.然后教你jenkins如何集成前端构建工具Gulp.不要怕,jenkins gulp 持续集成环境搭建其实也很简单,我会分为五步向你介绍jenkins gulp 持续集成并帮助你完成一些惊人的事情.那就直接开始吧. 第一步:安装Node 首先,最基本也最重要的是,我们需要搭建node环境.访问 https://nodejs.org/en/download/ 下载得到这样的一个文件node-v6.9.

使用Maven+Nexus+Hudson+Svn+Tomcat+Sonar搭建持续集成环境(一)

前言     但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习惯使用SVN作为代码管理工具,他们分别开始工作,一个功能完成后会提交到SVN,以便对方能够使用.一天B告诉A,我的某个功能完成了,提交到SVN,你更新下来试一下.A便从SVN更新下来代码,结果一试,我檫报错,于是告诉B你的代码有问题,B检查了一下确实有问题,然后B经过1个小时修改后,重新上传

Jenkins+Maven+SVN快速搭建持续集成环境(转)

Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面看看我们是如何几分钟就快速搭建一个持续集成环境吧. 假设我们目前已经有2个maven项目:entities(JAVA类库),web(Web应用,依赖entities). 一.安装Jenkins 地址http://mirrors.jenkins-ci.org/下载适合的Jenkins版本. Windows最新稳定版的Jenkins地址为:http://mirrors.jenkins-ci.org/window