• 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
  • 相关阅读:
    shell脚本空行造成“: not found.sh“报错
    MySQL实现分组排序(8.0版本以下ROW_NUMBER() OVER())
    vscode远程主机
    nginx-ingress-controler改写上下文
    nginx-ingress-controller自定义参数
    kubernetes安装nginx-ingress-controller服务
    二进制kubernetes升级
    C++关键字完整版
    virtio、vhost和 vhost-user
    Tomcat端口占用报错时的排除办法
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8427313.html
Copyright © 2020-2023  润新知