使用Ansible ansible 2.4.2.0,我只想从主剧本(main.yml)中运行一个特定的剧本
---
# main playbook for cluster deployment
# initial configuration of OS same for all hosts
- name: Cluster Deployer playbook
hosts: all
roles:
- { role: common, tags: ['initial_config'] }
# configuration specific for loadbalancers hosts group
- name: Cluster Deployer playbook - Load Balancer setup
hosts: loadbalancers
roles:
- { role: loadbalancers_setup, tags: ['setup_loadbalancer'] }
# configuration specific for db-servers hosts group
- name: Cluster Deployer playbook - Database servers setup
hosts: db-servers
roles:
- { role: db_servers_setup, tags: ['setup_db_server'] }
# configuration specific for web-servers hosts group
- name: Cluster Deployer playbook - Web Servers setup
hosts: web-servers
roles:
- { role: web_servers_setup, tags: ['setup_web_server'] }这是我的hosts文件
[loadbalancers]
192.168.99.10
[db-servers]
192.168.99.2
[web-servers]
192.168.99.3
192.168.99.4我用命令打电话给剧本
ansible-playbook main.yml --inventory hosts --tags initial_config问题是,尽管我只要求在initial_config部分中使用标记roles,但Ansible会运行该剧本中的所有游戏。我尝试过将tags部分设置为hosts,但没有成功。
是否可以在此级别上定义标记,而不需要在角色中标记单个任务?我对Ansible很陌生,所以如果有更好的方法来写剧本,我会全神贯注地听。
发布于 2018-01-29 11:40:53
“标记”指令在代码中放错了位置。
您的代码应该如下所示:
---
# main playbook for cluster deployment
# initial configuration of OS same for all hosts
- name: Cluster Deployer playbook
hosts: all
roles:
- common
tags:
- initial_config
# configuration specific for loadbalancers hosts group
- name: Cluster Deployer playbook - Load Balancer setup
hosts: loadbalancers
roles:
- loadbalancers_setup
tags:
- setup_loadbalancer
# configuration specific for db-servers hosts group
- name: Cluster Deployer playbook - Database servers setup
hosts: db-servers
roles:
- db_servers_setup
tags:
- setup_db_server
# configuration specific for web-servers hosts group
- name: Cluster Deployer playbook - Web Servers setup
hosts: web-servers
roles:
- web_servers_setup
tags:
- setup_web_server您的ansible命令应该如下所示:
ansible-playbook main.yml --inventory hosts --tags "initial_config"有关更多信息,请查看的官方文件。
发布于 2018-01-30 11:32:38
看起来您对标记继承有误解:
标记继承--您可以将标记应用于不仅仅是任务,但它们只影响任务本身。在其他地方应用标记只是一种方便,所以您不必在每项任务上都编写它。标签继承的不可用文档
试着做这样的事情:
- name: Cluster Deployer playbook
hosts: all
tasks:
- include_role:
name: common
tags:
- inital_confighttps://serverfault.com/questions/894592
复制相似问题