Tworzenie prostej statycznej strony www w Azure

    No Comments

    Byłem ostatnio poproszony o przygotowanie małej prezentacji o historii informatyki.
    Wybrałem subiektywnie kilka tematów: m.in. program Apollo, początki inżynierii oprogramowania i walkę człowieka z maszynami grającymi w szachy i Go. Czy od czasu zwycięstwa nad Gari Kasparovem (lata 90-te XX wieku) przez Deep Blue nic się nie zmieniło?

    Wykorzystałem poniższą stronę:

    https://medium.freecodecamp.org/simple-chess-ai-step-by-step-1d55a9266977

    Podane w artykule repozytorium kodu w JavaScript przekopiowałem na własne konto

    https://github.com/djkormo/simple-chess-ai

    Postanowiłem na przykładzie chmury Azure pokazać krótką demonstrację.

    Ile linii kodu jest potrzebne na postawienie własnej strony www, która zagra z nami w szachy i która ma szanse nas pokonać.

    Wszystko to można zrobić z poziomu Portalu, postanowiłem zmierzyć się z problemem za pomocą Azure Cli 2.0.

    1.Wersja PaaS

    Ostatnią nowością jest możliwość postawienia statycznej strony www z poziomu konta magazynowego.

    2. Statyczna strona www w wersji preview na koncie storage.

    Od niedawna Azure pozazdrościł jednej z funkcjonalność AWS, czyli możliwość postawienia statycznej strony www na usłudze S3. Aktualnie znajduje się ona w wersji zapoznawczej.
    Trochę późno, ale nie ma co narzekać, jak widać konkurencja ma tu swoje dobre strony.

    Oficjalna dokumentacja producenta

    https://azure.microsoft.com/en-us/blog/azure-storage-static-web-hosting-public-preview/

    https://github.com/Azure/azure-cli-extensions/tree/master/src/storage-preview

     

    Nie ukrywam , że bardziej podoba mi się wersja PaaS, ale z niecierpliwością czekam na dalszy rozwój budowy statycznych stron www na bazie kont magazynowych. To czego mi najbardziej brakuje to proste podłączenie z repozytorium kodu, w którym umieścimy zawartość strony. Dodatkowo zauważyłem słabszą wydajność nowego rozwiązania, a wersja PaaS jest uruchomiona na darmowym planie.

    Strony do porównania

    1.PaaS

    https://mywebappchessai.azurewebsites.net/

    2. Statyczne www

    https://accountforstaticwebsite.z13.web.core.windows.net/

     

    Categories: Azure, migawka, PaaS

    Moja metodyka zdawania egzaminów certyfikacyjnych Azure

    No Comments

    W dniu dzisiejszym (22.06.2018) udało się zdać z pozytywnym wynikiem jeden z egzaminów Microsoftu dotyczących chmury publicznej Azure

    Chciałbym podzielić się z wami moim doświadczeniem dotyczącym efektywnego przyswojenia wiedzy potrzebnej do takiego wyzwania.

    To z czego korzystam:

    1. Oficjalna strona egzaminu

    https://www.microsoft.com/en-us/learning/exam-70-473.aspx

    Tu należy zwracać uwagę na zmiany, które od czasu do czasu są wprowadzane przez producenta, ma to też wpływ na wybór kursu online.

     

    2. Kurs wideo

    W tym przypadku był to:

    https://www.udemy.com/70473-azure/learn/v4/overview

    Lectures: 69
    Video: 4.5 hours
    Skill level: Intermediate Level

    Prawie 5 godzin, ale taki kurs daje przegląd usług, które są w zakresie egzaminacyjnym, nie zastąpi w żaden sposób ćwiczeń, które utrwalą wiedzę. Te ćwiczenia moim zdaniem są najważniejszym elementem przygotowywania do opanowania zakresu, który nie jest taki mały, jak mi się na początku wydawało, w szczególności dla osób, które dopiero zaczynają poznawać technologie dookoła silnika SQL. Jeżeli są tu braki należy je nadrobić, ale nie w zakresie skompilowanych zapytań t-sql. Tu znajdziemy głównie konfiguracje administratorskie, nadawanie uprawnień, zagadnienia bezpieczeństwa, kopie zapasowe, import i eksport danych i metadanych, itp.

     

    Ćwiczenia wykonuję z poziomu Portalu, PowerShella i Azure CLI 2.0 (az).

    3. Przegląd dokumentacji Microsoftu

    Dokumentacja Microsoftu jest bardzo obszerna. Zapewne nie jestem pierwszą osobą, która taki egzamin zdaje, więc istnieje możliwość, że ktoś wcześniej dokonał już wyboru dokumentacji, kursów i wpisów na blogu.

    Przykładem jest strona www.mssqltips.com

    https://www.mssqltips.com/sqlservertip/4913/exam-material-for-the-microsoft-70473-designing-and-implementing-cloud-data-platform-solutions/

    W przypadku 70-473 znalazłem również stronę:

    Exam 70-473 – Designing and Implementing Cloud Data Platform Solutions

     

    Na te materiały należy oczywiście spojrzeć krytycznie pod kątem aktualności względem zmian wprowadzanych cyklicznie przez Microsoft.

    3. MVA Microsoftu

    https://mva.microsoft.com/en-us/training-courses/certification-exam-overview-70473-designing-and-implementing-cloud-data-platform-solutions-17402

    Nie polecam, znajdują się tam często przestarzale treści, ale to też w zależności od egzaminu.

     

    4. Portale społecznościowe

    W chwilach desperacji zawsze można zadać pytanie na grupie na Facebooku Microsoft Azure User Group Poland

    Polscy MVP z obszaru Azure chętnie odpowiedzą.

    5. Nauka cykliczna

    Cykliczne powtórki treści, które wymagają zapamiętania. Parametry poszczególnych maszyn wirtualnych  (liczba rdzeni, wielkość pamięci), wielkości baz danych w poszczególnych planach, jest tego trochę.

    Korzystam z ANKI

    6. Uwagi końcowe

    Można też wykupić przykładowe zestawy pytań, ale to radzę robić z dużą ostrożnością. Uczenie się na pamięć jest drogą na skróty, a tak przyswojona wiedza wyparuje szybciej niż myślimy. A przecież głównym celem zdania egzaminu powinno być potwierdzenie, że to czego nauczyliśmy się w praktyce pozwala na zamknięcie pewnego zakresu kompetencyjnego, a nie kolejny znaczek lub wydrukowany dokument.

     

    Są też dostępne dumpy  z pytaniami na rożnych stronach, ale tu radzę, jeśli już chcemy z nich koniecznie korzystać, weryfikować każdą poprawną odpowiedź. Bez ćwiczeń, o czym wspomniałem już wcześniej nie obędzie się, wiem, bo je próbowałem oglądać. Strata czasu..

    Nie należy stresować się brakami w wiedzy “on-premise”, jeśli tak się zdarzy, to pytam mądrzejszych. Ważne, by czas poświęcony nauce był dla nas intelektualnym wyzwaniem, nie należy też przesadzać z intensywnością. Pamiętajmy o celu.

    Chmura publiczna jest doskonałym zestawem usług, gdzie w ramach wirtualnej serwerowni możemy sami zbudować rozwiązanie end2end.

     

    Mały dodatek.

    Egzaminy z Azure proponuję zacząć od 70-533

    Zgodnie z informacją

    There are exam updates effective as of March 29, 2018. To learn more about these changes and how they affect the skills measured, please download and review the Exam 533 change document.

    Uważajcie na zmiany.

    Ja zacząłem od https://www.mssqltips.com/sqlservertip/4853/exam-material-for-the-microsoft-70533–implementing-microsoft-azure-infrastructure-solutions/

    Kurs na Udemy.

    https://www.udemy.com/70534-azure/learn/v4/content

    By the numbers
    • Lectures: 238
    • Video: 16 hours
    • Skill level: Intermediate Level

    Dodatkowo na githubie mam forkowane repozytoria:

    https://github.com/djkormo/Exam-70-533-Azure

    https://github.com/djkormo/microsoft-exam-prep-70533

    Trzeba dużo czytać, ale radzę omijać dokumentację z czasów Windows Azure, potem polecam przeklikać zakres w Portalu Azure.

    Trochę pracy ze skryptami w PowerShellu.

     

    Categories: Azure, chmura

    Azure Hacking – logowanie CLI za pomocą service principala

    No Comments

    Od kiedy zainteresowałem się chmurą Microsoft Azure początkowe kroki skierowałem do Portalu.

    Postawiłem kilka maszyn wirtualnych, strony www, proste funkcje. Następnie spróbowałem  przygotować to samo bez jednego kliknięcia myszą. Do wyboru miałem Powershell i moduł az CLI 2.0 napisany w Pythonie. Wybrałem az.

    Pierwsza linia kodu skryptu powołującego chmurową infrastrukturę wyglądała tak.

    Pojawia się wtedy komunikat

    To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code CCJULN8F8 to authenticate.

    Za pomocą podanej strony i kodu autoryzacyjnego muszę wskazać użytkownika , a potem wpisać hasło.

    Co zrobić, jeśli chciałbym uniknąć podawania za każdym razem hasła administratora subskrypcji i stworzyć techniczny byt, który pozwoli na wielokrotne uruchamianie np. skryptu wdrożeniowego, oczywiście bez interakcji z wyskakującymi oknami.

    Poniżej przedstawiam prosty sposób na skorzystanie z service principala

     

    Składnia

    Jak widać potrzebne nam będą trzy identyfikatory.

    Zacznijmy od TENAND_ID.

    Wybieramy menu  Azure Active Directory i zakładkę Properties

    azure_sp_1

    To, co widzimy w miejscu Directory ID to nasz TENAND_ID. Kopiujemy i zapisujemy sobie na boku.

    Pozostałe dwa identyfikatory wymagają stworzenia aplikacji.

    Zmieniamy zakładkę Properties na App registrations.

    Tworzymy nową aplikację typu Web app/API. Swoją nazwałem deployer. Adres url nie ma znaczenia w naszym zastosowaniu, wpisujemy dowolną wartość.

    azure_sp_2

     

    Po utworzeniu aplikacji mamy dostęp do identyfikatora APP_ID

    azure_sp_3

    Kopiujemy Application ID i zachowujemy  w tym samym miejscu co TENANT_ID.

    Czas na ostatni identyfikator, czyli KEY. Wchodzimy na zakładkę Keys.

    Tworzymy nowy klucz o nazwie np. KeyOne i terminie wygaśnięcia za jeden rok, pole Value zostanie wypełnione po zapisaniu klucza

    azure_sp_4

    W tym momencie powinniśmy skopiować wartość klucza. Jest to operacja jednorazowa. Portal o tym uczciwie przypomina. Klucz oczywiście można skasować i wygenerować kolejny.

    azure_sp_5

    Mamy już trzy identyfikatory. Co dalej ?

    Spróbujmy połączyć się do subskrypcji z poziomu linii komend.

    Po zalogowaniu się pojawi się zwrotny komunikat w postaci JSON

     

    Podanie błędnych danych kończy się małą katastrofą z kodem 401.

    Spróbujmy stworzyć nową grupę zasobów

    Pojawił się komunikat.

    Brakuje uprawnień dla naszej aplikacji i słusznie.

    Nadajmy uprawnienia dla aplikacji na poziomie subskrypcji.

    Dodajemy z poziomu zakładki Access control [IAM] uprawnienia Contributor dla całej subskrypcji.

    azure_sp_6

    Uruchamiamy ten sam kod i teraz mamy już komunikat zwrotny

    Wchodzimy na zakładkę Activity Log naszej nowej grupy zasobów i widać, kto i kiedy utworzył zasób.

    azure_sp_7

     

    Usuwamy grupę zasobów

    To samo można zrobić z poziomu CLI bez korzystania z Portalu, ale o tym innym razem…..

     

    Literatura:

    https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal

    https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?toc=%2Fazure%2Fazure-resource-manager%2Ftoc.json&view=azure-cli-latest

     

     

    Categories: Azure, chmura, migawka, Python

    Zabawa z IoT na platformie Azure

    1 Comment

    1. Zakup urządzenia
    Wg producenta jest to
    Moduł WiFi oparty na układzie ESP8266. Na pokładzie znajduje się 9 portów GPIO z obsługą I2C i SPI, wejście analogowe oraz złącze baterii lipol 3,7 V. Posiada oprogramowanie NodeMCU, które wspiera język skryptowy Lua lub środowisko Arduino IDE. Dodatkowym atutem jest wbudowany konwerter napięć na liniach interfejsu UART.
    Czyli skrócie dostajemy gotowe urządzenie, które potrafi się komunikować po WIFI i ma możliwość podłączania dodatkowych czujników m.in. temperatury i wilgotności.

    esp8266_1

    2. Konfiguracja IoTHub na platformie Azure

    Wybieramy menu “wszystkie zasoby”

    azure_iot_1

    Z kategorii Internet of Things wybieramy IoT Hub i wypełniamy podstawowe parametry, unikalną nazwę, grupę zasobów i lokalizację. Na początek proponuję zacząć od planu darmowego F1, ale jeśli planujemy coś bardziej poważnego, to w chwili obecnej nie ma możliwości podniesienia planu usługi. Można tylko postawić kolejna usługę. Wstaje ona po kilku minutach.

     

    azure_iot_2

     

    Po wygenerowaniu kluczy z polisy iothubowner możemy przejść do rejestracji naszych urządzeń

    Device ID: Nazwa urządzenia. Unikalna w ramach IoT huba, wielkie i male litery maja znaczenie

    Authentication Type: Pozostawiamy Symmetric Key.

    Auto Generate Keys: Pozostawiamy zaznaczone (zostaną automatycznie wygenerowanie klucze).

    Connect device to IoT Hub: Pozostawiamy Enable.

    azure_iot_3

     

    Każde z urządzeń będzie mieć wygenerowane dwa klucze.

    azure_iot_4

    Konfiguracja połączeń w tym przypadku wygląda tak

     

    I tę konfigurację będziemy wykorzystywać podczas pracy z urządzeniem. W ten sposób Hub wie, z jakiego urządzenia nadchodzą dane z czujników.

    Jeżeli nasz hub nazwałem djkormohub to warto sprawdzić połączenie sieciowe na porcie 8883

    3. Instalacja oprogramowania Arduino
    Adres instalatora
    https://www.arduino.cc/en/Main/Software
    W momencie pisania artykułu jest to wersja 1.8.5.

    arduino_1

    arduino_2

    Pojawi się grupa  pytań wymagających potwierdzenia instalacji sterowników “Arduino”arduino_5 arduino_6

    Instalacja została zakończona.

    4. Konfiguracja Visual Studio Code

    Potrzebny będzie dedykowany plugin do Arduino. Plugin ten nie zadziała bez instalacji  oprogramowania z punktu 3).

    Adres pluginu
    https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.vscode-arduino

    vsc_1

     

    Po instalacji pluginu proponuje restart VSC. U mnie bez tego nie były możliwe dalsze kroki.

    Zaczynamy od konfiguracji dla ESP8266.

    Podlączyłem urządzenie po USB, pojawił się komunikat

    vsc_3

    -> Arduino: Boar Manager.

    vsc_2Naciskamy aditional Urls. Wstawiamy w pliku User Settings .json adres

    vsc_4

    Wybieramy w polu “filter your search” esp8266.

    Wybrałem ostatnią wersje stabilną, czyli 2.4.0 i przycisk install. Po krótkiej chwili skończyło się to tak:

    Ups…
    Bez chwili namysłu wybrałem starszą wersję 2.3.0. Udało się

    A poźniej zrobiłem upgrade. W ten sposób mam działającą wersje 2.4.0.

    Uruchamiamy Arduino:Board Config

    vsc_5

    To czego nam brakuje to bibioteki do obsługi naszego IoTHuba w Azure i nie tylko

    Uruchamiamy Arduino: Librany Manager i instalujemy bibioteki

    AzureIoTHub
    AzureIoTUtility
    AzureIoTProtocol_MQTT
    ArduinoJso
    DHT sensor library
    Adafruit Unified Sensor

    vsc_6

    Oprogramowanie do pracy z płytką zostało zinstalowane. Czas na prosty przykład. Pobieram z githuba, gotowy projekt przygotowany przez Microsoft.

    Ponieważ, nie mam jeszcze czujnika DTH22 (temparatura i wilgotność) wykorzystam możliwość symulacji jego zachowania.
    W pliku config.h należy zmienić linię kodu odpowiedzialną za nią

    Otwieramy w VSC plik app.ino.

    Spróbujmy zapisać oprogramowanie na urządzeniu
    Uruchamiamy Arduino:Upload i po wybraniuy portu komunikacyjnego pojawi się po chwili następujący komunikat.

    Kolejne ups ?

    Po krótkim wykorzystaniu wujka Google trafiłem na rozwiązanie. Należy zainstalować brakujące oprogramowanie w podkatalogu hardware Arduino.

     

    Log z instalacji

    Restartujemy Arduino.

    Instalujemy obraz z poziomu Arduino (VSC nadal poprawnie nie działa).

    arduino_7

    Zwróćcie uwagę na migająca niebieską diodę podczas zapisywania oprogramowania.

    Oprogramowanie wgrane, teraz należy podłączyć urządzenie do naszej sieci WIFI.

    Po podaniu nazwy sieci WIFI (SSID) , hasła (PASS) i konfiguracji połączenia naszego urządzenia do IotHuba w postaci

    Urządzenie uruchamia się:

    Widać, że urządzenie podłączyło się do sieci bezprzewodowej i próbuje wystać komunikat w postaci

    Urządzenie ESP_*  jest widoczne od strony rutera WIFI, otrzymało przez DHCP swój adres IP.

    asus_1

    Włączyłem opcje debugowania i mam taki wyciąg z logów

     

    Problematyczne okazało się żle skonfigurowany DNS i urządzenie nie potrafiło ustalić adresu IP huba. IP 10.0.0.1 to lokalny adres rutera mojego dostawcy internetu.

    Po naprawie konfiguracji w logach monitora zaczęły pojawiac sie komunikaty

    Zweryfikowałem metryki diagnostyczne usługi w Azure. Pojawiły się pierwsze komunikaty.

    azure_iot_5

    W darmowym planie F1 mamy do wykorzystania 8000 komunikatów na dobę, jeśli dobrze oszacowałem oznacza to jeden komunikat co 11 sekund. Do prostych pomiarów jest to wystarczające.

     

    Categories: Arduino, Azure, IoT

    Hacking Azure – PoIaaS model

    3 komentarze

    Pierwszy wpis na blogu dotyczący chmury publicznej Microsoftu Azure.

    Każdy młody adept  Azure  spotyka się na początku z różnymi modelami obsługi zasobów w chmurze. Zgodnie z poniższym rysunkiem.

    https://social.technet.microsoft.com/wiki/cfs-filesystemfile.ashx/__key/communityserver-wikis-components-files/00-00-00-00-05/5482.sec_2D00_cloudstack.png

    To, co na zielono kontroluje Microsoft, a to co na niebiesko właściciel subskrypcji, czyli w dużym uproszczeniu, ja. Jak u każdego chlopca, który krzyczy po raz pierwszy “Ja sam, ja sam!”.

    Rozpocząłem klasycznie od  lewej strony, czyli postawiłem kilka maszyn wirtualnych, Najpierw z poziomu portalu, a potem za pomocą Azure CLI 2.0, od czasu do czasu Azure Cloud Shell był pomocny. Skoncentrowałem swoje działania wokół dystrybucji Ubuntu , na której w finalnym instalowałem Midnight Commandera. Prześmiewcom tego pakietu powiem tylko tyle ze linuxa używam wcześniej niż pojawiła się dystrybucja RedHata 4.0. To taka sentymentalna podróż do czasów produktów Petera Nortona. Następnie skoncentrowałem się na modelu PaaS, gdzie  poznawałem bazy danych i usługi pod strony www.

    Dziś chciałbym opowiedzieć o jednej z nich: App Service on Linux

    Instalację wykonałem zgodnie z

    https://github.com/djkormo/azurewordpress

    Z tym, że jako bazę mysql wykorzystałem usługę Azure datatabase for Mysql

    .mywordpressaspaas_1

     

    Konfiguracja po stronie WordPressa wymagała ustawienia czterech zmiennych środowiskowych, zgodnie z zapisem w pliku
    wp_config.php

    Po stronie aplikacji wyglądało to tak:
    mywordpressaspaas_2

    Nie jest to bardzo bezpieczne, ale na Proof of Concept na początek wystarczy.

    Po zainstalowaniu kodu WordPressa pobranego z repozytorium na Githubie pokazała się ładna strona. Dowolna zmiana w kodzie repo powoduje uruchomienie wdrożenia zmian.

    Po konfiguracji oprogramowania  możemy się pochwalić stroną startową.

    mywordpressaspaas_3

    Udało się. Pierwsza strona www z obsługa PHP i Mysql została uruchomiona. Chciałem sprawdzić,  jakie są dalsze możliwości konfiguracyjne, a przy okazji dowiedzieć się co właściwie jest pod spodem, np. z którą dystrybucją linuxa mamy do czynienia.  Uwaga!. To jest ta część kontrolowana przez dostawcę usług, czyli przez Microsoft.

    Wykorzystałem w tym celu wbudowane w usługę narzędzie KUDU . Gorąco polecam.

    Uruchomienie to zakładka Advanced Tools -> go.

    A potem z poziomu KUDU uruchomiłem SSH.

    mywordpressaspaas_4

    Jaka tam jest jest dystrybucja  ?

    Polecenie

    Linux 1c7503c5ac2b 4.4.0-112-generic #135-Ubuntu SMP Fri Jan 19 11:48:36 UTC 2018 x86_64 GNU/Linux

    Spróbowałem zainstalować na początku pakiet mc. Po wpisaniu polecenia

    system stwierdził, że nie znalazł pakietu, ale wystarczyło po chwili zastanowienia

    Sprawdziłem czy to działamywordpressaspaas_6

    Instalacja zakończyła się sukcesem.

    Weryfikacja ostateczna, to uruchomienie  pakietu.

    I naszym oczom ukazuje się znajomy interfejs programu.

    mywordpressaspaas_5

    Czy można zrobić upgrade pakietów systemu operacyjnego ?

    Zakończyło się bez błędu, ale z zerowym przebiegiem.

    I tu się zacząłem zastanawiać, co w jakim modelu stworzyłem moją stronę wordpressową ?  IaaS (mam dostęp do systemu operacyjnego), czy PaaS, a może model hybrydowy który tu roboczo nazywam PoIaaS. (Platform on IaaS) .

    Kolejne pytania, które się pojawiły:

    • W jaki sposób zachowa się system podczas autoskalowania? Czy kolejne “maszyny” wstaną z zainstalowanym mc czy bez?
    • Co jest wzorcem dla takie usługi ?
    • I kto zadba o zmiany w systemie operacyjnym ? Microsoft czy ja ?

    Sprawdzam, jakie procesy w są uruchomione:

    Zrobiłem już kilka eksperymentów i wiem …. Zrób i ty…. Odpowiedz na te trzy pytania.

    Pozdrawiam.

    Komentujcie…..

    Krzysztof Pudłowski

     

    Categories: Azure, chmura, IaaS, PaaS