首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible:只有在带有特定标记的情况下才运行play

Ansible:只有在带有特定标记的情况下才运行play
EN

Server Fault用户
提问于 2018-01-29 11:30:31
回答 2查看 15.1K关注 0票数 3

使用Ansible ansible 2.4.2.0,我只想从主剧本(main.yml)中运行一个特定的剧本

代码语言:javascript
复制
---
# 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文件

代码语言:javascript
复制
[loadbalancers]
192.168.99.10

[db-servers]
192.168.99.2

[web-servers]
192.168.99.3
192.168.99.4

我用命令打电话给剧本

代码语言:javascript
复制
ansible-playbook main.yml --inventory hosts --tags initial_config

问题是,尽管我只要求在initial_config部分中使用标记roles,但Ansible会运行该剧本中的所有游戏。我尝试过将tags部分设置为hosts,但没有成功。

是否可以在此级别上定义标记,而不需要在角色中标记单个任务?我对Ansible很陌生,所以如果有更好的方法来写剧本,我会全神贯注地听。

EN

回答 2

Server Fault用户

发布于 2018-01-29 11:40:53

“标记”指令在代码中放错了位置。

您的代码应该如下所示:

代码语言:javascript
复制
---
# 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命令应该如下所示:

代码语言:javascript
复制
ansible-playbook main.yml --inventory hosts --tags "initial_config"

有关更多信息,请查看的官方文件。

票数 2
EN

Server Fault用户

发布于 2018-01-30 11:32:38

看起来您对标记继承有误解:

标记继承--您可以将标记应用于不仅仅是任务,但它们只影响任务本身。在其他地方应用标记只是一种方便,所以您不必在每项任务上都编写它。标签继承的不可用文档

试着做这样的事情:

代码语言:javascript
复制
- name: Cluster Deployer playbook
  hosts: all
  tasks:
    - include_role:
        name: common
      tags:
       - inital_config
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/894592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档