2015-09-26 16 views

Trả lời

7

Có những hạn chế trong các tài liệu Ansible khi nói đến loại điều này - nếu có một thực hành chính thức hay nhất, tôi đã không đi qua nó.

Một cách hay để giữ sách chơi của bạn tốt và dễ đọc là chạy nhiều lần phát khác nhau đối với máy chủ và gọi vai trò với các thông số khác nhau trong mỗi.

Cú pháp role: foo, var: blah được hiển thị một cách nhỏ vào this description là một cách hay để truyền tham số vào và giữ nó rõ ràng trong nháy mắt những gì đang diễn ra. Ví dụ:

- name: Run the docker role with docker_container_state=foo 
    hosts: docker-host 
    roles: 
    - { role: docker_container, docker_container_state: foo } 

- name: Run the docker role with docker_container_state=bar 
    hosts: docker-host 
    roles: 
    - { role: docker_container, docker_container_state: bar } 
5

Tôi thường sử dụng includes để chạy một phần vai trò (hoặc toàn bộ vai trò!) Nhiều lần, nếu tôi có bố cục thay đổi. Xem sách hướng dẫn ví dụ bên dưới, với vai trò apply_stateprint_state.yml bên trong thư mục roles/apply_state/tasks. Bí quyết là để vượt qua mục bên trong bao gồm, sau đó nó là một miếng bánh.

playbook.yml

- hosts: localhost 
    roles: 
    - { role: apply_state, states: [ state_one, state_two, state_three ] } 

vai trò/apply_state/nhiệm vụ/main.yml

- name: print all states! 
    include: print_state.yml state="{{ item }}" 
    with_items: "{{ states }}" 

vai trò/apply_state/nhiệm vụ/print_state.yml

- name: echo state 
    debug: msg="{{ state }}" 

Xem kết quả của ansible-playbook -i localhost, playbook.yml bên dưới:

PLAY [localhost] *************************************************************** 

TASK [setup] ******************************************************************* 
ok: [localhost] 

TASK [apply_state : print all states!] ***************************************** 
included: /home/user/roles/apply_state/tasks/print_state.yml for localhost 
included: /home/user/roles/apply_state/tasks/print_state.yml for localhost 
included: /home/user/roles/apply_state/tasks/print_state.yml for localhost 

TASK [apply_state : echo state] ************************************************ 
ok: [localhost] => { 
    "msg": "state_one"                             
}                                  

TASK [apply_state : echo state] ************************************************ 
ok: [localhost] => { 
    "msg": "state_two"                             
}                                  

TASK [apply_state : echo state] ************************************************ 
ok: [localhost] => { 
    "msg": "state_three"                            
}                                  

PLAY RECAP ********************************************************************* 
localhost     : ok=7 changed=0 unreachable=0 failed=0 
Các vấn đề liên quan