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

预计阅读时间:15分钟

一: 安装部署

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

快速检查 (可能需要配置ssh无密访问,可参考https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 )

配置host文件

[web]
192.168.100.1
[server]
192.168.100.2

测试能否ping通

# ansible all -i host -m ping

二:常用模块

a. service 用于启动检查服务

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

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

d.copy 用于拷贝文件

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

样例:

test.yml

---
#Task1
- hosts: web
vars:
domain:
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=
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:
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 default_server;
server_name *.{{ domain }};
return https://{{ domain }}$request_uri;
}

hosts文件:

[web]
...
...
[server]
...
...
[gateway]
...

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

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

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [...]
ok: [...] TASK [test connection] *******************************************************************************************************************************************************************************************************************************************************
ok: [...]
ok: [...] TASK [httpd check] ***********************************************************************************************************************************************************************************************************************************************************
ok: [...]
ok: [...] TASK [remove foo.conf] *******************************************************************************************************************************************************************************************************************************************************
changed: [...]
changed: [...] TASK [copy foo.conf] *********************************************************************************************************************************************************************************************************************************************************
changed: [...]
changed: [...] TASK [Add template Config] ***************************************************************************************************************************************************************************************************************************************************
ok: [...]
ok: [...] RUNNING HANDLER [Verify Conf] ************************************************************************************************************************************************************************************************************************************************
changed: [...]
changed: [...] PLAY [server] **************************************************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [...]
ok: [...] TASK [Add template Config] ***************************************************************************************************************************************************************************************************************************************************
ok: [...]
ok: [...] PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
... : ok= changed= unreachable= failed=
... : ok= changed= unreachable= failed=
... : ok= changed= unreachable= failed=
... : ok= changed= unreachable= failed=

注:完整模块参见 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

如何利用ansible 安装go: https://github.com/jlund/ansible-go

如何利用ansible 不是 go-lang-stack: https://github.com/areski/ansible-golang-stack

五 遇到的坑

1. shell/command 模块无法调用source,需要用sh 方式执行

参考 https://groups.google.com/forum/#!topic/ansible-project/PNNpxY4ItSo

   - name: source added profile
shell: sh /etc/profile.d/go-path.sh
ignore_errors: yes

参考资料:

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

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

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

  1. [Docker][ansible-playbook]3 持续集成环境之分布式部署

    预计阅读时间: 30分钟 本期解决痛点如下:1. 代码版本的多样性,编译环境的多样性如何解决?答案是使用docker,将不同的编译环境images统统打包到私有仓库上,根据需求进行下载,从宿主机上挂载 ...

  2. 持续集成环境--Tomcat热部署导致线程泄漏

    一.问题由来 我们组用jenkins部署了持续集成环境,(jenkins部署war包到远程服务器的tomcat). 每次提交了代码,jenkins上一键构建,就可以自动拉取最新代码,打war包,热部署 ...

  3. JavaWeb+SVN+Maven+Tomcat +jenkins搭建持续集成环境和自动部署

    https://blog.csdn.net/wh52788/article/details/80900477 https://blog.csdn.net/liyong1028826685/articl ...

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

    http://www.infoq.com/cn/articles/MSBuild-2   作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意:  ...

  5. 使用Jenkins构建持续集成环境

    简介 Jenkins是一个开源的持续集成工具,提供了数百种插件供用户选择,能够完成整套持续集成环境的构建. 它具有如下的特点: 持续集成和持续发布 作为可扩展的自动服务器,Jenkins可以作为简单的 ...

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

    搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...

  7. Docker+Jenkins持续集成环境(5): android构建与apk发布

    项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...

  8. Jenkins+MSbuild+SVN实现快速搭建.net持续集成环境(构建、编辑、部署到服务器)

    Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面开始搭建.net持续集成环境 Jenkins和SVN安装这里就不介绍了 一.准备工作 1.Jenkins中系统 ...

  9. 在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    在Redhat enterprise 6.5 的服务器上,为在gutub 上的 .net 项目构建一个持续集成环境,用到了Jenkins和mono.因公司的服务器在内网,访问外网时要通过代理,所以在很 ...

随机推荐

  1. 编译安装hls协议切片工具 m3u8-segmenter

    操作系统:Ubuntu16.04.4 amd64 安装http://m3u8-segmenter.inodes.org/方式安装m3u8-segmenter报错,于是有了这篇文章 apt instal ...

  2. Python - Django - ORM 双下划线

    id 字段: id__lt:id 小于,id__gt:id 大于 import os if __name__ == '__main__': # 加载 Django 项目的配置信息 os.environ ...

  3. DBGrid中插入DateTimePicker

    DateTimePicker inside a DBGrid Here's how to place a TDateTimePicker into a DBGrid. Create visually ...

  4. 第八章 跨语言服务治理方案 Service Mesh

    8.1 Service Mesh 概述 新兴的下一代微服务架构,被称为下一代微服务,同时也是云原生技术栈的代表技术之一. 8.1.1 Service Mesh的由来 从2016年到2018年,serv ...

  5. 微信小程序 与后台交互----传递和回传时间

    wxml代码 <!--index.wxml--> <view class="container"> <view class="section ...

  6. javascript bom操作

    BOM BOM介绍 全称 Browser Object Mode 浏览器对象模式 操作浏览器的API接口.比如浏览器自动滚动 Windows对象的顶层部分是BOM的顶层(核心)对象,所有的对象都是通过 ...

  7. Appium移动自动化测试-----(五) java-client安装与测试

    前提条件 当你点击这一章时,说明你是打算使用 Java 语言编写 appium 自动化测试脚本的. 1.安装 Java 环境 ,我想这一步你已经搞定了 2.安装 IntelliJ IDEA , 当然, ...

  8. 【转载】jmeter非GUI执行脚本+动态线程+生成HTML报告

    标明文章出处: https://blog.csdn.net/qq_38915739/article/details/83018465   本次记录是在工作中为了能更好的用jmeter进行压力测试,进行 ...

  9. 《ucore lab7》实验报告

    资源 ucore在线实验指导书 我的ucore实验代码 练习1: 理解内核级信号量的实现和基于内核级信号量的哲学家就餐问题(不需要编码) 题目 完成练习0后,建议大家比较一下(可用meld等文件dif ...

  10. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...