Mastodon HermanRonk.nl - Pagina 3 van 10 -

Detron Open Script Night – Ronde 1

Als een van de Business Developers bij Detron IT Consultants mag ik samen met het als team altijd zoeken naar methoden om onze collega’s kennis te laten maken met nieuwe systemen en technieken. Maar soms moet je ook de aanpak van deze kennisdeling eens op de schop gooien om zo een andere groep mensen te bereiken of een hoger niveau te behalen. Zeker op het gebied van het schrijven van een script ten behoeve van automatisering zien we het niveau flink stijgen en moeten we de aanpak dus veranderen.

Zo gaan we na 2 jaar aan PowerShell bootcamps eens proberen om op een hele andere wijzen kennis te delen over niet alleen PowerShell, maar ook andere scripttalen waar we in onze dagelijkse werkzaamheden mee in aanraking komen. Het resultaat van wat berichten heen en weer tussen collega’s was dat we vanuit het Detron ICT KenniscafĆ© (communicatie middel en organisatie van een deel van onze kennissessies en trainingen en mijn hobby op het werk šŸ˜‰ ) ook wel een Open Script Night konden houden. Hier kunnen collega’s of externe sprekers in 10-20 minuten een demo en toelichting geven van iets wat ze zelf gemaakt hebben en misschien handig is voor collega’s.

Als we deze korte sessies combineren met een introductie van een nieuwe of bestaande techniek die voor iedereen interessant kan zijn hopen we een leuke actieve avond te hebben. Het is niet de bedoeling dat bezoekers alleen maar gaan zitten luisteren, maar ook direct met de laptop aan de slag kunnen om ervaring op te doen met wat ze horen en zien.

Ondanks dat ik met al 6 jaar bezig houd met het organiseren van trainingen en sessies heb ik anders dan het welkomstwoord nog nooit zelf inhoudelijk gesproken op een sessie, gezien een van mijn hobby’s nogal wat met scripting te maken heeft (clickfarm.nluitleg) was dit een mooie gelegenheid om hier ook een keer verandering in te brengen. Tijdens de eerste Detron Open Script Night zal ik 30 minuten spreken over twee tools die mij enorm helpen en een stukje techniek waar ik dagelijks mee in aanraking kom. Een van de andere onderwerpenĀ  waar we deze eerste avond naar gaan kijken is git, wat mij betreft ook een onmisbaar stuk gereedschap voor het onderhouden van je scripts.

Onderwerp 1: Visual Studio Code (script editor)

Visual Studio Code een erg mooi stukje gratis software van Microsoft voor het schrijven van je code. Voor de meeste talen is er een intellisense module beschikbaar. Daarnaast zorg de Emmet.io integratie voor een aanzienlijke versnelling van het schreven van de code. Ook een directe integratie met git draagt bij aan een goede workflow.Ā Visual Studio Code - Script editor

Onderwerp 2: Postman

Eigenlijk al een stukje voorbereiding op het derde onderwerp, maar Postman is een tool voor het testen van allerlei web connectoren (om het maar eens heel simpel uit te leggen). De eerste keer dat ik er mee in aanraking kwam was voor het testen van de backend voor Clickfarm, maar inmiddels gebruik ik de tool ook zakelijk.

Postman API Test suite

Onderwerp 3: Web-connectoren (API’s)

Wanneer je meerdere (SaaS) systemen aan elkaar wil koppelen ontkom je niet meer aan allerlei verschillende API’s. Nou zijn er aardig wat standaarden, maar in hoofdlijnen werken ze technisch veelal hetzelfde. Reden genoeg om eens beter te kijken wat nu de kracht kan zijn van een goede API, maar ook wat de uitdaging kan zijn als je meerdere passieve systemen wil koppelen.

api grafische weergave

 

Microsoft Edge vergeet zijn settings

Ik ben denk ik een van de 6 Edge gebruikers in de wereld, maar om de andere vijf dan toch te helpen even een korte post over een vreemd probleem dat ik nu al drie keer gehad heb. Overigens vind ik normaal gezien Edge inmiddels een serieus goed werkende browser. Ik kan iedereen die dat tot op heden nog niet gedaan heeft het warm aanbevelen Edge eens een kans te geven.

Eens in de zoveel tijd wil Edge na een schone installatie van Windows 10 niet naar behoren werken. De settings worden niet onthouden, cookies worden niet goed opgeslagen en je history wordt niet opgeslagen. Dit alles zonder dat je de instellingen van de browser zelf hebt aangepast.

De vorige keren was het steeds even zoeken naar de oplossing en om te voorkomen dat ik de volgende keer weer moet zoeken bij deze de oplossing.

Stappenplan:

Open Command als administrator

CMD Startmenu Windows 10

Klik hier rechts en kies voor openen als administrator

Voer het volgende commando in:

sfc /scannow

SFC Command promt

Reboot je systeem zodra de command promt daar om vraagt. Als het goed is zou het probleem nu verholpen moeten zijn.

Wat doet SFC dan nou precies? Edge is een core onderdeel van Windows en kan dus maar tot op zekere hoogte via de herstel optie via “Apps” (in het settings menu) hersteld worden. Om iets grover te werk te gaan voert SFC (System File Checker) een scan uit van de systeembestanden van Windows en voert waar nodig herstel uit. In het geval van de problemen die ik met Edge ervaar gaat er dus iets mis met de core bestanden van Edge. Geen idee wat de oorzaak is, maar deze oplossing heeft voor mij tot op heden altijd gewerkt.

Mocht iemand een idee hebben waar deze corruptie vandaan kan komen hoor ik het graag, voorkomen is nog altijd beter dan genezen :).

Plesk backup DNS (Slave-DNS-Manager)

Sinds kort heb ik de hosting van een aantal sites opnieuw ingeregeld. Hiervoor heb ik deze keer na jarenlang Directadmin gebruikt te hebben nu een keer voor Plesk gekozen. Tot op heden heb ik nog geen moment spijt gehad van mijn keuze en heb ik eigenlijk alles vrijwel direct werkend gekregen zoals ik dat wilde.

DNS was echter een van de dingen die op de Plesk server zelf goed werkte, maar het koppelen van de secundaire DNS server wilde niet helemaal werken zoals het hoort. Helaas bood het forum ook geen oplossing, maar na het nodige zoekwerk is het dan uiteindelijk toch gelukt :).

Mijn secundaire DNS server draait bij DigitalOcean in Canada (een deel van de sites worden veel in de VS en Canada gebruikt) en is een droplet van het goedkoopste type (grofweg $5 per maand). De machine hoeft ook niet schokkend veel te doen dus dat moet prima uit komen.

Qua OS heb ik afgeweken van mijn normale voorkeur voor Ubuntu, maar om voor mij nog steeds onduidelijke redenen heb ik het daar nooit op werkend gekregen. In dit geval heb ik de collectie CentOS 7 servers maar uitgebreid van 2 naar 3..

In plesk:

In Plesk maak ik gebruik van de “Slave-DNS-Manager” extension die je via de extension manager kan installeren.

Slave DNS Manager extension page

De configuratie in Plesk is verder niet heel complex, je opent de extension via de extension manager en drukt op de knop om een nieuwe slave toe te voegen:

Add slave to config

Op deze pagina staat ook een stukje voorbeeld configuratie, kopieer deze in een losse file, we gaan niet de hele config gebruiken, maar nemen er een paar stukjes uit over. De invoervelden wijzen verder voor zich.

Slave DNS Manager config example

Op de secundaire DNS server:

  • yum update
  • yum install bind bind-utils
  • systemctl stop named
  • vi /etc/named.conf

in /etc/named.conf maken we een aantal aanpassingen, een deel van de info kan je overnemen uit de voorbeeldconfiguratie uit de Slave DNS Manager uit Plesk en een deel moet je even zelf invoeren.

acl “trusted” {
**IP Adres Primaire DNS**;
**IP Adres lokale server**;
127.0.0.1;
};

options {
listen-on port 53 { 127.0.0.1; **IP Lokale server**; };
listen-on-v6 port 53 { ::1; **IPv6 Lokale server**; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-new-zones yes;
allow-transfer {trusted;};
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
auth-nxdomain no;

/* Path to ISC DLV key */
bindkeys-file “/etc/named.iscdlv.key”;

managed-keys-directory “/var/named/dynamic”;

pid-file “/run/named/named.pid”;
session-keyfile “/run/named/session.key”;
};

/*RNDC Key uit Primaire (Plesk) server*/
key “rndc-key-***” {
algorithm hmac-md5;
secret “****”;
};

controls {
inet * port 953 allow { ** IP Adressen primaire en lokale server, gescheiden door een ;**} keys { “rndc-key-***”; };
};

logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};
zone “.” IN {
type hint;
file “named.ca”;
};

 

include “/etc/named.rfc1912.zones”;
include “/etc/named.root.key”;

  • mkdirĀ /var/named/
  • chown named:named /var/named/ -R
  • chmod 0770 /var/named -R
  • systemctl start name
  • reboot

Dit zou normaal voldoende moeten zijn, maar ik bleef authenticatie fouten krijgen vanuit de primaire DNS server (Plesk), deze server heb ik daarna nog een keer herstart en dat heeft uiteindelijk de problemen verholpen.

Ik heb me hier dan enkel gericht op het werkend maken van de slave DNS server, de vervolgstappen omvatten uiteraard het beveiligen van de server maar dat is buiten de scope van deze post.

Microsoft Power BI Gateway (Deel 2)

In de vorige post hebben we gekeken naar hoe we data uit Profit via de webconnectoren naar JSON files kunnen halen. Om deze files ook beschikbaar te maken in de cloud voor Power Bi kunnen we het beste gebruik maken van de Power Bi gateway. Hier onder vind je een instructie van hoe deze te installeren en configureren. De instructie is op basis van de documentatie van Microsoft die je hier vind.

Stap 1: Download Enterprise Gateway

Om de Gateway te kunnen downloaden moet je inloggen op Office.com en dan doorklikken naar de PowerBI omgeving.

Office 365 Power BIRechts bovenaan heb je een ā€œdownloadā€ knop, kies daar voor ā€œData Gatewayā€

Power BI Gateway

Je wordt vervolgens doorverwezen naar de download pagina, klik daar op de ā€œDownload Gatewayā€ optie.

Download Power BI gateway

Stap 2: Installeer Enterprise Gateway

Na de download kan je de installer starten, als er al andere applicaties draaien op de server is het zeer waarschijnlijk dat aan alle requirements voldaan wordt voor de installatie.

Power BI Gateway installatie

Je krijgt de keuze voor twee types gateway, kies hier voor de aanbevolen optie en dus NIET voor de personal mode!

Power BI Gateway Installtie modusDruk op volgende tot de installatie daadwerkelijk start.

Stap 3: Koppel Gateway

Na de installatie moet deze gekoppeld worden. Het maakt in principe niet al te veel uit welke user hier gekoppeld wordt, maar:

Alleen deze user kan:

  • aanpassingen doen aan de configuratie van de gateway zelf
  • Logging exporteren

Verder:

  • Er wordt een recovery code aangemaakt waarmee we deze user kunnen omzeilen, bewaar deze goed
  • Je moet met deze user in kunnen loggen op Office.com en je hebt dus een volledige O365 licentie nodig!

Power BI Gateway user

Je zal vervolgens een pop-up krijgen voor je credentials.

Vervolgens moet je een keuze maken of je een oude gateway wil recoveren of dat je een nieuwe gaat installeren, in ons geval installeren we dus een nieuwe:

Power BI Gateway Nieuw of Recover

Geef de gateway een naam en voer de herstelsleutel in, bewaar deze goed, we hebben deze nodig als we de gateway ooit zouden willen migreren naar een nieuwe server.

Power BI Gateway Recovery Key en naam

Je krijgt vervolgens de instellingen te zien, deze staan goed, dus die kan je zo laten:

Power BI Gateway regio

Zet tot slot het vinkje voor het verzenden van de gebruikersgegevens nog even uit. Vervolgens is de installatie klaar.

Power BI Gateway installatie voltooid

Stap 4: Autoriseer Gateway

Tot slot moet de gateway nog geautoriseerd worden. Deze is op dit moment alleen beschikbaar voor de user die je bij de installatie hebt opgegeven.

Log als deze user in op Offic.com, ga naar de PowerBI pagina en kies deze keer voor de ā€œSettingsā€ knop en kies voor manage gateways

Power BI Gateway autorisatie

Klik vervolgens op administrators:

Power BI Gateway administrators

 

 

De rest van de configuratie vind plaats vanuit Power Bi zelf.

AFAS Profit – Microsoft Power BI (Deel 1)

Het was voor ons al langer een wens om data uit AFAS Profit eenvoudig in Power BI te kunnen gebruiken, en alhoewel het nog steeds geen helemaal directe link is kunnen we nu wel middels een klein stukje Powershell en de Power BI gateway gebruik maken van automatisch bijgewerkte Profit data in Power BI.

De voorbereidingen beginnen in Profit:

Zorg er voor dat je eerst in AFAS Profit een app connector aanmaakt, koppel hier vervolgens een gebruiker aan en zorg er voor dat je het autorisatie token genereert.

De volgende stap is het toevoegen van de “Getconnectoren” die je automatisch wil exporteren. Het Powershell script zal alle getconnectoren voor deze gebruiker exporteren, dus het is zaak om te zorgen dat je alleen de data die je naar PowerBI wil sturen beschikbaar stelt voor deze connector. In dit geval betreft het drie connectoren:

 

Tot slot hebben we voor het exporteren van de data een klein stukje Powershell nodig:

$token = ‘<token><version>1</version><data>***</data></token>’
$encodedToken = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($token))
$authValue = “AfasToken $encodedToken”
$Headers = @{
Authorization = $authValue
}

$url = ‘https://**/Profitrestservices//metainfo’
$file = ‘C:\PBIData\todo.json’
Invoke-WebRequest -Uri $url -OutFile $file -Headers $Headers

$todo = Get-Content -Raw -Path $file | ConvertFrom-Json

foreach ($conn in $todo.getConnectors.id){
$url = ‘https://**/profitrestservices/connectors/’+$conn+’?skip=-1&take=-1′
$file = ‘C:\PBIData\’+$conn+’.json’
Invoke-WebRequest -Uri $url -OutFile $file -Headers $Headers
}

Het bovenstaande script haalt de beschikbare getconnectoren op en zal deze vervolgens zonder filtering volledig ophalen en als JSON op de gespecificeerde locatie neerzetten. Overigens kan dit natuurlijk ook mooi opgelost worden met een stukje storage en een function app in Azure, maar dat is iets voor later :).

We hebben de data nu klaar staan voor de integratie met PowerBI, hoe dat in zijn werk gaat wordt in de volgende post uitgewerkt.

Microsoft Flow – Mattermost integratie

Spelen Werken met Office365 is onderdeel van mijn werkzaamheden, maar daarnaast beheer ik ook nog een Mattermost instance die we voor onze onderlinge communicatie gebruiken. Al een tijdje terug had ik met Zapier een flow gemaakt die wanneer een van onze bloggers een bericht schrijft hiervan een notificatie op Mattermost gemaakt zou worden. Zapier is echter een betaald product en ik ben van mening dat we eigenlijk zoveel mogelijk van de producten uit de Office365 suite moeten gebruiken om daar in ieder geval zoveel mogelijk ervaring mee op te doen.

Tijd dus om eens wat effort te steken in het omzetten van deze functionaliteit van Zapier naar Microsoft Flow.

Het proces:

Simpel genoeg zou je zeggen.

De stappen komen neer op het gebruik van een RSS reader die vervolgens via een HTTP post een bericht naar de incoming webhook van Mattermost stuurt in een JSON formaat. Gelukkig worden al deze stappen ondersteund in Microsoft flow.

Stap 1: Aanmaken incoming webhook Mattermost
Open in mattermost het integrations menu vanuit de user die uiteindelijk de posts mag doen.

Stap 2: Aanmaken flow in Microsoft flow
Ga hiervoor naar flow.microsoft.com en log indien nodig in met je credentials.

Uiteindelijk stelt het dus niet al te veel voor maar het is even puzzelen hoe het HTTP request er uit moest komen te zien.