ansible playbook按以下顺序执行:任务、角色、任务、角色、任务

ansible playbook按以下顺序执行:任务、角色、任务、角色、任务,ansible,Ansible,请原谅我的新手问题,但我想执行三项任务,并在剧本中使用两个角色,顺序如下: 任务 角色 任务 角色 任务 这就是我到目前为止所做的(任务、角色、任务): 这是可能的还是我应该将我的任务更改为角色?我建议您为您的post和pre任务创建角色 您的site.yml必须如下所示: --- - hosts: localhost remote_user: "{{remote_user}}" sudo: yes gather_facts: false roles: - pre

请原谅我的新手问题,但我想执行三项任务,并在剧本中使用两个角色,顺序如下:

  • 任务
  • 角色
  • 任务
  • 角色
  • 任务
  • 这就是我到目前为止所做的(任务、角色、任务):


    这是可能的还是我应该将我的任务更改为角色?

    我建议您为您的post和pre任务创建角色

    您的site.yml必须如下所示:

    ---
    - hosts: localhost
      remote_user: "{{remote_user}}"
      sudo: yes
      gather_facts: false
      roles:
        - pre
        - main_role
        - post
    
    在“角色”文件夹中,您必须有三个角色:预角色、后角色和主角色

    每个“主机:”-块将逐个执行。因此,您可以使用多个块强制执行所需的执行顺序:

    ---
    - hosts: 127.0.0.1
      tasks:
       - name: Do this task first
    
    - hosts: 127.0.0.1
      roles:
      - role: this role second
    
    - hosts: 127.0.0.1
      tasks:
       - name: Do this task third
    

    请参见官方

    如果您决定尝试使用滚动更新,并打算按顺序执行一组播放,则此方法的成功之处在于。而不是完成一切串行,每个发挥将完成整个主机组!这是正确的方法,因为它可以正确地用于滚动更新,不像使用单独的主机部分。但可能在最初提出问题时,它还不可用。还有可能与此相关的“导入角色”。自Ansible 2.2(2016年9月)以来,这是正确的答案。
    ---
    - hosts: 127.0.0.1
      tasks:
       - name: Do this task first
    
    - hosts: 127.0.0.1
      roles:
      - role: this role second
    
    - hosts: 127.0.0.1
      tasks:
       - name: Do this task third
    
    ---
    - name: Task Role Task
      hosts: 127.0.0.1
      connection: local
      gather_facts: false
    
      tasks:
        - name: task1
          foo: 
    
        - name: include role1
          include_role: 
            name: myrole1
    
        - name: task2
          foo:
    
        - name: include role2
          include_role: 
            name: myrole2