Sử dụng cờ -h
với bất kỳ lệnh happy-*
nào để xem trợ giúp và danh sách
các tùy chọn cho lệnh đó.
Tệp tiểu bang
Chúc bạn lưu trữ và duy trì cẩn thận trạng thái cấu trúc liên kết trong tệp JSON bằng một bản ghi duy nhất. Khi dùng tệp trạng thái này, Happy có thể chạy các lệnh thích hợp để tạo hoặc xóa cấu trúc liên kết.
Tệp trạng thái mặc định nằm tại ~/.happy_state.json
. Tên trạng thái
mặc định là happy
, như hiển thị trong kết quả happy-state
:
happy-state
State Name: happy
Trạng thái song song
Happy hỗ trợ nhiều trạng thái song song cùng tồn tại. Trạng thái hiện tại
dựa trên biến môi trường HAPPY_STATE_ID
. Nếu HAPPY_STATE_ID
không tồn tại trong môi trường, thì giá trị trạng thái mặc định của happy
sẽ được sử dụng.
HAPPY_STATE_ID
không được tạo trong quá trình cài đặt Chúc mừng. Hãy tạo một thẻ có
giá trị khác state
để chuyển ngay sang trạng thái Chúc mừng khác.
export HAPPY_STATE_ID="sunny"
Hiện đang kiểm tra kết quả happy-state
ở trạng thái khác:
happy-state
State Name: sunny
Mỗi tiểu bang sẽ được lưu trong tệp ~/.${HAPPY_STATE_ID}_state.json
riêng. Để
chuyển đổi giữa các trạng thái, hãy chạy lại lệnh
export HAPPY_STATE_ID="<state-name>"
.
Gỡ cài đặt với trạng thái song song
Nếu bạn sử dụng các trạng thái Hạnh phúc song song và muốn gỡ cài đặt Trạng thái vui vẻ, hãy đảm bảo
chạy happy-state-delete
với mỗi trạng thái là đang hoạt động. Thao tác này đảm bảo tất cả vùng chứa tên
mạng do Happy tạo ra sẽ bị xóa khỏi hệ thống của bạn mà không ảnh hưởng đến
cấu hình mạng máy chủ Linux.
Ví dụ: với hai trạng thái của happy
và sunny
:
export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete
Xóa thủ công từng tệp trạng thái song song khi cần:
rm -f ~/.sunny_state.json
rm -f ~/.sunny_state.json.lock
rm -f ~/.happy_state.json
rm -f ~/.happy_state.json.lock
Nhật ký
Tính năng nhật ký sẽ gửi nhật ký đến syslog
theo mặc định. Bản sao lưu nhật ký thứ hai sẽ được gửi đến
/tmp/${HAPPY_STATE_ID}_debug_log.txt
.
Để xem Nhật ký vui vẻ, hãy chạy happy-state -l
trong một cửa sổ dòng lệnh riêng biệt. Khi bạn
nhập lệnh Happy, nhật ký sẽ hiển thị các lệnh shell Vấn đề vui trong nền. Nếu bạn quan tâm đến vùng chứa tên mạng Linux, thì đây là cách hay để hiểu cách hoạt động của tính năng này.
Ví dụ: happy-node-add node00
sẽ tạo nút Chúc mừng. Đầu ra nhật ký cho lệnh này là:
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist DEBUG [Driver:writeState():365] Happy: writing Happy state to file DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000 DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up
Tất cả Driver:CallCmd()
dòng là các lệnh shell mà Happy gọi.
Xem xét từng dòng trong nhật ký:
# Check to see if the target namespace (happy000) exists DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist # Write the link between node00 and happy000 in ~/.happy_state.json DEBUG [Driver:writeState():365] Happy: writing Happy state to file # Create the network namespace for the node DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000 # Check to see if the target namespace (happy000) exists DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists # Bring up the loopback interface within the happy000 namespace DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up
Mẫu vật tổ chức
Các vị trí chung mẫu sẽ được đưa vào cả kho lưu trữ Happy và OpenWeave để thử nghiệm. Ngoài ra, hãy dùng các mã này để tìm hiểu các lệnh tạo cấu trúc tổ chức phức tạp.
- Chúc mừng:
/topologies
- OpenWeave:
/src/test-apps/happy/topologies/standalone
Các thành phần ở định dạng JSON và Shell Script.
JSON
Các tệp cấu trúc liên kết JSON được tải bằng cách dùng các lệnh happy-state-load
hoặc
weave-state-load
. Nếu cấu trúc liên kết bao gồm Weave, bạn phải sử dụng
weave-state-load
để tải cấu trúc liên kết, nếu không, các lệnh dành riêng cho Weave
sẽ bị bỏ qua.
Ví dụ: một cấu trúc liên kết không có Weave:
happy-state-load thread_wifi_ap_internet.json
Cấu trúc liên kết với Weave:
weave-state-load three_nodes_on_thread_weave.json
Để lưu cấu trúc liên kết hiện tại của bạn dưới dạng tệp JSON riêng để sử dụng sau này (ví dụ: tập lệnh trường hợp thử nghiệm), hãy sử dụng happy-shell -s
:
happy-shell -s my_topology.json
Thao tác này sẽ lưu tệp trạng thái cấu trúc liên kết trong thư mục $HOME
.
Vỏ tập lệnh
Tệp cấu trúc liên kết tập lệnh shell chứa tập hợp các lệnh Happy và Weave để tạo các cấu trúc liên kết trong các tệp JSON tương ứng. Theo mặc định, các tập lệnh này không có quyền thực thi. Bạn có thể chạy quảng cáo theo hai cách:
Bằng cách sử dụng lệnh bash
:
bash thread_wifi_ap_internet.sh
Bằng cách áp dụng các quyền thực thi:
chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh
Cấu hình
Chúc mừng bạn có 3 tệp cấu hình:
Tệp cấu hình | Mô tả |
---|---|
~/.happy_conf.json | Các biến cấu hình cho mục đích cá nhân hoặc trình bổ trợ. Đặt các giá trị này bằng lệnh happy-configuration . |
<path-to-happy>/happy/conf/main_config.json | Các biến cấu hình Chúc mừng chính. |
<path-to-happy>/happy/conf/log_config.json | Cấu hình nhật ký. |
Thêm các biến cấu hình
Bạn nên dùng lệnh happy-configuration
để đặt mọi biến cá nhân hoặc
trình bổ trợ ngoài các chế độ mặc định mà nhu cầu triển khai cụ thể của bạn là
cần có.
Ví dụ: để cho Happy biết nơi tìm thư mục Weave test-apps
cho
các tập lệnh thử nghiệm, hãy đặt biến weave_path
:
happy-configuration weave_path <path-to-openweave-core>/build/x86_64-unknown-linux-gnu/src/test-apps
Happy lưu trữ các biến cấu hình trong ~/.happy_conf.json
.
Các quá trình theo nút
Happy cung cấp các lệnh để bắt đầu và dừng các quy trình trong các nút mô phỏng.
Để bắt đầu một quy trình, hãy làm như sau:
happy-process-start <node-name> <custom-process-name> <command>
Ví dụ: để liên tục chạy một ping trong một nút có tên ThreadNode:
happy-process-start ThreadNode ContinuousPing ping 8.8.8.8
Trong ví dụ trên, ConstantPing là tên do người dùng xác định cho quá trình mà Happy sử dụng để quản lý quy trình. Sử dụng happy-process-wait
để tạm ngưng
thực thi quy trình và happy-process-stop
để loại bỏ quá trình.
Kết quả xử lý nằm trong /tmp
. Ví dụ: sau khi bắt đầu quy trình ConstantPing, hãy kiểm tra thư mục /tmp
:
ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out
Tệp .out
này chứa dữ liệu đầu ra của quy trình ConstantPing.
Mức sử dụng sudo
Chúc mừng bạn đã thay đổi cấu hình mạng do hạt nhân Linux kiểm soát.
Vì chỉ có root
mới có thể thay đổi cấu hình hạt nhân, vui lòng nhắc bạn
nhập mật khẩu sudo
trong quá trình hoạt động.
Happy sử dụng biến môi trường hệ thống $SUDO
để gọi sudo
. Nếu bạn không xác định $SUDO
, Happy sẽ thực hiện cuộc gọi sudo
như bình thường.
Tập lệnh Python
Sau khi cài đặt, bạn có thể nhập các gói Happy Python vào môi trường
Python bằng cách sử dụng câu lệnh import
sau:
import happy
Các mô-đun lệnh riêng lẻ tìm thấy trong /happy
được nhập như sau:
import happy.HappyNodeAdd
Để truy xuất các tùy chọn mô-đun, hãy gọi hàm option()
. Ví dụ: để
truy xuất các tùy chọn mô-đun HappyNodeAdd
:
module options import happy.HappyNodeAdd options = happy.HappyNodeAdd.option()