WEBVTT

00:00.000 --> 00:08.800
All right, we're going to continue with the next talk.

00:08.800 --> 00:12.320
This is Voida and he's going to talk about building

00:12.320 --> 00:15.240
a digital inventory with Nick Suez modules, right?

00:15.240 --> 00:19.240
So a round of applause for Voida and thank you very much.

00:19.240 --> 00:24.240
Thank you.

00:24.240 --> 00:27.240
Good evening, everyone.

00:27.240 --> 00:32.240
I would like to talk about what can be achieved with Nick Suez modules

00:32.240 --> 00:36.240
when used not for, you know, better than service,

00:36.240 --> 00:39.240
but just as a language for expressing thanks.

00:39.240 --> 00:44.240
So the point for today, it's clear.

00:44.240 --> 00:48.240
I'll show what I did currently.

00:49.240 --> 00:52.240
I don't say it's perfect, definitely not yet.

00:52.240 --> 00:56.240
We very pleased if we can have a talk after,

00:56.240 --> 00:58.240
you know, have a chat after the talk.

00:58.240 --> 01:01.240
If you can ask me, and of course,

01:01.240 --> 01:04.240
give me advice, we appreciate it.

01:04.240 --> 01:07.240
Anyway, what did it start?

01:07.240 --> 01:10.240
I work as a salesman at a high school.

01:10.240 --> 01:12.240
If you don't know, well,

01:12.240 --> 01:17.240
VNSS admin here means controlling everything that can be controlled

01:17.240 --> 01:19.240
with buttons, right?

01:19.240 --> 01:22.240
And, you know, there is some kind of salary,

01:22.240 --> 01:25.240
but it's a public money salary.

01:25.240 --> 01:29.240
So we use open source, not only because it's free as a freedom,

01:29.240 --> 01:31.240
but of course because it's free as a beer,

01:31.240 --> 01:34.240
so we can actually have it.

01:34.240 --> 01:38.240
And so this is only a very small part of what we do,

01:38.240 --> 01:40.240
all the services we manage.

01:40.240 --> 01:44.240
And the question now is, what happens if this cool

01:44.240 --> 01:47.240
buys another computer?

01:47.240 --> 01:49.240
What do we do?

01:49.240 --> 01:53.240
And well, there is kind of a lot what has to be configured.

01:53.240 --> 01:56.240
Even though, in itself, it's pretty simple.

01:56.240 --> 01:59.240
We have done it for the previous 100 computers.

01:59.240 --> 02:01.240
What was the deal?

02:01.240 --> 02:06.240
It's just a little bit of configuration for each of these very tiny parts.

02:06.240 --> 02:08.240
For the problem is, will you remember?

02:08.240 --> 02:12.240
And if you do just the part and leave the rest for your colleague,

02:12.240 --> 02:16.240
well, he knows what is actually to be done.

02:16.240 --> 02:17.240
And he won't.

02:17.240 --> 02:19.240
That's a problem.

02:19.240 --> 02:22.240
So what did we try to solve it?

02:22.240 --> 02:26.240
But of course, this is part of this,

02:26.240 --> 02:29.240
take Google sheets and put everything inside.

02:29.240 --> 02:34.240
Which is easy, but first of all, there is no good player.

02:34.240 --> 02:39.240
So when something is wrong, you don't know why, how, who, how long?

02:39.240 --> 02:43.240
And, you know, it is supposed to be rectangular,

02:43.240 --> 02:47.240
but if you ever let people use tables, you know,

02:47.240 --> 02:50.240
whenever they have to, they need to leave something inside.

02:50.240 --> 02:53.240
They will just pick another column, put it there.

02:53.240 --> 02:57.240
And in the end, it's anything but machine readable.

02:57.240 --> 03:00.240
And course references, that is saying,

03:00.240 --> 03:03.240
you know, this machine is connected to this network switch.

03:03.240 --> 03:06.240
It's, no, how, how do you do it?

03:06.240 --> 03:08.240
So of course, you can use structured languages.

03:08.240 --> 03:13.240
Those have a specifically designed for keeping machine readable content.

03:13.240 --> 03:16.240
But it's really tedious to write by hand.

03:16.240 --> 03:21.240
If you have 100 machines, there are almost identical,

03:21.240 --> 03:24.240
but at the same time, one of them is special.

03:24.240 --> 03:27.240
So you need to keep those defaults inside the data.

03:27.240 --> 03:32.240
So that's once in a while, you can deviate its tedious to write.

03:32.240 --> 03:35.240
And if you want data validation, you want to be sure that the real

03:35.240 --> 03:38.240
and you assign the workstation to actually exist,

03:38.240 --> 03:40.240
you are on your own.

03:40.240 --> 03:45.240
There's a lot of special purpose languages for this kind of task.

03:45.240 --> 03:50.240
Sort of functional languages that are built around data

03:50.240 --> 03:53.240
to structure it and to validate it.

03:53.240 --> 03:56.240
And they're very, very cool, very powerful,

03:56.240 --> 03:59.240
if you haven't seen them yet, I recommend doing so.

03:59.240 --> 04:04.240
But the type system often doesn't match what I need.

04:04.240 --> 04:08.240
Especially, it's visible with several references.

04:08.240 --> 04:13.240
Usually, I want to say that the workstation is computed to the switch.

04:13.240 --> 04:17.240
And at the same time, I would like to see the information on the other side.

04:17.240 --> 04:21.240
If I look at the switch details, I want to know what computers are connected there.

04:21.240 --> 04:26.240
And doing this with such languages is pretty difficult.

04:26.240 --> 04:29.240
Even sites keep it in the role pattern.

04:29.240 --> 04:33.240
Which works pretty well, but it's super tedious for data validation,

04:33.240 --> 04:35.240
because they are completely on their own.

04:35.240 --> 04:38.240
Overall, I don't know where looping over the arrays of data

04:38.240 --> 04:40.240
and checking constraints.

04:40.240 --> 04:45.240
So what I do right now is writing it in the service modules.

04:45.240 --> 04:49.240
You already probably know this thing.

04:49.240 --> 04:53.240
If it works so well for expressing Linux service,

04:53.240 --> 04:56.240
why not reuse it and just express our needs there?

04:56.240 --> 04:58.240
I have a workstation.

04:58.240 --> 05:01.240
It is a model and some place.

05:01.240 --> 05:03.240
It has some network details.

05:03.240 --> 05:07.240
And it's all the defaulting with all the priority resolution,

05:07.240 --> 05:11.240
merging, you know, lib, mkforce and stuff.

05:11.240 --> 05:14.240
They already have I know and love.

05:14.240 --> 05:19.240
And it's possible evaluating something as if it was an XS module

05:19.240 --> 05:21.240
as you are used to doing it.

05:21.240 --> 05:28.240
It's possible there's a function and if you feed it in a similar file

05:28.240 --> 05:32.240
to what I showed here, with the modules definition aside,

05:32.240 --> 05:36.240
then it will do exactly what you expect.

05:36.240 --> 05:37.240
Bell up.

05:37.240 --> 05:44.240
The thing that then you can export a JSON and use from other languages.

05:44.240 --> 05:49.240
If you look at this, we have all the power of an XS module.

05:49.240 --> 05:53.240
So there was a mention of a switch that's called Backbone 2.

05:53.240 --> 05:55.240
And it's port is a tan.

05:55.240 --> 05:57.240
This is all validated.

05:57.240 --> 06:01.240
This is actually across reference to the data expressed with the switch.

06:01.240 --> 06:07.240
And if we then evaluate it, then of course it gets all of the stuff that's defaulted,

06:07.240 --> 06:10.240
but overedible on demand.

06:10.240 --> 06:14.240
And you can see there is a VLAN that was automatically inherited

06:14.240 --> 06:17.240
because what I connected there was a computer.

06:17.240 --> 06:20.240
So we know it's an internal VLAN.

06:20.240 --> 06:27.240
And then if we have this, if we have all of this data collected,

06:27.240 --> 06:33.240
well, we can easily use it inside our MixOS server configuration.

06:33.240 --> 06:38.240
So this is a way to generate DNS records for all the switches,

06:38.240 --> 06:42.240
all the workstation and stuff.

06:43.240 --> 06:47.240
We also, yeah.

06:47.240 --> 06:49.240
I'll have to do very well.

06:49.240 --> 06:51.240
Just very quickly.

06:51.240 --> 06:54.240
Pay in front, sort of, sort of Ansible.

06:54.240 --> 06:59.240
You can use ingest, the JSON configuration switch with all the VLANs and stuff.

06:59.240 --> 07:03.240
You can generate images of what the network actually looks like.

07:03.240 --> 07:08.240
And also you can ingest it in whatever else you want.

07:09.240 --> 07:12.240
I promise, I'll publish this very soon.

07:12.240 --> 07:14.240
It's a pity I haven't done it yet.

07:14.240 --> 07:17.240
But really, I promise it will be done.

07:17.240 --> 07:23.240
I'll investigate more easy way for the cross references.

07:23.240 --> 07:26.240
I showed, even though they work somehow,

07:26.240 --> 07:28.240
and investigate evaluation performance.

07:28.240 --> 07:29.240
Thank you very much.

07:29.240 --> 07:31.240
It was a very, very quick talk.

07:32.240 --> 07:38.240
I'll be happy to discuss all of this video later.

07:38.240 --> 07:41.240
Thank you.

