有没有办法在 ansible playbook 中只运行一个任务?
例如,在 roles/hadoop_primary/tasks/hadoop_master.yml 中。我有 "start hadoop job tracker services" 任务。我可以只运行那一项任务吗?
hadoop_master.yml 文件:

# Playbook for  Hadoop master servers

- name: Install the namenode and jobtracker packages
  apt: name={{item}} force=yes state=latest
  with_items:
   - hadoop-0.20-mapreduce-jobtracker
   - hadoop-hdfs-namenode
   - hadoop-doc
   - hue-plugins

- name: start hadoop jobtracker services
  service: name=hadoop-0.20-mapreduce-jobtracker state=started
  tags:
   debug

最佳答案

您应该使用 tags:,如 https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html 中所述

如果你有一个很大的剧本,能够在不运行整个剧本的情况下运行配置的特定部分可能会很有用。
出于这个原因,播放和任务都支持“标签:”属性。
例子:

tasks:

    - yum: name={{ item }} state=installed
      with_items:
         - httpd
         - memcached
      tags:
         - packages

    - template: src=templates/src.j2 dest=/etc/foo.conf
      tags:
         - configuration
如果你只想运行一个很长的剧本的“配置”和“包”部分,你可以这样做:
ansible-playbook example.yml --tags "configuration,packages"
另一方面,如果你想在没有某些任务的情况下运行剧本,你可以这样做:
ansible-playbook example.yml --skip-tags "notification"
您还可以将标签应用于角色:
roles:
  - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }
你也可以标记基本的包含语句:
- include: foo.yml tags=web,foo
这两者都具有在 include 语句中标记每个任务的功能。

关于ansible - 如何在ansible playbook中只运行一项任务?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23945201/

10-16 22:31