Zmienne i sekrety
Automatyzacja rzadko jest samowystarczalna - potrzebuje adresu środowiska, nazwy kontrahenta, identyfikatora katalogu, a często także loginu i hasła. Wszystkie takie wartości przekazujesz przez zakładkę Zmienne i sekrety w widoku automatyzacji, a skrypt odczytuje je jako zwykłe zmienne środowiskowe.
1. Dwa typy wartości
| Typ | Kiedy używać | Gdzie leży wartość |
|---|---|---|
| Wartość jawna | Adresy, parametry, przełączniki, identyfikatory - wszystko, co nie jest tajne. | Zapisana przy automatyzacji, widoczna w panelu. |
| Sekret | Hasła, tokeny, klucze API. | Zapisana we wspólnym magazynie sekretów. Przy automatyzacji leży wyłącznie wskazanie. |
Hasło wpisane jako wartość jawna jest widoczne
Wartość jawna jest pokazywana w panelu każdemu, kto ma dostęp do projektu, i nie podlega zasłanianiu w dzienniku przebiegu. Do haseł i tokenów używaj wyłącznie typu Sekret.
2. Dodanie zmiennej
W widoku automatyzacji przejdź do zakładki Zmienne i sekrety i kliknij Dodaj zmienną. Pojawi się wiersz z trzema polami: Nazwa, Typ oraz trzecim polem, którego postać zależy od wybranego typu.
2.1. Wartość jawna
Wybierz typ Wartość jawna i wpisz treść wprost w polu Wartość.
Tak podajesz adresy środowisk, identyfikatory, przełączniki trybu i limity - wszystko, co nie jest tajne.
2.2. Sekret
Wybierz typ Sekret. Trzecie pole zamienia się w listę Sekret, z której wskazujesz jedną z pozycji zdefiniowanych w magazynie sekretów. Listę można przeszukiwać, wpisując fragment nazwy.
Pod polem widnieje przypomnienie, które warto wziąć dosłownie:
Wartość sekretu nie jest zapisywana przy automatyzacji - agent pobiera ją dopiero przy uruchomieniu.
Zatwierdź przyciskiem Zapisz. Zmienna pojawi się na liście z podpisem mówiącym o jej typie.
2.3. Zasady nazewnictwa
Nazwa może zawierać wyłącznie litery, cyfry i podkreślenie, i nie może zaczynać się od cyfry. Nazwa musi być unikalna w obrębie automatyzacji.
Przyjęta konwencja to wielkie litery z podkreśleniami - ERP_URL, KLIENT_NIP, LICZBA_PROB. Nie jest wymuszana, ale zgadza się ze zwyczajem zmiennych środowiskowych i ułatwia odróżnienie ich w kodzie.
3. Odczyt w skrypcie
import os
erp_url = os.environ["ERP_URL"] # brak zmiennej → KeyError
tryb = os.environ.get("TRYB", "produkcyjny") # brak zmiennej → wartość domyślna
haslo = os.environ["ERP_PASSWORD"] # sekret czyta się tak samo
Sekret odczytuje się identycznie jak wartość jawną - z punktu widzenia kodu nie ma między nimi różnicy.
Zawodź wcześnie i czytelnie
Dla parametrów obowiązkowych używaj os.environ["NAZWA"], a nie .get(). Brakująca zmienna wywali skrypt od razu, z czytelnym KeyError, zamiast doprowadzić do awarii kilka kroków dalej - na przykład przy próbie zalogowania z wartością None.
4. Sekrety
4.1. Skąd się biorą
Sekrety definiuje się w widoku Zarządzanie danymi wejściowymi, po przełączeniu na zakładkę Sekrety. Nowy dodajesz przyciskiem Utwórz.
Lista pokazuje Identyfikator, Nazwę oraz zasłoniętą wartość, którą można podejrzeć ikoną oka. Menu (⋮) przy wierszu pozwala sekret edytować i usunąć.
Magazyn sekretów jest wspólny dla wszystkich projektów
Sekrety nie są przypisane do projektu. Ta sama lista jest widoczna z każdego projektu w organizacji, więc sekret utworzony przy jednej automatyzacji można wskazać w dowolnej innej.
Ma to dwie praktyczne konsekwencje:
- Nazwa musi mówić sama za siebie. W jednym worku wylądują hasła do wszystkich systemów i środowisk, więc
hasloalbotest1bardzo szybko przestaje cokolwiek znaczyć. Sprawdzają się nazwy w rodzajuERP-produkcja-serwisoweczySharePoint-QA-odczyt. - Usunięcie sekretu odczuje każdy projekt. Zanim skasujesz pozycję, upewnij się, że nie wskazuje na nią automatyzacja z innego zespołu.
4.2. Jak wartość trafia do robota
Wartość sekretu nie jest zapisywana przy automatyzacji. W zadaniu przekazywanym operatorowi leży wyłącznie wskazanie na sekret wraz z jednorazowym uprawnieniem do jego pobrania. Agent sięga po samą wartość dopiero tuż przed uruchomieniem skryptu.
Ma to dwie praktyczne konsekwencje:
- Hasło nie leży w kolejce zadań ani w konfiguracji automatyzacji.
- Zmiana wartości sekretu obowiązuje od następnego uruchomienia - bez konieczności edycji automatyzacji.
4.3. Zasłanianie w dzienniku przebiegu
Wartości sekretów są zasłanianie w dzienniku przebiegu - jeśli skrypt wypisze hasło na standardowe wyjście, w zapisanym dzienniku pojawi się *** zamiast wartości.
Zasłanianie nie obejmuje artefaktów
Podmiana działa na wyjściu konsoli. Plik, który skrypt sam zapisze do katalogu wyjściowego, trafia do artefaktów bez zmian - a artefakty pobierze każdy z dostępem do projektu. Nie zapisuj wartości sekretów do plików wynikowych.
4.4. Usunięty sekret
Jeśli wskazany sekret zostanie usunięty z magazynu, automatyzacja zgłosi to komunikatem o nieistniejącym sekrecie. Wskazanie trzeba wtedy poprawić - sekret nie zostanie odtworzony automatycznie.
5. Dobre praktyki
Jedna automatyzacja, wiele środowisk
Trzymaj adres środowiska w zmiennej (ERP_URL), zamiast wpisywać go w kodzie. Przeniesienie automatyzacji z testowego na produkcyjne sprowadzi się wtedy do zmiany jednej wartości, bez ruszania pakietu i bez nowej wersji.
Nazwa powinna mówić, do czego wartość służy. ERP_URL jest lepsze niż URL, a ERP_PASSWORD niż HASLO - skrypt sięgający do dwóch systemów szybko dorabia się kilku adresów i haseł, a nazwy ogólne zaczynają wtedy kolidować.
Nazwa zmiennej to nie nazwa sekretu
Zmienna ERP_PASSWORD może wskazywać na sekret o nazwie ERP-produkcja-serwisowe. Skrypt widzi
wyłącznie nazwę zmiennej, więc możesz podmienić wskazany sekret bez ruszania kodu - na przykład
przełączyć automatyzację ze środowiska testowego na produkcyjne.
Zmienne należą do wersji automatyzacji
Zestaw zmiennych jest częścią konkretnej wersji. Po opublikowaniu wersji jej lista zmiennych staje się niezmienna - zmiana wymaga utworzenia nowej wersji roboczej. Sama wartość sekretu pozostaje wymienna, bo leży poza automatyzacją.



