有没有办法在一个可行的剧本中只运行一个任务?
例如,“roles/hadoop_primary/tasks/hadoop_master.yml”。我有“启动hadoop作业跟踪服务”任务。我能只运行一个任务吗?
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
Ansible 2.2的FWIW可以使用include_role:
剧本test.yml:
- name: test
hosts:
- 127.0.0.1
connection: local
tasks:
- include_role:
name: test
tasks_from: other
然后在roles/test/tasks/other.yml中:
- name: say something else
shell: echo "I'm the other guy"
并使用:ansible-playbook test调用playbook。Yml获取:
TASK [test : say something else] *************
changed: [127.0.0.1]
你熟悉教练吗?我觉得这就是你想要的。从hadoop_master移动重启。到roles/hadoop_primary/handlers/main.yml:
- name: start hadoop jobtracker services
service: name=hadoop-0.20-mapreduce-jobtracker state=started
现在在hadoop_master.yml中调用use notify:
- 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
notify: start hadoop jobtracker services
请看我的回答:只运行ansible playbook中的一个任务和处理程序
可以运行单独的role (from roles/ dir):
ansible -i stage.yml -m include_role -a name=create-os-user localhost
和单独的任务文件:
ansible -i stage.yml -m include_tasks -a file=tasks/create-os-user.yml localhost
如果将任务从role外部化到根tasks/目录(通过import_tasks: ../../tasks/create-os-user.yml实现重用),则可以独立于playbook/role运行它。
Ansible 2.2的FWIW可以使用include_role:
剧本test.yml:
- name: test
hosts:
- 127.0.0.1
connection: local
tasks:
- include_role:
name: test
tasks_from: other
然后在roles/test/tasks/other.yml中:
- name: say something else
shell: echo "I'm the other guy"
并使用:ansible-playbook test调用playbook。Yml获取:
TASK [test : say something else] *************
changed: [127.0.0.1]