2016-04-15 12 views
5

Để thực hiện một số thao tác cục bộ (không phải trên máy từ xa), tôi cần đặt nội dung của biến ansible bên trong một tệp tạm thời. Vui lòng lưu ý rằng tôi đang tìm một giải pháp đảm bảo việc tạo tệp tạm thời đến một vị trí có thể ghi nó (không có tên mã cứng) và cũng có thể xử lý việc xóa tệp vì chúng tôi không muốn để lại những thứ phía sau.Làm cách nào để lưu biến ansible vào tệp tạm thời được tự động xóa khi kết thúc quá trình thực thi playbook?

Trả lời

1

Thay vì làm điều đó bằng một tệp, tại sao không chỉ use the environment? Điều này wan bạn có thể dễ dàng làm việc với các biến và nó sẽ được sống thông qua các phiên ansible và bạn có thể dễ dàng lấy nó trong bất kỳ bước hoặc bên ngoài của họ.

1

Mặc dù sử dụng môi trường shell/ứng dụng có lẽ, nếu bạn đặc biệt muốn sử dụng một tập tin để lưu trữ dữ liệu biến bạn có thể làm một cái gì đó như thế này

- hosts: server1 
    tasks: 
    - shell: cat /etc/file.txt 
    register: some_data 
    - local_action: copy dest=/tmp/foo.txt content="{{some_data.stdout}}" 

- hosts: localhost 
    tasks: 
    - set_fact: some_data="{{ lookup('file', '/tmp/foo.txt') }}" 
    - debug: var=some_data 

Đối với yêu cầu của bạn để cung cấp cho các tập tin một tên duy nhất và làm sạch nó ở cuối vở kịch. Tôi sẽ để việc triển khai đó cho bạn

+0

Tôi thấy bản thân mình sử dụng các tệp tạm thời khá nhiều vì tôi phải gọi các hàm lấy tệp làm đối số. Tôi phải đổ dữ liệu từ một biến hoặc mẫu vào một tệp tạm thời, sử dụng nó và sau đó dọn dẹp. Ansible thực sự có thể làm với một cách viết tắt cho điều đó. –

+0

Thuật toán viết tắt có thể giống với thuật ngữ 'with' của Python, tạo ra một tài nguyên tự động bị xóa khi phạm vi đó đã hết hạn. Một phương thức khác chỉ áp dụng khi lệnh là lệnh shell là sử dụng các tệp bash ở đây: 'cat <(echo foo)' tạo tệp tạm thời, viết foo cho nó, sau đó hàm dòng lệnh, ở đây cat, được gọi đường dẫn tệp. Nhưng đó là chỉ cho vỏ và nó kinda đẩy vấn đề đi đến một ngôn ngữ mà điều trị các tập tin tạm thời là quan trọng và có giá trị. –

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