Ansible高级用法

Ansible

playbook的核心元素:
    tasks: 任务
    variables: 变量
    templates: 模板
    handlers: 处理器
    roles: 角色

变量:
    facts
    --extra-vars "name=value name=value"
    role定义
    Inventory中的变量:
        主机变量
            hostname name=value name=value
        组变量
            [groupname:vars]
            name=value
            name=value

Inventory的高级用法:

Playbook:

    - host:
      vars:
      remote_user:
      tasks:
        -
        -
        -
      variables:
        -
        -
        -
      handlers:
        -
        -

    - host: 

    - host: 

迭代:重复同类task时使用
    调用:item
    定义循环列表:with_items
        - apache
        - php
        - mysql-server
    注意:with_items中的列表值也可以使字典,但引用时要使用item.KEY
        - {name: apache, conf: conffiles/httpd.conf}
        - {name: php, conf: conffiles/php.ini}
        - {name: mysql-server, conf: conffiles/my.cnf}

tags: 在playbook可以为某个或某些任务定义一个“标签”,在执行此playbkook时,通过为ansible-playbook命令使用 --tags选项能实现仅运行指定的tasks而非所有的;
    - name: install configuration file for httpd
      template: src=/root/templates/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
      tags:
      - conf

    特殊tags:always

roles:
    (1) 目录名同角色名;
    (2) 目录结构有固定格式:
        files:静态文件
        templates:Jinjia2模板文件
        tasks:至少有main.yml文件,定义各tasks;
        handlers:至少有main.yml文件,定义各handlers;
        vars:至少有一个main.yml文件,定义变量;
        meta:定义依赖关系等信息
    (3)
        site.yml中定义playbook,额外也可以有其他的yml文件;

    简单示例1:
        - hosts:websrvs
          remote_user:root
          tasks:
          - name:create nginx group
            group:name=nginx system=yes gid=208
          - name:create nginx user
            user:name=nginx uid=208 group=nginx system=yes

        - hosts:dbsrvs
          remote_user:root
          tasks:
          - name: copy file to dbsrvs
            copy: src=/etc/inittab dest=/tmp/inittab.ans

    简单示例2:ansible-playbook  apache.yml
        - hosts:websrvs
          remote_user:root
          tasks:
          - name: install httpd package
            yum: nmae=httpd state=latest
        - name: install configuration file for httpd
          copy: src=/root/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
        - nmae: start httpd service
          service: enabled-true name=httpd state=started

    简单示例3:
        - host: all
          remote_user: root
          vars:
          - username: user10
          tasks:
          - name: create {{ username }} user
            user: name={{ username }}
            when: ansible_fqdn == "zhanx.wang"

原文地址:http://blog.51cto.com/zhanx/2344689

时间: 2024-11-05 22:54:35

Ansible高级用法的相关文章

Ansible的高级用法playbook

Ansible的高级用法playbook Ansible入门 playbook工作过程 YAML特性    YAML的可读性好    YAML和脚本语言的交互性好    YAML使用实现语言的数据类型    YAML有一个一致的信息模型    YAML易于实现    YAML可以基于流来处理    YAML表达能力强,扩展性好 YAML语法简介   1. 在单一档案中,可用连续三个连字号(--)区分多个档案.另外,还有选择性的连续三个点号( ... )用来表示档案结尾   2. 次行开始正常写P

jquery on高级用法

on()的高级用法 针对自己处理机制中,不仅有on方法,还有根据on演变出来的live方法(1.7后去掉了),delegate方法等等.这些方法的底层实现部分 还是on方法,这是利用了on的另一个事件机制委托的机制衍变而来的 委托机制 .on( events ,[ selector ] ,[ data ], handler(eventObject) ) 在on的第二参数中提供了一个selector选择器,简单的来描述下 参考下面3层结构 <div class="left">

Newtonsoft.Json高级用法

手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验.本篇将为大家

&lt;06&gt;变量使用前易犯错误总结+if语句介绍及基本格式+if-else语句及嵌套+if语句的高级用法+if语句的使用注意点+arc4random_uniform 函数导入一个头文件&lt;stdlib.h&gt;+

1)变量要初始化 -1 0  ,或者1 依据程序而定 ---------------------------------- if语句介绍及基本格式 分支语句结构 1)if 格式: if(表达式/常量/变量){ 语句块1; } 原理: 1)先计算小括号中的表达式的值 真(1) 会执行 大括号中的语句 假(0) 不会执行 大括号中的语句 2) switch 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5

JS Replace() 高级用法(转)

在很多项目中,我们经常需要使用JS,在页面前面对前台的某些元素做做修改,js 的replace()方法就必不可少. 经常使用"ABCABCabc".replace("A","B")的同学应该会比较清楚,改语句的最终结果是BBCABC,这种方法只能替换 第一个匹配的元素.如果替换所有呢?使用正则表达式即可: "ABCABCabc".replace(/A/g,"B") 即可. 那如果想替换A的同时也可以替换a呢

Python爬虫的Urllib库有哪些高级用法?

本文和大家分享的主要是python爬虫的Urllib库的高级用法相关内容,一起来看看吧,希望对大家学习python有所帮助. 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它 是一段HTML代码,加 JS.CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服.所以最重要的部分是存在于HTML中的,下面我 们就写个例子来扒一个网页下来. imp

GUN sed高级用法,sed脚本编写

这里举一些sed常用的高级用法例子经供参考: 一下操作都针对file.txt文件作修改 [[email protected] ~]# cat file.txt libgcc-4.4.7-4.el6.x86_64 setup-2.8.14-20.el6_4.1.noarch tzdata-2013g-1.el6.noarch jakarta-commons-collections-3.2.1-3.4.el6.noarch filesystem-2.4.30-3.el6.x86_64 mesa-dr

Git log高级用法

格式化Log输出 首先,这篇文章会展示几种git log格式化输出的例子.大多数例子只是通过标记向git log请求或多或少的信息. 如果你不喜欢默认的git log格式,你可以用git config的别名功能来给你想要的格式创建一个快捷方式. Oneline --oneline标记把每一个提交压缩到了一行中.它默认只显示提交ID和提交信息的第一行.git log --oneline的输出一般是这样的: 0e25143 Merge branch 'feature' ad8621a Fix a b

JAVA正则表达式高级用法(分组与捕获)

正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了.这里主要讲解一下在JAVA中实现了的正则的高级用法-分组与捕获.对于要重复单个字符,非常简单,直接在字符后卖弄加上限定符即可,例如 a+ 表示匹配1个或一个以上的a,a?表示匹配0个或1个a.这些限定符如下所示: X ?     X ,一次或一次也没有X *     X ,零次或多次X +     X ,一次或多次X { n }     X ,恰好 n 次X { n ,}     X ,