从Ansible中包含的任务文件调用角色

从Ansible中包含的任务文件调用角色,ansible,ansible-playbook,Ansible,Ansible Playbook,我正在使用部署一个php应用程序,我需要使用“代码更新后”挂钩来完成一些最终任务,包括一些以角色形式创建的任务 因为这个钩子是一个include,所以我不知道如何执行一些任务,然后执行一个角色,然后继续执行更多的任务 在Ansible中,从包含的任务文件中调用角色是否可能?不,您不能从任务中调用角色。角色只能应用于角色或作为其他角色的依赖项 如果您的角色不太复杂,您可以简单地包含您角色的tasks/main.yml。但是,如果您有角色默认值、变量、元等,这将不起作用。如果使用模板或文件,则可能需

我正在使用部署一个php应用程序,我需要使用“代码更新后”挂钩来完成一些最终任务,包括一些以角色形式创建的任务

因为这个钩子是一个include,所以我不知道如何执行一些任务,然后执行一个角色,然后继续执行更多的任务


在Ansible中,从包含的任务文件中调用角色是否可能?

不,您不能从任务中调用角色。角色只能应用于角色或作为其他角色的依赖项


如果您的角色不太复杂,您可以简单地包含您角色的
tasks/main.yml
。但是,如果您有角色
默认值
变量
等,这将不起作用。如果使用模板或文件,则可能需要为其提供相对或甚至绝对路径,而不是简单地使用文件或模板的名称。

否,您不能从任务中调用角色。角色只能应用于角色或作为其他角色的依赖项


如果您的角色不太复杂,您可以简单地包含您角色的
tasks/main.yml
。但是,如果您有角色
默认值
变量
等,这将不起作用。如果使用模板或文件,则可能需要为其提供相对路径,甚至绝对路径,不要简单地使用文件或模板的名称。

您可以在
ansistrano.deploy/meta
中指定角色依赖项,但这只允许您使用ansistrano指定一个依赖项步骤,除非您将其拆分为单独的角色

这正是我建议你做的。我不熟悉Capistrano,但通过阅读Anistrano的角色,它主要是在另一个抽象层上进行分层,通过对Capistrano比Ansible更熟悉的人巧妙地使用变量

使用Capistrano部署工作流和带有符号链接的回滚技术来创建单个角色和
deploy.yml
rollback.yml
剧本,它们按照指定的顺序调用这些角色

下面是一个示例剧本,其中包含所有可能的步骤作为角色,但您只需要创建实际使用的步骤

---
- hosts: all
  roles:
    - pre-setup
    - setup
    - pre-update
    - update-code
    - pre-symlink-shared
    - symlink-shared
    - pre-symlink
    - symlink
    - pre-cleanup
    - cleanup
    - post-cleanup

您可以在
ansistrano.deploy/meta
中指定角色依赖项,但这只允许您使用ansistrano指定一个依赖项步骤,除非您将其拆分为单独的角色

这正是我建议你做的。我不熟悉Capistrano,但通过阅读Anistrano的角色,它主要是在另一个抽象层上进行分层,通过对Capistrano比Ansible更熟悉的人巧妙地使用变量

使用Capistrano部署工作流和带有符号链接的回滚技术来创建单个角色和
deploy.yml
rollback.yml
剧本,它们按照指定的顺序调用这些角色

下面是一个示例剧本,其中包含所有可能的步骤作为角色,但您只需要创建实际使用的步骤

---
- hosts: all
  roles:
    - pre-setup
    - setup
    - pre-update
    - update-code
    - pre-symlink-shared
    - symlink-shared
    - pre-symlink
    - symlink
    - pre-cleanup
    - cleanup
    - post-cleanup
现在(在Ansible v2.2及更新版本中),您可以将角色作为任务包含在中。现在(在Ansible v2.2及更新版本中)可以将角色作为任务包含在中,请参见使用示例。请参见使用示例