Chụp đầu ra mẫu khi đang bay


8

Tôi cần chạy một lệnh trên máy chủ đích chỉ chấp nhận dữ liệu thông qua stdin. Dữ liệu tôi đang cung cấp nó đến từ một tệp mẫu và chứa dữ liệu nhạy cảm, vì vậy tôi không muốn nó nằm trong hệ thống tệp ngay cả trong một giây.

Tôi đang cố gắng tìm cách lấy đầu ra của một tác vụ mẫu để tôi có thể chuyển nó tới lệnh. Cái gì đó như:

- name: generate data
  template:
    src: data.j2
    dest: [I'd rather not have any files written]
  register: myvar

- name: run command
  shell: "command < {{ myvar }}"

Có phải là một cách tốt hơn để làm điều này mà không liên quan đến việc viết một tập tin tạm thời, đưa nó vào lệnh và sau đó xóa nó?


Đã làm điều đó một lần như bạn mô tả, với tập tin tạm thời. Đã tạo yêu cầu tính năng cho những người có khả năng: github.com/ansible/ansible/issues/22134
Selivanov Pavel

Câu trả lời:


6

Có câu trả lời từ những người có khả năng:

some_var: "{{ lookup('template', 'tmpl.j2') }}"

1
Tuyệt quá! Nếu bạn đang sử dụng "with_items" với nhiệm vụ của mình thì bạn có thể sử dụng biến "item" trong mẫu.
Ikrom

2

Cách xử lý thích hợp các lệnh cần nhập từ stdinlà mô đun mong đợi .

Cách thích hợp để xử lý dữ liệu nhạy cảm với Ansible là kho tiền ansible . Bằng cách này hay cách khác, dữ liệu sẽ không được mã hóa trên hệ thống tệp vì Ansible tạo các tập lệnh Python để thực thi các lệnh được xác định trong các tác vụ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.