Bloggen min

Litt om min daglige koding

Starte Med Ansible

Jeg begynte med ansible og committed små endringer i git-repository på fredag 16 september 2016. I løpet av helgen leste jeg 216 sider om Ansible og jeg ble rett og slett bitt litt av basillen. Her kom et verktøy som gjorde noe av det jeg har savnet med puppet, som var mulig i chef, men chef er tyngre å skrive kode til og få til å fungere. Ansible derrimot fungerer mer som puppet med direkte yaml støtte og mange flotte moduler. Mange av de kjekke modulene følger med direkte som ansible core-moduler.

I løpet av en helg fikk jeg jafset i meg en hel del om ansible fra bøker og youtube-training. Jeg ble så frelst at jeg tok mye av det lille jeg hadde startet med egen chef-kode og porterte mesteparten over i ansible. Det gikk lekende lett.

Bildet er relatert til å fyre opp en virtual machine i vmware.

Screenly OSE and Cookies

Jeg jobber en god del med screenly for tiden. Installert på flere Raspberry pi og omkonfigurert disse ved hjelp av ansible og satt opp egen provisjonering av disse. Det som ikke fungerte helt av seg selv var å gå inn på websider som er lukket bak pålogging (forståelig nok). En måte å omgå sånt er å lagre en session-cookie som gjør at man ser ut å være brukeren man hentet cookien fra etter at vedkommende hadde logget seg på. Poenget er at Screenly ikke automatisk leser inn slike cookies i uzbl browseren som benyttes fordi denne leser configurasjon fra stdin slik at nettleseren kan få kommandoer på hva den skal gjøre. Den konfigurasjonen som ligger inne i Screenly OSE må endres for at man skal få lest inn cookies ved oppstart av uzbl nettleseren.

Legg inn cookie

i ~pi/.local/share/uzbl/cookies.txt legger man cookien man ønsker å bruke i samme format som de som ligger der.

i ~pi/.config/uzbl/config-screenly legger man noe sånn som dette:

1
2
sync_spawn_exec /usr/share/uzbl/examples/data/scripts/load_cookies.sh
sync_spawn_exec /usr/share/uzbl/examples/data/scripts/load_cookies.sh /home/pi/.local/share/uzbl/session-cookies.txt

Hvis man ønsker litt fancy status-bar i tillegg så kan man sette dette:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
set show_status = 0
set ssl_verify = 0
set status_background = #303030

set modcmd_style      = weight="bold" foreground="red"
set keycmd_style      = weight="light" foreground="red"
set prompt_style      = foreground="grey"
set cursor_style      = underline="single"
set completion_style  = foreground="green"
set hint_style        = weight="bold"

set mode_section      = <span background="khaki" foreground="black">[\@[\@mode_indicator]\@]</span>
set keycmd_section    = [<span \@prompt_style>\@[\@keycmd_prompt]\@</span><span \@modcmd_style>\@modcmd</span><span \@keycmd_style>\@keycmd</span><span \@completion_style>\@completion_list</span>]
set progress_section  = <span foreground="#606060">\@[\@progress.output]\@</span>
set scroll_section    = <span foreground="#606060">\@[\@scroll_message]\@</span>
set uri_section       = <span foreground="#99FF66">\@[\@uri]\@</span>
set name_section      = <span foreground="khaki">\@[\@NAME]\@</span>
set status_section    = <span foreground="orange">\@status_message</span>
set selected_section  = <span foreground="#606060">\@[\@SELECTED_URI]\@</span>

set download_section  = <span foreground="white">\@downloads</span>

set status_format       = <span font_family="monospace">@mode_section @keycmd_section @progress_section @name_section @status_section @scroll_section @selected_section @download_section</span>
set status_format_right = <span font_family="monospace"><span foreground="#666">uri:</span> @uri_section</span>

set title_format_long = \@keycmd_prompt \@raw_modcmd \@raw_keycmd \@TITLE - Uzbl browser <\@NAME> \@SELECTED_URI


# Progress bar config
# %d = done, %p = pending %c = percent done, %i = int done, %s = spinner,
# %t = percent pending, %o = int pending, %r = sprite scroll
set progress.width      = 8
set progress.format     = [%d>%p]%c
set progress.done       = =
set progress.pending    =

Nordre Lindeberg Gård

I forrige uke besøkte jeg og familien min, Norde Lindeberg gård to ganger. Kafèen hadde ikke åpent på hverdager, men jeg besøkte gården en gang på søndag og fikk tatt en kort tur innom kafèen da. Utvalget og kaffen var ikke så stort. Nå skal det kanskje nevnes at jeg er vant til god kaffe.

På jobben har vi hatt egen espressomaskin hvor jeg har laget kaffe og skummet melk. Etter dette skaffet jeg også en espressomaskin hjemme av likt merke. Nå har vi for en god stund siden gått over til automat-kaffe på jobb og hver gang kaffeknappen har utført service på kaffemaskinen så kommer det en liten søt bonus. Et glass med smarties ved hver maskin.

Vel, nok om kaffe og våre maskiner på jobb og tilbake til gårdsbesøket. Kafèen var ikke så imponerende, men at gårdsbesøket i seg selv er gratis var noe familien satte stor pris på. Det mener jeg at også kongsgården er hvis man ikke besøker når det er spesielle arrangementer. I slutten av september var vi på kongsgården hvor parkering og inngang kostet oss nesten 200 kr. Uansett, det koselig å se gårder og dyr så nære i Oslo.

PuppetConf 2016 Keynotes

I dag så jeg puppetconf 2016 keynotes i ekstra hastighet for å få mer ut av dagen og fikk med meg litt om det nyeste innen puppet og tanker om dagens operations. Framvisning utført av:

Ansible 101 at the PyCon 2016 Conference

Today, I had a look at the Ansible 101 speak from Luke Sneeringer while I was writing definitions for creating new vms at the different vmware clusters we have. I have ansible start up a new machine, get the mac address and put a configuration in the pxe configuration on a server to define what OS and hostname to give to the new VM.

Ansible was mentioned to me during an interview for a few weeks ago and this really caught my attention. I’ve configured raspberry pi and provisioned servers at digitalocean with it already. I rewrote most of my Chef code to ansible because I found it much easier and more logical. Writing the code when I already is used to Puppet with Hiera and yaml wasn’t hard at all.

I struggle with a few older OS-installed machines which does not have a new enough python required for ansible. I would love to get a statically linked and easy portable version of python with the needed python modules available to run from the homedirectory. I guess I could make one myself if I got time for it, and I guess that I rather install new boxes and move the data there instead of digging into how to do this the “wrong way”.

I found this, but I did not have a compiler on the specific box

Skiftet Tennplugger Og Olje

Jeg har ikke skrudd så mye på bil, men jeg har kommet dit at jeg fint kan skifte min egen olje. Nylig har jeg også byttet tennplugger på egen bil

Eventyret Om Zelda

Jeg har ikke for vane å spille spill lenger, men en kveld her etter å ha installert Raspberry Pi 3 med bootberry og mange forskjellige os, så ble jeg sittende og spille link, karakteren som skal redde prinsessen Zelda. De gamle spilla er og blir gode klassikere.

Connect to MSSQL From Python

I was helping a college at work today. He needed to connect to a MSSQL server and do some scripting on the data. His question was:

  • How do you connect to MSSQL from python

Install the pymssql module from the python libraries:

1
pip install pymssql

Make a script selecting the data you want..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python

import pymssql # 
user="someuser"
password="somepassword"
db="DATABASE1"
host="DATABASE1"

con = pymssql.connect(user=user, password=password, host=host, database=db)
cur = con.cursor()
sql= "SELECT [name],[port],[link] FROM [TABLENAME]"

cur.execute(sql)
for row in cur.fetchall():
  print  str(row[0]) + "|" + str(row[1]) + "|" + str(row[2])

Make sure to have the freetds installed on the server:

1
2
freetds-0.64-1.el5.rf
freetds-devel-0.64-1.el5.rf

Configure your freetds.conf in /etc/

1
2
3
4
5
6
cat /etc/freetds.conf
[DATABASE1]
    host = my-hostname.domain.com
    port = 1234
    instance = MSSQL_SERVER_INSTANCE
    database = DATABASENAME

Reparere Elektronikk Leke

Gutten min fikk et brukt leketøy hvor to av knappene ikke virket skikkelig. Det er 5 lignende knapper med bilde av dyr på og de er merket med tallene 1-5. Knapp 4 gikk det ann å trykke på for å få lyd, men denne knappen var det ikke lys i. Knapp 5 var helt død og hele tangenten for knappen var løs så man følte at man trykket uten at det var noe under knappen.

Når jeg åpnet leken en kveld guttunten var ganske opptatt fant jeg ut at et lite kretskort var knukket i to. Tilkoblingen til processor enheten var koblet i nærheten av knapp 4 mens lyset for knapp 4 var koblet rundt knapp 5 sin bryter.

Når jeg åpnet leka skjønte jeg umiddelbart at det var en elektronikkleke jeg kunne fikse på med enkle grep. Jeg pusset vekk litt av belegget som skal beskytte lederene på kretskortet fra korridering og kortsluttning. Det gjorde jeg for å få loddetinn til å feste seg til kobberet. En liten stund senere hadde jeg loddet sammen banene på kretskortet som var knukket og 4-er knappen hadde fått lys, og 5-knappen hadde fått lyd, lys og kjentes normal å presse på igjen. Det var en gøy ting å reparere. Å se han lure litt når plutselig 4 og 5 fungerte litt bedre var morsomt.

Chromecast

Chromecast må være noe av det mest spennende jeg har skaffet meg. Har ikke helt kommet over hvordan å streame bildefiler fra linux over på chromecasten, annet enn at det slo meg at jeg kunne jo konvertere bildefilene til en stream før jeg kaster streamen over på skjermen. Uansett tenker jeg at det nok helt sikkert finnes et prosjekt for å se bilder fra linux på chromecasten på tven.

Open pavucontrol and select the mkchromecast sink

Jeg bruker mkchromecast og castnow for litt forskjellge formål.

  • castnow er fin når du bare skal spille av en fil ved å kaste den hele i sitt format til chromecast.

  • mkchromecast lager en virtuelloutput device som man kan sende all lyd ut gjennom, uavhenging av filformat så lenge man kan spille det av på egen maskin. Det blir altså output lyd på egen pc som kodes og streames til chromecasten hvorav castnow sender fila man velger til chromecasten. På denne måten kan man bruke favoritt avspiller og streame dette til anlegget.

Nå skal det nevnes at chromecasten gjør litt motsatt casting av hva man tenker. Chromecasten har ikke en port åpen som mottar streamen, men man sender kommando til chromecasten som ber den å hente stream fra en port på lokal maskin eller fra nettet.