Google is committed to advancing racial equity for Black communities. See how.

Szczęśliwe użytkowanie

Użyj -h flagę z każdym happy-* polecenia w celu wyświetlenia pomocy i listę opcji dla tego polecenia.

Pliki państwowe

Happy przechowuje i starannie utrzymuje stan topologii w pliku JSON z jednym rekordem. Korzystając z tego pliku stanu, Happy może uruchomić odpowiednie polecenia, aby utworzyć lub usunąć topologię.

Domyślny plik państwo znajduje się w ~/.happy_state.json . Domyślna nazwa państwa jest happy , jak widać na happy-state wyjścia:

happy-state

State Name:  happy

Stany równoległe

Happy obsługuje wiele współistniejących stanów równoległych. Obecny stan jest podyktowane HAPPY_STATE_ID zmiennej środowiskowej. Jeśli HAPPY_STATE_ID nie istnieje w środowisku, domyślna wartość stanu happy jest używany.

HAPPY_STATE_ID nie jest tworzony podczas instalacji szczęśliwy. Stworzyć jedną z wartości innych niż state , aby natychmiast przejść do kolejnego szczęśliwego stanu.

export HAPPY_STATE_ID="sunny"

Teraz sprawdzanie happy-state wyników w innym państwie:

happy-state

State Name:  sunny

Każdy stan jest utrzymywany w swoim ~/.${HAPPY_STATE_ID}_state.json pliku. Aby przełączać się między państwami, uruchom export HAPPY_STATE_ID=" <state-name> " polecenie ponownie.

Odinstaluj ze stanami równoległymi

Jeśli używasz równoległe Szczęśliwi stany i chcesz odinstalować szczęśliwy, upewnij się, aby uruchomić happy-state-delete z każdym stanie aktywnym. Gwarantuje to, że wszystkie sieciowe przestrzenie nazw utworzone przez Happy zostaną usunięte z systemu bez wpływu na konfigurację sieci hosta Linux.

Na przykład, z dwoma stanami happy i sunny :

export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete

W razie potrzeby ręcznie usuń każdy plik stanu równoległego:

rm -f ~/.sunny_state.json
rm -f ~/.sunny_state.json.lock
rm -f ~/.happy_state.json
rm -f ~/.happy_state.json.lock

Dzienniki

Szczęśliwy wysyła dzienniki do syslog domyślnie. Druga kopia zapasowa dziennika jest wysyłany do /tmp/${HAPPY_STATE_ID}_debug_log.txt .

Aby wyświetlić dzienniki szczęśliwi, uruchom happy-state -l w osobnym oknie terminala. Po wprowadzeniu poleceń Happy w dziennikach wyświetlane są w tle polecenia powłoki Happy Issues. Jest to dobry sposób na zrozumienie, jak działa Happy, jeśli interesują Cię sieciowe przestrzenie nazw Linuksa.

Na przykład, happy-node-add node00 tworzy węzeł szczęśliwy. Dane wyjściowe dziennika dla tego polecenia to:

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

Wszyscy Driver:CallCmd() linie są polecenia powłoki, które nazywa szczęśliwy. Rozważ każdą linię w dzienniku:

# 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

Przykładowe topologie

Przykładowe topologie są zawarte w repozytoriach Happy i OpenWeave do testowania. Używaj ich również do nauki poleceń do konstruowania złożonych topologii.

Topologie są w formacie JSON i Shell Script.

JSON

Pliki topologii JSON są ładowane za pomocą happy-state-load lub weave-state-load poleceń. Jeśli topologia zawiera splot, należy użyć weave-state-load do załadowania topologię, w przeciwnym razie Weave specyficzne polecenia są pomijane.

Na przykład topologia bez Splotu:

happy-state-load thread_wifi_ap_internet.json

Topologia ze Splotem:

weave-state-load three_nodes_on_thread_weave.json

Aby zapisać bieżącą topologię jako oddzielny plik JSON do późniejszego wykorzystania (na przykład przypadek skrypt testowy ), użyj happy-shell -s :

happy-shell -s my_topology.json

Spowoduje to zapisanie pliku stanu topologii w $HOME katalogu.

Skrypty powłoki

Pliki topologii skryptów powłoki zawierają zestaw poleceń Happy i Weave do tworzenia topologii w odpowiednich plikach JSON. Te skrypty domyślnie nie mają uprawnień do wykonywania. Można je uruchomić na dwa sposoby:

Za pomocą bash polecenie:

bash thread_wifi_ap_internet.sh

Stosując uprawnienia do wykonywania:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Konfiguracja

Happy posiada trzy pliki konfiguracyjne:

Plik konfiguracyjny Opis
~/.happy_conf.json Zmienne konfiguracyjne do użytku osobistego lub wtyczek. Ustawić te wartości za pomocą happy-configuration polecenia.
<path-to-happy> /happy/conf/main_config.json Podstawowe zmienne konfiguracyjne Happy.
<path-to-happy> /happy/conf/log_config.json Konfiguracja dziennika.

Dodaj zmienne konfiguracyjne

Zalecamy korzystanie z happy-configuration komendy do ustawiania zmiennych osobistych lub wtykowych poza domyślnych że wdrożenie specyficznych szczęśliwych potrzebuje.

Na przykład, aby pozwolić okazji wiedzieć, gdzie znaleźć splot test-apps katalogu skryptów testowych, ustaw weave_path zmienną:

happy-configuration weave_path <path-to-openweave-core>/build/x86_64-unknown-linux-gnu/src/test-apps

Szczęśliwi sklepy zmiennych konfiguracyjnych w ~/.happy_conf.json .

Procesy w węzłach

Happy udostępnia polecenia do uruchamiania i zatrzymywania procesów w symulowanych węzłach.

Aby rozpocząć proces:

happy-process-start <node-name> <custom-process-name> <command>

Na przykład, aby stale uruchamiać polecenie ping w węźle o nazwie ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

W powyższym przykładzie ContinuousPing to zdefiniowana przez użytkownika nazwa procesu, której Happy używa do zarządzania procesem. Użyj happy-process-wait zawiesić wykonanie procesu i happy-process-stop zabić proces.

Wyjście proces jest /tmp . Na przykład, po rozpoczęciu procesu ContinuousPing sprawdzić /tmp katalogu:

ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out

Ten .out plik zawiera wyjście dla procesu ContinuousPing.

Korzystanie z sudo

Happy zmienia konfigurację sieci, która jest kontrolowana przez jądro Linuksa. Ponieważ tylko root może zmienić konfigurację jądra, Szczęśliwego monit, aby wprowadzić sudo hasło podczas pracy.

Szczęśliwy używa $SUDO systemowej zmiennej środowiskowej zadzwonić sudo . Jeśli $SUDO nie jest zdefiniowana, szczęśliwy sprawia normalne sudo połączenia.

Skrypty Pythona

Po instalacji paczki Szczęśliwy Python mogą być importowane do środowiska Python stosując następujący import oświadczenie:

import happy

Poszczególne moduły dowodzenia znajdujące się w /happy importowane są w następujący sposób:

import happy.HappyNodeAdd

Aby pobrać moduł opcji, wywołać option() funkcji. Na przykład, aby odzyskać HappyNodeAdd opcje modułu:

module options
import happy.HappyNodeAdd
options = happy.HappyNodeAdd.option()