Trả lời

137

Đọc các tài liệu tôi tìm đến phần Passing Variables On The Command Line, mà cung cấp cho mẫu này:

ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo" 

khác ví dụ chứng minh làm thế nào để tải từ JSON string (≥ 1.2) hoặc tập tin (≥ 1.3)

+12

Cũng lưu ý rằng biến (s) được xác định với '--extra-vars' sẽ ghi đè (các) biến được xác định bên trong playbook. – checksum

21
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo" 
+9

Cờ '-e' là dạng ngắn của' --extra-vars' –

+2

Tôi có thể chuyển tập tin biến không? –

+2

@AniruddhaJawanjal có, giống như '--extra-vars" @ some_file.json "' – AlanSE

15

Vì một số lý do, không có câu trả lời nào ở trên phù hợp với tôi. Như tôi cần phải vượt qua nhiều vars thêm để playbook của tôi trong Ansbile 2.2.0, đây là cách tôi đã nhận nó làm việc (lưu ý tùy chọn -e trước mỗi var):

ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2 
+3

'-e' là dạng ngắn của' --extra-vars' –

+0

@LXCdev KohaLappi +1 để chứng minh rằng bạn có thể chỉ định các vars bổ sung trong cờ '-e' của riêng mình – ctlockey

+0

Bạn cũng có thể xác định nhiều biến bằng cách sử dụng một cờ:' -e 'firstvar = false second_var = value2 "' –

49

câu trả lời khác nêu làm thế nào để vượt qua trong các biến dòng lệnh nhưng không làm thế nào để truy cập chúng, vì vậy nếu bạn làm:

--extra-vars "version=1.23.45 other_variable=foo" 

Trong file yml của bạn, bạn gán những để scoped biến ansible bằng cách làm một cái gì đó như:

vars: 
    my_version: "{{ version }}" 
    my_other_variable: {{ other_variable }} 

Một thay thế cho cách sử dụng lệnh li args ne là sử dụng các biến môi trường được đã được xác định trong phiên của bạn, bạn có thể tham khảo các file trong vòng yml ansible của bạn như thế này:

vars: 
    my_version: "{{ lookup('env', 'version') }}" 
    my_other_variable: {{ lookup('env', 'other_variable') }} 
+0

điều này không trả lời được câu hỏi, bạn nên chuyển nó thành câu hỏi riêng và thêm một liên kết ở đây vì nó liên quan. –

+6

Bạn không chắc chắn những gì bạn đang nói về ?? Câu trả lời của tôi * mở rộng * trên các câu trả lời được chấp nhận trước đó bằng cách tham khảo cờ dòng lệnh --extra-vars * AND * cách tham chiếu chúng trong cấu hình yaml của bạn. Sau đó, tôi cung cấp một cách khác để làm điều đó là tốt. – GreensterRox

+1

Câu hỏi ở đây đặc biệt là chuyển biến ** thông qua dòng lệnh **. Đó chính là lý do tại sao nó sẽ tốt hơn vì đó là câu hỏi/câu trả lời của chính nó và một liên kết liên quan. Bạn có thể và liên kết có liên quan dưới dạng nhận xét cho câu hỏi. –

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