2015-03-10 16 views
6

Tôi có một cấu trúc biến ansible cụ thể mà tôi muốn lấy từ vault vào một tập tin yaml trên máy chủ của tôi.Ansible ghi các biến vào tập tin YAML

Cho phép giả định một cấu trúc như thế này:

secrets: 
    psp1: 
    username: this 
    password: that 
    secret_key: 123 
    ... 

tôi cần một cái gì đó giống như một mẫu "chung chung" để đầu ra bất cứ điều gì "bí mật" chứa vào lúc này, vì nội dung những thay đổi gần như hoàn toàn dựa trên môi trường hiện tại.

Giải pháp đơn giản nhất tôi có thể nghĩ đến là đầu ra toàn bộ cấu trúc trong một mẫu như thế này:

# config/secrets.yml 
{{ secrets | to_yaml }} 

Nhưng bộ lọc jinja2 to_yaml không chỉ "yamlify" cấp độ đầu tiên, nestings sâu hơn được outputted trong json .

Tôi có thể giải quyết vấn đề đó bằng cách nào đó không? Có cách nào dễ dàng hơn để đạt được điều tôi muốn không?

Cảm ơn bạn đã trợ giúp!

+0

JSON là một tập hợp con hợp lệ YAML, vì vậy bạn vẫn đang nhận được YAML. – jwodder

+0

@jwodder Arg! Tất nhiên bạn nói đúng. Tôi không biết tại sao tôi luôn bỏ qua sự kiện này. Cảm ơn bạn. –

Trả lời

12
  1. Như jwodder đã nói, nó hợp lệ.
  2. Nếu bạn đang sử dụng to_yaml (thay vì to_nice_yaml), bạn đã cài đặt cũ ansible, đã đến lúc nâng cấp.
  3. Sử dụng to_nice_yaml
  4. Có thể chuyển các hàm kwarg của riêng bạn để lọc các hàm, thường chuyển chúng vào cuộc gọi mô-đun python nằm bên dưới. Giống như this one cho trường hợp của bạn. Vì vậy, một cái gì đó như:

    {{ secrets | to_nice_yaml(width=50, explicit_start=True, explicit_end=True) }} 
    

    chỉ bắt là bạn không thể ghi đè indent=4, allow_unicode=True, default_flow_style=False

+0

điều này làm việc tuyệt vời cho playbook của tôi cho elasticsearch, đổ toàn bộ cấu hình từ một mảng –

+1

Nó không phải là một lỗi định dạng, nó là một tính năng markdown. Mã bên trong một mục danh sách phải được thụt lề kép. –

+0

Lưu ý rằng 'indent' bây giờ có thể được ghi đè, ít nhất là Ansible 2.2.0 (tôi sử dụng nó để thụt lề 2 khoảng trắng để tuân theo các tiêu chuẩn mã hóa cho một dự án). Xem: https://github.com/ansible/ansible/pull/17085 – geerlingguy

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