task include

  1. ---
  2. # possibly saved as tasks/foo.yml
  3. - name: placeholder foo
  4. command: /bin/foo
  5. - name: placeholder bar
  6. command: /bin/bar
  7. tasks:
  8. - include: tasks/foo.yml

变量传递

  1. tasks:
  2. - include: wordpress.yml wp_user=timmy
  3. - include: wordpress.yml wp_user=alice
  4. - include: wordpress.yml wp_user=bob
  5. # 1.4版本以上,可以传递列表与字典
  6. tasks:
  7. - { include: wordpress.yml, wp_user: timmy, ssh_keys: [ 'keys/one.txt', 'keys/two.txt' ] }
  8. tasks:
  9. - { include: wordpress.yml, wp_user: timmy, ssh_keys: [ 'keys/one.txt', 'keys/two.txt' ] }
  10. # include文件使用{{ }}引用变量
  11. {{ wp_user }}
  12. # 其他方式
  13. tasks:
  14. - include: wordpress.yml
  15. vars:
  16. wp_user: timmy
  17. some_list_variable:
  18. - alpha
  19. - beta
  20. - gamma

handlers include

  1. ---
  2. # this might be in a file like handlers/handlers.yml
  3. - name: restart apache
  4. service: name=apache state=restarted
  5. handlers:
  6. - include: handlers/handlers.yml

import文件

  1. - name: this is a play at the top level of a file
  2. hosts: all
  3. remote_user: root
  4. tasks:
  5. - name: say hi
  6. tags: foo
  7. shell: echo "hi..."
  8. - include: load_balancers.yml
  9. - include: webservers.yml
  10. - include: dbservers.yml

角色

playbooks目录结构

  1. site.yml
  2. webservers.yml
  3. fooservers.yml
  4. roles/
  5. common/
  6. files/
  7. templates/
  8. tasks/
  9. handlers/
  10. vars/
  11. defaults/
  12. meta/
  13. webservers/
  14. files/
  15. templates/
  16. tasks/
  17. handlers/
  18. vars/
  19. defaults/
  20. meta/

playbook中定义

  1. ---
  2. - hosts: webservers
  3. roles:
  4. - common
  5. - webservers

使用变量

  1. ---
  2. - hosts: webservers
  3. roles:
  4. - common
  5. - { role: foo_app_instance, dir: '/opt/a', port: 5000 }
  6. - { role: foo_app_instance, dir: '/opt/b', port: 5001 }

使用表达式

  1. ---
  2. - hosts: webservers
  3. roles:
  4. - { role: some_role, when: "ansible_os_family == 'RedHat'" }

assign tags

  1. ---
  2. - hosts: webservers
  3. roles:
  4. - { role: foo, tags: ["bar", "baz"] }
  1. ---
  2. - hosts: webservers
  3. pre_tasks:
  4. - shell: echo 'hello'
  5. roles:
  6. - { role: some_role }
  7. tasks:
  8. - shell: echo 'still busy'
  9. post_tasks:
  10. - shell: echo 'goodbye'

role默认变量

在defaults/main.yml中添加

role依赖

role依赖存储在meta/main.yml文件

  1. ---
  2. dependencies:
  3. - { role: common, some_parameter: 3 }
  4. - { role: apache, port: 80 }
  5. - { role: postgres, dbname: blarg, other_parameter: 12 }
  6. # 全路径
  7. ---
  8. dependencies:
  9. - { role: '/path/to/common/roles/foo', x: 1 }
  10. # 使用版本控制
  11. ---
  12. dependencies:
  13. - { role: 'git+http://git.example.com/repos/role-foo,v1.1,foo' }
  14. - { role: '/path/to/tar/file.tgz,,friendly-name' }

allow_duplicates: yes

  1. ---
  2. dependencies:
  3. - { role: wheel, n: 1 }
  4. - { role: wheel, n: 2 }
  5. - { role: wheel, n: 3 }
  6. - { role: wheel, n: 4 }
  7. # meta/main.yml内容
  8. ---
  9. allow_duplicates: yes
  10. dependencies:
  11. - { role: tire }
  12. - { role: brake }
  13. # result
  14. tire(n=1)
  15. brake(n=1)
  16. wheel(n=1)
  17. tire(n=2)
  18. brake(n=2)
  19. wheel(n=2)
  20. ...
  21. car

ansible使用4-Playbook Roles and Include Statements的更多相关文章

  1. Ansible Playbook Roles and Include Statements

    介绍 虽然可以在一个非常大的文件中编写一个playbook(您可能会以这种方式开始学习playbook),但最终您将需要重新使用文件并开始组织事情. 在基本级别,饱含任务的文件允许您将配置策略分解成较 ...

  2. Playbook 角色(Roles) 和 Include 语句

    简介 当我们刚开始学习运用 playbook 时,可能会把 playbook 写成一个很大的文件,到后来可能你会希望这些文件是可以方便去重用的,所以需要重新去组织这些文件. Include 语句 基本 ...

  3. ansible编译httpd playbook示例

    以下是playbook的内容.它的处理流程是: 1.先在本地下载apr,apr-util,httpd共3个.tar.gz文件. 2.解压这3个文件. 3.安装pcre和pcre-devel依赖包. 4 ...

  4. Ansible playbook roles

    1  概述 角色(roles):如果我们使用playbook写成一个文件,这个文件会很大,但是不方便组织,我们可以分组,把playbook根据功能,如handler,tasks等分门别类的放在在各自的 ...

  5. devops工具-Ansible进阶playbook&roles

    一.playbook介绍     playbook 是 Ansible 管理配置.部署应用的核心所在,一个playbook由有多“play组成”,而一个play实际就是一个task,每个task是由多 ...

  6. ansible的高级应用-roles

    在之前我们知道了playbook,类似于shell的脚本,playbook适用于一些不太麻烦的部署任务,比如说使用playbook安装mysql,那么我们直接写一个playbook文件即可.可是如果我 ...

  7. ansible中的playbook详解

    首先简单说明一下playbook,playbook是什么呢?根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断等 ...

  8. ansible核心模块playbook介绍

    ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible pla ...

  9. playbook+roles

    playbook setup ansible_all_ipv4_addresses # ipv4的所有地址 ansible_all_ipv6_addresses # ipv6的所有地址 ansible ...

随机推荐

  1. freemarker常用标签解释二

    1 assign 指令 使用这个指令你可以创建一个新的变量,或者替换一个已经存在的变量.注意仅仅顶级变量可以被创建/替换(也就是说你不能创建/替换some_hash.subvar,除了some_has ...

  2. 21. sessionStorage和localStorage的使用

    sessionStorage和localStorage的使用   前言 这是学习笔记,把从别人博客里转载的https://www.cnblogs.com/wangyue99599/p/9088904. ...

  3. php版 日文半角转全角

    工作需要,写的这个 /* *转载请注明 http://www.cnblogs.com/kclteam/p/5278923.html$str //参数可以是字符串或数组*/ function HkToF ...

  4. SprimgMVC学习笔记(八)—— SpringMVC与前台json数据交互

    一.两种交互形式 可以看出,前台传过来的方式有两种,一种是传json格式的数据过来,另一种就是在url的末尾传普通的key/value串过来,针对这两种方式,在Controller类中会有不同的解析, ...

  5. C语言中typedef的解释_1

    typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,它与宏定义有些差异. 它本身是一种存储类的关键字,与auto.extern.mutable.static.register等关键字不能 ...

  6. Kibana源码启动报错记录--ENOSPC

    执行该命令可解决:echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysc ...

  7. Codeforces-C-Grid game(思维)

    You are given a 4x4 grid. You play a game - there is a sequence of tiles, each of them is either 2x1 ...

  8. Java StringTokenzier

    Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokenizer可以帮你. public static v ...

  9. Nuxt 2.3.X 配置sass

    1.需要安装node-sass和sass-loader就行了 npm i -S node-sass sass-loader

  10. C# IO流 File.Exists,Directory.Exists, File.Create,Directory.CreateDirectory

    void Start() { CreateDirectory(); CreateFile(); } //平台的路径(封装起来的一个属性,这不是一个方法) public string path { ge ...