Terraform: Importowanie zasobu tworzonego przez for_each

2023-10-12

Opss. terraform się wywalił i w efekcie, część zasobów została utworzona w Azure, ale plik stanu nie został zaktualizowany. W takim przypadku otrzymsz błąd:

Error: A resource with the ID „/subscriptions/XXXX/resourceGroups/RG-TerraformLab/providers/Microsoft.Network/virtualNetworks/KRK-VNET/subnets/dev_subnet” already exists – to be managed via Terraform this resource needs to be imported into the State. Please see the resource documentation for „azurerm_subnet_network_security_group_association” for more information.

No tak, to problemy mam dwa: 1 – zaimportowanie obiektu tworzonego przez for_each i 2 – próbuję utworzyć zasób azurerm_subnet_network_security_group_association, tymczasem brakujący obiekt to po prostu azurerm_subnet.

Na szczęście komunikat o błędzie zawiera już prawie wszystko, co trzeba. Rzeczywiście polecenie import oczekuje dwóch parameterów. Nazwy zasobu tak jak jest ona zdefiniowana dla Azure oraz identyfikatora zasobu. Na dodatek, to właśnie obiekt subnet zawiera w sobie informacje o association, więc w sumie, to problemu nie ma. No to jedziemy:

terraform import azurerm_subnet_network_security_group_association.sub_nsg["dev_subnet"] /subscriptions/XXXX/resourceGroups/RG-TerraformLab/providers/Microsoft.Network/virtualNetworks/KRK-VNET/subnets/dev_subnet

Niestety – komenda u mnie nie działa dobrze:

Index brackets must contain either a literal number or a literal string.

No jak to!? Przecież mam „literal string”. O co chodzi? Chodzi o to, że jestem fanem powershella i pracuję w powershellu. Tutaj poprawna komenda to:

terraform import azurerm_subnet_network_security_group_association.sub_nsg[\`"dev_subnet\`"] /subscriptions/XXXX/resourceGroups/RG-TerraformLab/providers/Microsoft.Network/virtualNetworks/KRK-VNET/subnets/dev_subnet

Uff – udało się!

By Rafał Kraik in Azure

Helpdesk: RDP: The credentials supplied to the package were not recognized

2023-10-04

Świeżo utworzona maszyna w Azure, z Windows na pokładzie. Błąd przy logowaniu:

An authentication error has occurred. The credentials supplied to the package were not recognized

No cóż… pamięć już nie taka, ale przecież hasło wprowadzam dobre! Okazuje się, że nazwę logowania podawałem po prostu w postaci <username>. W takim przypadku Azure czasami trochę wariuje i nie wie, w jakim kontekście zinterpretować nazwę użytkownika.

Zmień nazwę na:

AzureAD\username – jeśli to logowanie ma się wykonać w kontekście użytkownika Azure AD

lub

.\username – jeśli to logowanie na zwykłego użytkownika

I już!

By Rafał Kraik in Helpdesk

Git: Duplikacja repozytorium

2023-09-12

Zdarza się, że chcesz stworzyć kopię repozytorium, która ma zacząć żyć swoim własnym życiem. W takim przypadku:

1 – Sklonuj repozytorium na swój komputer:

git clone --bare https://github.com/my-user/old-repo.git

2 – Przejdź do katalogu ze skolonowanym repozytorium i wyślij je do nowego repozytorium:

cd old-repo.git
git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git

3 – Repozytorium jest już na miejscu! Jeśli chcesz, to usuń kopię z lokalnego komputera

Jeśli oryginalne repozytorium jest duże (zawiera np. również pliki binarne to posłuż się metodą opisaną tutaj:
https://docs.github.com/en/repositories/creating-and-managing-repositories/duplicating-a-repository#mirroring-a-repository-that-contains-git-large-file-storage-objects

By Rafał Kraik in Git

Azure: Wygodne sprawdzenie tagów

2023-09-07

Ech ci księgowi… zawsze chcą wiedzieć co jest czyje, żeby dobrze rozliczyć koszty, a do tego są im potrzebne tagi. Oczywiście przy tagowaniu najlepiej sprawdzi się jakiś rodzaj automatyzacji, ale jeśli trzeba coś po prostu na szybko zobaczyć, to może się przydać wbudowana funkcjonalność portalu Azure.

Będąc w portalu przejdź do Manage view –> Edit columns:

Następnie w oknie dodaj kolumnę tags:

Jeśli miałoby się okazać, że jakiś zasób nie ma tagów, skorzystaj z przycisku z trzema kropeczkami przy tym zasobie. Jest tam polecenie Edit tags:

By Rafał Kraik in Azure

Helpdesk: Audacity: Skrót do polecenia w menu

2023-09-06

Pracuję intensywnie z Audacity i często korzystam z tych samych poleceń. Ponieważ Audacity jest sporym programem z wieloma opcjami, to wybór tej właściwej z menu nie jest wygodny. Za to można skonfigurować skróty klawiaturowe, które znacznie przyśpieszą pracę. Oto jak:

Przejdź do opcji programu wybierając Edit –> Preferences. Tutaj:

  • Kliknij na Keyboard [1]
  • Upewnij się, że masz wybrane View by: Tree [2]
  • Wyszukaj pozycji z menu lub wpisz fragment nazwy w polu Search [3]
  • Kliknij pozycję, dla której chcesz przypisać skrót [4]
  • Naciśnij kombinację klawiszy [5] i potwierdź klawiszem Set [6]. Jeśli wybrany skrót był już przypisany do innego polecenia, to zobaczysz ostrzeżenie i możliwość rezygnacji przy pomocy Cancel. Jeśli chcesz zmienić działanie skrótu, po prostu potwierdź decyzję.
  • Zamknij okno klawiszem OK [7]. I to wszystko!

By Rafał Kraik in Helpdesk

Terraform: „Error parsing Resource ID {resourceid} ID was missing the `resourcegroup` element”

2023-08-14

Zdarza sie, że do terraformowej definicji trzeba zaimportować istniejące już na Azure obiektu. Służy do tego polecenie import:

terraform import azurerm_recovery_services_vault.vault1 /subscriptions/XXX/resourcegroups/recovery-delme/providers/Microsoft.recoveryservices/vaults/recoservvault

Co zrobić jeśli komenda zakończy się błędem?

azurerm_recovery_services_vault.vault1: Importing from ID "/subscriptions/XXX/resourcegroups/recovery-delme/providers/Microsoft.recoveryservices/vaults/recoservvault"…
data.azurerm_resource_group.example: Reading…
data.azurerm_resource_group.example: Read complete after 0s [id=/subscriptions/XXX/resourceGroups/recovery-delme]

│ Error: parsing "/subscriptions/XXX/resourcegroups/recovery-delme/providers/Microsoft.recoveryservices/vaults/recoservvault": parsing segment "staticResourceGroups": parsing the Vault ID: the segment at position 2 didn't match

│ Expected a Vault ID that matched:

│ > /subscriptions/XXX/resourceGroups/example-resource-group/providers/Microsoft.RecoveryServices/vaults/vaultValue

│ However this value was provided:

│ > /subscriptions/XXX/resourcegroups/recovery-delme/providers/Microsoft.recoveryservices/vaults/recoservvault

│ The parsed Resource ID was missing a value for the segment at position 2
│ (which should be the literal value "resourceGroups").

O co chodzi? Pierwsza różnica, jaką widać dotyczy nazwy resourceGroups, raz napisaną przez małe, a raz przez wielkie „G”. Rzeczywiście. Terraform, a może dokładniej ARM jest czuły na wielkość liter. Wystarczy zapisać resourceGroups tak, jak chciałby Terraform i wszystko zadziała jak należy!

By Rafał Kraik in Azure

Teams: Usunięcie profilu z Teams

2023-07-27

Zwykle w MS Teams pracuje się z wykorzystaniem tylko jednego konta. Wystarczy jednak jedna nagląca potrzeba i można się przelogować na inne konto. Taka jednorazowa przygoda może zakończyć się tym, że przy kolejnych uruchomieniach Teamsa zobaczymy okienko pytające o to, z którego konta chcemy korzystać (Pick an account to continue):

I jak tu teraz usunąć to dodatkowe konto??

Mamy co najmniej 3 miejsca do przeszukania:

  1. Kliknij Settings (ustawienia) >> Accounts (konta) >> Access work and school (dostęp do pracy i szkoły) >> przejrzyj konta i ewentualnie usuń niepotrzebne
  2. W tym samym miejscu, czyli Settings >> Accounts >> Email & Accounts >> przejrzyj konta i usuń co nie jest potrzebne
  3. Sprawdź konta wylistowane tutaj: https://myaccount.microsoft.com/

Pomysły zaczerpnąłem z Removing a saved account on MS Teams App on desktop – Microsoft Community, a u mnie zadziałała metoda nr 2

By Rafał Kraik in Helpdesk