Tôi chưa quen với ansible và tự hỏi làm thế nào để làm như vậy vì sau đây không hoạt động
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Trong trường hợp django_fixtures
có thể thay đổi của tôi.
Tôi chưa quen với ansible và tự hỏi làm thế nào để làm như vậy vì sau đây không hoạt động
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Trong trường hợp django_fixtures
có thể thay đổi của tôi.
Câu trả lời:
Đọc tài liệu tôi thấy phần Truyền các biến trên dòng lệnh , đưa ra mẫu này:
ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"
Các ví dụ khác trình bày cách tải từ chuỗi JSON (≥ 1.2
) hoặc tệp (≥ 1.3
)
key=value
cú pháp được hiểu là các chuỗi . Sử dụng định dạng JSON nếu bạn cần chuyển vào bất kỳ thứ gì không phải là một chuỗi (Booleans, số nguyên, số float, danh sách, v.v.). Ví dụ:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
Các câu trả lời khác nêu cách chuyển qua các biến dòng lệnh nhưng không biết cách truy cập chúng, vì vậy nếu bạn thực hiện:
--extra-vars "version=1.23.45 other_variable=foo"
Trong tệp yml của bạn, bạn chỉ định các biến này cho các biến có thể tìm thấy trong phạm vi bằng cách thực hiện một số thứ như:
vars:
my_version: "{{ version }}"
my_other_variable: {{ other_variable }}
Một cách khác để sử dụng đối số dòng lệnh là sử dụng các biến môi trường đã được xác định trong phiên của bạn, bạn có thể tham chiếu các biến này trong các tệp yml có thể tìm thấy của mình như sau:
vars:
my_version: "{{ lookup('env', 'version') }}"
my_other_variable: {{ lookup('env', 'other_variable') }}
lookup('env', SOMETHING)
được kết hợp với 12 yếu tố.
version: {{ version }}
là sai, giống như tự xác định version
.
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
-e
lá cờ là hình thức ngắn--extra-vars
--extra-vars "@some_file.json"
--extra-vars
cờ thứ hai để truyền các biến không có trong tệp. Ví dụ--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
Bạn có thể sử dụng --extra-vars
tùy chọn. Xem tài liệu
Đối với một số lý do không có câu trả lời trên làm việc cho tôi. Vì tôi cần chuyển một số vars bổ sung vào playbook của mình trong Ansbile 2.2.0, đây là cách tôi làm cho nó hoạt động (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
-e
là hình thức ngắn của--extra-vars
-e
cờ riêng của họ
-e "firstvar=false second_var=value2"
ansible-playbook test.yml --extra-vars "arg1=${var1} arg2=${var2}"
Trong tệp yml bạn có thể sử dụng chúng như thế này
---
arg1: "{{ var1 }}"
arg2: "{{ var2 }}"
Ngoài ra, --extra-vars
và -e
giống nhau, bạn có thể sử dụng một trong số chúng.
s3_sync:
bucket: ansible-harshika
file_root: "{{ pathoftsfiles }}"
validate_certs: false
mode: push
key_prefix: "{{ folder }}"
ở đây các biến đang được sử dụng có tên là 'pathoftsfiles' và 'thư mục'. Bây giờ giá trị cho biến này có thể được đưa ra bằng lệnh dưới đây
sudo ansible-playbook multiadd.yml --extra-vars "pathoftsfiles=/opt/lampp/htdocs/video/uploads/tsfiles/$2 folder=nitesh"
Lưu ý: Không sử dụng dấu phẩy đảo ngược trong khi truyền các giá trị cho biến trong lệnh shell
ansible-playbook release.yml --extra-vars "username=hello password=bye"
#you can now use the above command anywhere in the playbook as an example below:
tasks:
- name: Create a new user in Linux
shell: useradd -m -p {{username}} {{password}}"
Điều này cũng làm việc cho tôi nếu bạn muốn sử dụng các biến môi trường shell:
ansible-playbook -i "localhost," ldap.yaml --extra-vars="LDAP_HOST={{ lookup('env', 'LDAP_HOST') }} clustername=mycluster env=dev LDAP_USERNAME={{ lookup('env', 'LDAP_USERNAME') }} LDAP_PASSWORD={{ lookup('env', 'LDAP_PASSWORD') }}"
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
Bạn có thể sử dụng lệnh trên trong playbooks bên dưới.
---
- name: Service Status
gather_facts: False
tasks:
- name: Check Service Status (Linux)
shell: pgrep "{{ proc_name }}"
register: service_status
ignore_errors: yes
debug: var=service_status.rc`
--extra-vars
sẽ ghi đè (các) biến được xác định trong playbook.