Ansible学习记录五:PlayBook学习

0.介绍

Playbooks 是 Ansible 管理配置、部署应用和编排的语言,可以使用 Playbooks 来描述你想在远程主机执行的策略或者执行的一组步骤过程等

类似于一组任务集,定义好像项目,组织结构,配置文件等信息,通过task将所要做的事情一步一步的组织在一起就是完整的Playbook

  官方Demo资料:https://github.com/ansible/ansible-examples

  Playbooks是采用YMAL语言结构,基础语法请参考:http://docs.ansible.com/ansible/YAMLSyntax.html

  一个完整的Playbooks结构,以部署tomcat为例:

    tomcat/   ------>  tomcat的playbook

    ├── hosts    -------->    指定安装tomcat的机器清单(Inventory)

    ├── roles    ------>  子项清单 (可以有一项或多项的任务)

    │   └── tomcat    ----> 安装tomcat

    │       ├── files   ---> 存放文件

    │       │   ├── apache-tomcat-7.0.64.tar.gz    ----> tomcat安装包

    │       │   ├── jdk-7u79-linux-x64.tar.gz     -----> jdk安装包

    │       │   └── tomcat    ------>tomcat服务启动脚本

    │       └── tasks   ------>任务项清单

    │           ├── jdk.yml     ---> jdk任务列表

    │           ├── main.yml    --->  任务入口

    │           └── tomcat.yml    ---->tomcat任务列表

    ├── site.yml    ansible playbook执行入口

    ├── tomcat.sh   批量安装shell.

    └── tomcat-testing.sh   tomcat安装测试脚本

  Ansible roles 完整示例:

    [email protected] playbook]# tree  roles/

    roles/ \\ansible所有的信息都放到此目录下面对应的目录中

    └── nginx  \\角色名称

        ├── default  \\为当前角色设定默认变量时使用此目录,应当包含一个main.yml文件

        ├── files  \\存放有copy或script等模块调用的文件

        ├── handlers \\此目录总应当包含一个main.yml文件,用于定义各角色用到的各handler

        ├── meta \\应当包含一个main.yml,用于定义角色的特殊设定及其依赖关系;1.3及以后版本支持

        ├── tasks \\至少包含一个名为main.yml的文件,定义了此角色的任务列表,可使用include指令

        ├── templates \\template模块会自动在此目录中寻找Jinja2模板文件

        └── vars  \\应当包含一个main.yml文件,用于定义此角色用到的变量

1.项目结构介绍

  Playbook中的属性介绍:

    name    表示playbook 的名称

    hosts    表示执行的机器清单

    connection:允许你指定ssh parmiko或者local这三种传输方式

    gather_facts:默认每次连接都会执行setup,如果不需要用到变量可以制定这个字段为now

    remote_user :  远程端执行的用户

    tasks:   定义执行的任务清单,顺序执行

    templates :  存放模板文件

    vars:  存放变量

    handlers:  定义以后回调的方法

    file: 存放复制的安装文件,比如安装文件等

2.PlayBook示例

  安装ftp服务:

  ---

      - hosts: test

  remote_user: root

        tasks:

   - name: install ftp

           command: yum -y install ftp

3.其他

  3.1 首次连接或者重装系统之后会出现检查 keys 的提示

    The authenticity ofhost ‘192.168.0.5 (192.168.0.5)‘ can‘t be established.

    ECDSA key fingerprint is 05:51:e5:c4:d4:66:9b:af:5b:c9:ba:e9:e6:a4:2b:fe.

    Are you sure you want to continue connecting (yes/no)?

  解决办法:

    vim /etc/ansible/ansible.cfg 或者 ~/.ansible.cfg

    [defaults]

    host_key_checking = False

    也可以通过设置系统环境变量来禁止这样的提示

    export ANSIBLE_HOST_KEY_CHECKING=False

  3.2 在使用 paramiko 模式时,主机 keys 的检查会很慢

  3.3 默认情况下 Ansible 会记录一些模块的参数等信息到每个被控端的 syslog 日志文件里,除非在任务或者剧本里设置了 no_log: True 会不记录日志

4.参考记录

Ansible-Playbook

  http://www.178linux.com/7001

   集群运维ansible的playbook配置及template模板的使用

  http://www.tuicool.com/articles/UvU3ai

  http://rfyiamcool.blog.51cto.com/1030776/1413031

  Playbook Roles and Include Statements

  http://docs.ansible.com/ansible/playbooks_roles.html

时间: 2024-11-10 08:02:11

Ansible学习记录五:PlayBook学习的相关文章

Linux 学习记录 五(软件的安装升级)

一.gcc gcc是Linux上面最标准的C语言的编译程序,用来源代码的编译链接. gcc -c hello.c 编译产生目标文件hello.o gcc -O hello.c 编译产生目标文件,并进行优化 gcc -o hello hello.c 生成hello这个可执行的二进制文件 缺点:命令的冗余性,如果 C 语言程序中包含对其他函数或者程序的引用,那么其他程序也要编译成目标文件,然后一起编译成可执行文件,才能运行成功.一个大的程序引用是非常多的,所以用gcc来编译,显得很冗余. 二.mak

产品需求文档的学习记录(五)

在产品和技术领域里都有UML的技能知识,而对于产品人员的UML则更多的是指用例图,也就是我所称呼的用户流程图.在讲PRD文档写作的第二篇文章里,我提到了用户流程图的制作,实际上用户流程图是我在产品规则的初期对用例图的一种结构化的表达方式,由于以结构化的方式描述用例太抽象,缺少逻辑性表达,并且那篇文章更偏向于功能性用户流程,还不是实际意义上的用例,因此今天我补文一篇,细讲一下UML用例图和用例文档. 用例文档是由多个用例组成的一份文档,主要用于技术开发与测试使用,他是PRD中的重要辅助文档,用于讲

Oracle学习记录 五 Centos6.4 64bit下安装oracle

错误记录: Invalid source path '../stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles' specified for unzip. 这个错误应该是我只解压了第一个压缩包,没有解压第二个. 2. 还有一个问题就是按照开始安装的时候,说什么color的问题,这个我在网上看了些,不过,我直接把系统登出一次,重新用oracle登录就没事了. 3. [INS-32021] Insufficient disk space on thi

loadrunner学习记录五

1.HTTP的GET请求 这里以访问百度为例,地址http://www.baidu.com/s?wd=mobile,表示在百度上搜索mobile.具体脚本如下(有注释) Lr script代码   Action() { int status; lr_start_transaction("send"); web_reg_find("Search=Body",//这里说明在Body的范围内查找 "SaveCount=ret_Count",//这里表示

Spring学习记录(五)---bean的作用域scope

作用域:singleton:单例,整个应用中只创建一个实例(默认) prototype:原型,每次注入时都新建一个实例 session:会话,每个会话创建一个实例 request:请求,每个请求创建一个实例 默认情况下,bean都是单例的,在下面这样时初始化,调用各个bean的构造函数 1 <bean id="person" class="com.guigu.spring.autowire.Person" 2 p:name="Tom" &g

SpringMVC学习记录(五)--表单标签

在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 1.引入标签头文件 在正式介绍SpringMVC的表单标签之前,我们需要先在JSP中声明使用的标签,具体做法是在JSP文件的顶部加入以下指令: <%@taglib prefix="sf" uri="http://www.springframework.org/tags/form" %> 2.form标签 使

Tornado学习记录五

因为目前是运维岗, tornado 主要是用来接收请求并执行检测任务,比如说,我起一个服务,用户将服务器IP或者主机名 Post 到 tornado, 然后 tornado 执行检测,比如就是 Ping,然后返回给用户结果. 假设是 ping -c 10 url,这个还是挺耗时的,在mac上测试大概 9s 左右,如果不是异步,这 9s 的时间服务器就不能响应其他请求,那这个服务显然是没法用的, 这时候就需要 tornado 的异步非阻塞了. 而执行 bash shell 这种,是需要开启多线程或

zeromq学习记录(五)vc下多线程

本节演示使用多线程的代码 由于示例中使用的是pthead函数 为了在windows下运行 我做了点改动 使用c++11 的thread函数 代码如下 与第一节的hwclient 配套使用 // mttest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "zhelpers.hpp" #include <thread> void worker_routine(void* arg) { zmq::c

LoadRunner11学习记录五

LoadRunner测试结果具体分析: 一.错误提示分析  分析实例: 1.Error: Failed to connect to server “172.17.7.230″: [10060] Connection   Error: timed out Error: Server “172.17.7.230″ has shut down the connection prematurely 分析: A.应用服务死掉.   (小用户时:程序上的问题.程序上处理数据库的问题,实际测试中多半是服务器链