ansible playbook按此顺序执行:任务,角色,任务,角色,任务

时间:2015-06-10 17:48:49

标签: ansible

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

  1. 任务
  2. 作用
  3. 任务
  4. 作用
  5. 任务
  6. 这是我到目前为止(任务,角色,任务):

    ---
    - name: Task Role Task
      hosts: 127.0.0.1
      connection: local
      gather_facts: false
    
      pre_tasks:
       - name: Do this task first
         foo:
    
      roles:
      - role: this role second
        foo:
    
      post_tasks: 
       - name: Do this task third
         foo:
    

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

3 个答案:

答案 0 :(得分:22)

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

---
- 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

答案 1 :(得分:20)

我建议您为后期和后期任务创建角色。

您的site.yml必须是这样的:

---
- hosts: localhost
  remote_user: "{{remote_user}}"
  sudo: yes
  gather_facts: false
  roles:
    - pre
    - main_role
    - post

在roles文件夹中,您必须有三个角色,pre,post和main_role。

答案 2 :(得分:12)

---
- 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

参见官方docs