2016-08-28 20 views
10

Tôi có vai trò Ansible, ví dụLàm thế nào tôi có thể ẩn các nhiệm vụ sản lượng bỏ qua trong Ansible

--- 
- name: Deploy app1 
    include: deploy-app1.yml 
    when: 'deploy_project == "{{app1}}"' 

- name: Deploy app2 
    include: deploy-app2.yml 
    when: 'deploy_project == "{{app2}}"' 

Nhưng tôi triển khai chỉ có một ứng dụng trong một cuộc gọi vai trò. Khi tôi triển khai một số ứng dụng, tôi gọi vai trò nhiều lần. Nhưng mỗi lần có rất nhiều skipped tasks output (từ các tác vụ không vượt qua điều kiện), mà tôi không muốn thấy. Làm thế nào tôi có thể tránh nó?

+0

Làm thế nào là nó có thể không hiển thị nhiệm vụ bỏ qua cho 'Triển khai app1' nhưng không cho' Triển khai app2'? Tôi muốn bỏ qua màn hình này chỉ cho một số lượng công việc nhất định. –

+0

Trong các ý kiến ​​dưới đây (http://stackoverflow.com/questions/39189549/how-can-i-hide-skipped-tasks-output-in-ansible?noredirect=1#comment65746398_39189835) chúng tôi đã thảo luận với @ konstantin-suvorov rằng bạn không thể bỏ qua tên tác vụ vì chúng được in trước khi đưa ra quyết định. – 32cupo

Trả lời

7

Ansible cho phép bạn điều khiển đầu ra bằng cách sử dụng tùy chỉnh callbacks.

Trong trường hợp này, bạn có thể chỉ cần sử dụng skippy callback sẽ không xuất bất kỳ thứ gì trên tác vụ bị bỏ qua.

+0

Khi tôi sao chép plugin vào thư mục plugin gọi lại và chạy lại sách, tôi không nhận thấy bất kỳ thay đổi nào. Tôi tìm thấy thuộc tính display_skipped_hosts trong tệp ansible.cfg (http://docs.ansible.com/ansible/intro_configuration.html#display-skipped-hosts) nhưng nó vẫn hiển thị tên của các tác vụ bị bỏ qua. – 32cupo

+0

Bạn có để nguyên tên đó không? Vì các tài liệu đề cập đến nó tải theo thứ tự bảng chữ cái và 'mặc định' rõ ràng xuất hiện trước 'skippy' nên nó sẽ không tải. – ydaetskcoR

+0

Tôi đã cố gắng xóa tất cả các plugin gọi lại của mình, sau đó sao chép skippy.py vào thư mục gọi lại, chạy playbook và nhận được kết quả tương tự. Vì vậy, tôi đã xóa skippy.pyc và đổi tên thành skippy.py thành akippy.py và nó giống nhau. Tôi chạy cả hai lựa chọn nhiều lần, nhưng đầu ra là như nhau.Khi tôi thử một plugin gọi lại khác (https://github.com/n0ts/ansible-human_log) nó đã hoạt động. – 32cupo

7

Tôi giả sử bạn không muốn thấy các tác vụ bị bỏ qua trong đầu ra khi chạy Ansible.

Đặt giá trị này thành false trong tệp ansible.cfg.

display_skipped_hosts = false 

Lưu ý. Nó vẫn sẽ xuất ra tên của nhiệm vụ mặc dù nó sẽ không hiển thị "bỏ qua" nữa.

CẬP NHẬT: bằng cách bạn cần đảm bảo ansible.cfg nằm trong thư mục làm việc hiện tại.

Lấy từ tệp ansible.cfg.

ansible sẽ đọc ANSIBLE_CONFIG, ansible.cfg trong thư mục làm việc hiện tại, .ansible.cfg trong thư mục nhà hoặc /etc/ansible/ansible.cfg, tùy theo nó tìm thấy đầu tiên.

Vì vậy, hãy đảm bảo bạn đang đặt display_skipped_hosts = false trong tệp ansible.cfg thích hợp.

Hãy cho tôi biết làm thế nào bạn đi

+0

trong các bình luận của câu trả lời trước tôi đã đề cập, rằng tôi đã thử thuộc tính ansible.cfg này, mặc dù nó có tác dụng tương tự như plugin gọi lại skippy. Nhưng cảm ơn bạn đã trả lời. – 32cupo

1

Nếu bạn không nhớ mất màu sắc bạn có thể bõ mẫu âm chót nhiệm vụ bỏ qua bởi đường ống đầu ra thông qua sed:

ansible-playbook whatever.yml | sed -nr '/^TASK/{h;n;/^skipping:/{n;b};H;x};p' 
+1

Bạn có thể buộc màu với 'force_color = 1' trong' ansible.cfg'. – ceving

+0

Hoạt động hoàn hảo, nhưng khi tôi sử dụng 'force_color' tôi phải sử dụng sed -' sed -nr '/^TASK/{h; n;/^^ [\ [0; 36mskipping:/{n; b}; H ; x}; p'' – 32cupo

-1

Nếu bạn đang sử dụng vai trò, bạn có thể sử dụng when hủy bỏ việc đưa vào main.yml

# roles/myrole/tasks/main.yml 
- include: somefile.yml 
    when: somevar is defined 


# roles/myrole/tasks/somefile.yml 
- name: this task will only run (and be seen in the output) if somevar is defined 
    debug: 
    msg: "Hello World" 
+0

Điều này sẽ không hủy bỏ bao gồm, nhưng chỉ cần thêm cho khi mọi nhiệm vụ bên trong bao gồm. Vui lòng đọc về tĩnh/động bao gồm. –

+0

@KonstantinSuvorov bạn nói đúng, tôi đã sai. Dòng nhiệm vụ vẫn được hiển thị. Đó là trình tiết kiệm thời gian cho tôi khi tôi muốn bỏ qua tập tin hoàn chỉnh. – Volker

Các vấn đề liên quan