2017-07-17 76 views

回答

0

执行Ansible操作手册“与相应的主机组和标签”的唯一方法是运行ansible-playbook可执行文件。这是从清单开始的所有数据结构将独立于当前运行的剧本创建的唯一情况。

你可以简单地调用使用command模块的控制机器上的可执行文件:

- hosts: localhost 
    tasks: 
    - command: ansible-playbook {{ playbook }} --tags {{ tags }} 

您还可以使用local_actiondelegate_to


这可能是您要包括戏剧,或使用角色,但鉴于问题的问题描述,这是不可能告诉。

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更好的恕我直言。可以根据要求提供示例。

+0

通过这种方式,您可以将剧本纳入当前的剧本运行。从字面上理解,你没有回答你自己的问题(这是因为词汇滥用,正如我在我的答案中以小字体提到的那样)。 – techraf