在Ansible中,playbooks可以将标签传递给其他剧本吗?

时间:2017-07-17 19:14:02

标签: ansible

我们有一个"定期"在我们的角色中标记,我们的Ansible框会定期运行文件保证等。是否可以使用一个定期运行的剧本来调用其他具有相应主机组和标签的剧本?

2 个答案:

答案 0 :(得分:0)

使用适当的主机组和标签执行Ansible playbook" 的唯一方法"是运行command可执行文件。这是唯一一种情况,从库存开始的所有数据结构都将与当前运行的剧本分开创建。

您只需使用控制计算机上的- hosts: localhost tasks: - command: ansible-playbook {{ playbook }} --tags {{ tags }} 模块调用可执行文件:

local_action

您还可以使用delegate_toinput type="button"

可能是你想要包含游戏或使用角色,但是如果问题中有问题描述,则无法分辨。

答案 1 :(得分:0)

以下是我们最终得到的结果:事实证明,在命令行上传递的标签和变量一直都是继承的。这允许我们在命令行上传递它:

ansible-playbook -t periodic periodic.yml

这就是这样的剧本:

---
- name: This playbook must be called with the "periodic" tag.
  hosts: 127.0.0.1
  any_errors_fatal: True
  tasks:
    - fail: 
      when: periodic not True

- name: Begin periodic runs for type 1 servers
  include: type1-server.yml
  vars:
    servers:
      - host_group1
      - host_group2
      - ...

- name: Begin periodic runs for type 2 servers
...

我们的“真实”剧本有- hosts: "{{ servers }}",因此可以从父母那里继承。对于需要按计划运行的事物,我们角色中的任务标记为“定期”。然后我们使用SystemD来安排运行。你可以使用cron,但SystemD更好恕我直言。可根据要求提供示例。