Có nhiều cách để làm điều này và từ câu hỏi của bạn, không rõ bạn cần gì.
1. Nếu bạn cần biến môi trường được xác định CHỈ MỖI NHIỆM VỤ, bạn thực hiện điều này:
- hosts: dev
tasks:
- name: Echo my_env_var
shell: "echo $MY_ENV_VARIABLE"
environment:
MY_ENV_VARIABLE: whatever_value
- name: Echo my_env_var again
shell: "echo $MY_ENV_VARIABLE"
Lưu ý rằng MY_ENV_VARIABLE
chỉ khả dụng cho tác vụ đầu tiên, environment
không đặt nó vĩnh viễn trên hệ thống của bạn.
TASK: [Echo my_env_var] *******************************************************
changed: [192.168.111.222] => {"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": "whatever_value"}
TASK: [Echo my_env_var again] *************************************************
changed: [192.168.111.222] => {"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": ""}
Hy vọng rằng sẽ sớm sử dụng environment
được ở cấp độ chơi chứ không chỉ cấp độ nhiệm vụ như trên. Hiện có một yêu cầu kéo đang mở cho tính năng này trên GitHub của Ansible: https://github.com/ansible/ansible/pull/8651
CẬP NHẬT: Nó hiện đã được hợp nhất kể từ ngày 2 tháng 1 năm 2015.
2. Nếu bạn muốn biến môi trường vĩnh viễn + toàn hệ thống / chỉ cho một số người dùng nhất định
Bạn nên xem xét cách bạn thực hiện trong bản phân phối / shell Linux của mình, có rất nhiều nơi cho điều đó. Ví dụ trong Ubuntu, bạn xác định điều đó trong các tệp như ví dụ:
~/.profile
/etc/environment
/etc/profile.d
danh mục
- ...
Bạn sẽ tìm thấy tài liệu Ubuntu về nó tại đây: https://help.ubuntu.com/community/EnosystemVariables
Sau khi tất cả để thiết lập biến môi trường trong ví dụ. Ubuntu bạn chỉ có thể sử dụng lineinfile
mô-đun từ Ansible và thêm dòng mong muốn vào tệp nhất định. Tham khảo tài liệu hệ điều hành của bạn để biết nơi thêm nó để làm cho nó vĩnh viễn.