zoukankan      html  css  js  c++  java
  • ansbile Tags && Block

    Tags

    官网示例:https://docs.ansible.com/ansible/2.6/user_guide/playbooks_tags.html

      编写执行playbook的时候,每次修改完yml文件,没必要把整个playbook都运行一遍,只需要运行改变了的task。我们可以给task一个标签,运行playbook时明确只运行这个标签(tag)对应的task就可以了。多个任务可以使用同一个tags,一个任务也可以用多个tags表示

    官方示例:

    - hosts:webserver  
    tags: deploy       #给整个playbook打标签
    tasks:
    - yum: name={{ item }} state=installed with_items: - httpd - memcached tags:                #用packages和pk 标签来表示yum这个操作 - packages
    - pk
    - template: src=templates/src.j2 dest=/etc/foo.conf tags: - configuration

    此时若希望只run其中的某个task,这run 的时候指定tags即可

    ansible-playbook example.yml --tags "configuration,packages"   #run 多个tags
    ansible-playbook example.yml --tags packages                   # 只run 一个tag

    相反,也可以跳过某个task

    ansible-playbook example.yml --skip-tags configuration

    tags属性放到roles上

    roles:
      - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }      #将会给roles下的所有任务打上标签

    tags属性与include结合使用

    - include: foo.yml tags=web,foo

    always、tagged、untagged、all 是四个系统内置的tag,有自己的特殊意义

      always: 指定这个tag 后,task任务将永远被执行,而不用去考虑是否使用了--skip-tags标记

       tagged: 当 --tags 指定为它时,则只要有tags标记的task都将被执行,--skip-tags效果相反

       untagged: 当 --tags 指定为它时,则所有没有tag标记的task 将被执行,--skip-tags效果相反

      all: 这个标记无需指定,ansible-playbook 默认执行的时候就是这个标记.所有task都被执行

    Block

    block功能可以将任务进行分组,并且可以在块级别上应用任务变量

    示例(任务分组):

    ---
    
    - hosts: web
      
      tasks:
            - block
                 - yum: name=httpd state=present
                 - template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
                 - service: name=httpd state=started enabled=yes
             when: ansible_os_family == "RedHat"
              sudo :yes
    
            - block:
                 - apt: name=apache2 state=present
                 - template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
                 - service: name=httpd state=started enabled=yes
              when: ansible_os_family == "RedHat"
              sudo :yes
  • 相关阅读:
    包和模块的导入问题
    第9.6节 Python使用read函数读取文件内容
    第9.5节 Python的readlines读取文件内容及其参数hint使用分析
    第9.4节 Python中用readline读取二进制文件方式打开文件
    第9.3节 Python的文件行读取:readline
    第9.2节 Python的文件打开函数open详解
    第9.1节 Python的文件打开函数open简介
    第九章 Python文件操作
    第8.34节 《Python类中常用的特殊变量和方法》总结
    第8.33节 Python中__getattr__以及__getattr__与__ getattribute__的关系深入剖析
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8427313.html
Copyright © 2011-2022 走看看