How to run only one task in ansible playbook?

前端 未结 7 1113
一向
一向 2020-12-22 16:10

Is there a way to only run one task in ansible playbook?

For example, in roles/hadoop_primary/tasks/hadoop_master.yml. I have "start hadoop jo

7条回答
  •  时光取名叫无心
    2020-12-22 16:31

    You should use tags: as documented in http://docs.ansible.com/playbooks_tags.html


    If you have a large playbook it may become useful to be able to run a specific part of the configuration without running the whole playbook.

    Both plays and tasks support a “tags:” attribute for this reason.

    Example:

    tasks:
    
        - yum: name={{ item }} state=installed
          with_items:
             - httpd
             - memcached
          tags:
             - packages
    
        - template: src=templates/src.j2 dest=/etc/foo.conf
          tags:
             - configuration
    

    If you wanted to just run the “configuration” and “packages” part of a very long playbook, you could do this:

    ansible-playbook example.yml --tags "configuration,packages"
    

    On the other hand, if you want to run a playbook without certain tasks, you could do this:

    ansible-playbook example.yml --skip-tags "notification"
    

    You may also apply tags to roles:

    roles:
      - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }
    

    And you may also tag basic include statements:

    - include: foo.yml tags=web,foo
    

    Both of these have the function of tagging every single task inside the include statement.

提交回复
热议问题