Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 是否有方法仅在指定标记时运行角色?_Ansible_Roles - Fatal编程技术网

Ansible 是否有方法仅在指定标记时运行角色?

Ansible 是否有方法仅在指定标记时运行角色?,ansible,roles,Ansible,Roles,我被要求为预生产和生产服务器编写两个角色,用于安装一些程序(Memcached、其PHP扩展等),并对它们进行配置 嗯,昨天,我有点搞砸了,因为还有两个角色在使用,而我的角色还没有完成。昨天,我们团队正在进行的项目已经投入生产。在每一个场景中,剧本都在运行,所有角色都在其中,它也开始运行我的角色。幸运的是,我的团队负责人及时看到了这一点,并将我的角色从剧本中删除 下面是我在剧本中的角色在被删除之前的表现: - hosts: was roles: - { role: cron, bec

我被要求为预生产和生产服务器编写两个角色,用于安装一些程序(Memcached、其PHP扩展等),并对它们进行配置

嗯,昨天,我有点搞砸了,因为还有两个角色在使用,而我的角色还没有完成。昨天,我们团队正在进行的项目已经投入生产。在每一个场景中,剧本都在运行,所有角色都在其中,它也开始运行我的角色。幸运的是,我的团队负责人及时看到了这一点,并将我的角色从剧本中删除

下面是我在剧本中的角色在被删除之前的表现:

- hosts: was
  roles:
    - { role: cron, become: yes, tags: [ was, cron ] }
    - { role: app, when: type == 'master', become: yes, become_user: "{{become_user}}", become_flags: '-i', tags: [ was ] }
    - { role: memcacheExtension, become: yes, become_user: ansible, tags: ['memcache'] }
    - { role: gitlabRunner, become: yes, become_user: "{{become_user}}", tags: ['gitlab'] }
我的角色是最后两个。我认为,在这种配置中,只有当命令使用我设置的标记之一运行时,才会触发它们。剧透:我错了

我听说过这个标签,但它只在
任务中起作用,所以我必须为每个任务设置它,这不是我想要的

还有其他可能性吗


提前感谢

是的,有可能,或者是一项任务,可以标记

- hosts: was
  roles:
    - { role: cron, become: yes, tags: [ was, cron ] }
    - { role: app, when: type == 'master', become: yes, become_user: "{{become_user}}", become_flags: '-i', tags: [ was ] }
  tasks:
    - import_role:
        name: memcacheExtension
      become: yes
      become_user: ansible
      tags: memcache
    - import_role:
        name: gitlabRunner
      become: yes
      become_user: "{{become_user}}"
      tags: gitlab

是的,有可能,或者哪一项是任务,可以标记

- hosts: was
  roles:
    - { role: cron, become: yes, tags: [ was, cron ] }
    - { role: app, when: type == 'master', become: yes, become_user: "{{become_user}}", become_flags: '-i', tags: [ was ] }
  tasks:
    - import_role:
        name: memcacheExtension
      become: yes
      become_user: ansible
      tags: memcache
    - import_role:
        name: gitlabRunner
      become: yes
      become_user: "{{become_user}}"
      tags: gitlab

因此,一旦将角色作为任务,我就可以使用
never
标记了?是的。这也是我理解感谢的原因,似乎工作得很好,我可以用比我更了解Ansible的人来证明这一点,他似乎对这个解决方案很满意。因此,一旦角色被作为一项任务,我就可以使用
从不
标签了?是的。这也是我理解的原因,非常感谢,似乎效果很好,我可以用比我更了解Ansible的人来证明,他似乎对这个解决方案很满意