blob: 1f6d3d9a32d737c4af9070bf423cd29613586612 [file] [log] [blame]
Aleš Komárek63572992017-04-11 13:16:44 +02001============
2Linux Fomula
3============
Filip Pytlounf5383a42015-10-06 16:28:32 +02004
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03005Linux Operating Systems:
Filip Pytlounf5383a42015-10-06 16:28:32 +02006
7* Ubuntu
8* CentOS
9* RedHat
10* Fedora
11* Arch
12
Aleš Komárek63572992017-04-11 13:16:44 +020013Sample Pillars
Filip Pytlounf5383a42015-10-06 16:28:32 +020014==============
15
Aleš Komárek63572992017-04-11 13:16:44 +020016Linux System
Filip Pytlounf5383a42015-10-06 16:28:32 +020017------------
18
19Basic Linux box
20
21.. code-block:: yaml
22
23 linux:
24 system:
25 enabled: true
26 name: 'node1'
27 domain: 'domain.com'
28 cluster: 'system'
29 environment: prod
30 timezone: 'Europe/Prague'
31 utc: true
32
azvyagintsev967af132017-06-12 12:25:24 +030033Linux with system users, some with password set:
OlgaGusarenko2828f5f2018-07-30 19:37:05 +030034
35.. warning:: If no ``password`` variable is passed,
36 any predifined password will be removed.
Filip Pytlounf5383a42015-10-06 16:28:32 +020037
38.. code-block:: yaml
39
40 linux:
41 system:
42 ...
43 user:
44 jdoe:
45 name: 'jdoe'
46 enabled: true
47 sudo: true
48 shell: /bin/bash
49 full_name: 'Jonh Doe'
50 home: '/home/jdoe'
Martin Polreich4fcd5c02018-07-16 09:41:51 +020051 home_dir_mode: 755
Filip Pytlounf5383a42015-10-06 16:28:32 +020052 email: 'jonh@doe.com'
Dzmitry Stremkouskia0d8b2d2018-10-22 14:12:05 +020053 unique: false
Dzmitry Stremkouskifae59fb2018-11-21 10:10:10 +010054 groups:
55 - db-ops
56 - salt-ops
57 optional_groups:
58 - docker
Filip Pytlounf5383a42015-10-06 16:28:32 +020059 jsmith:
60 name: 'jsmith'
61 enabled: true
azvyagintsev967af132017-06-12 12:25:24 +030062 full_name: 'With clear password'
Filip Pytlounf5383a42015-10-06 16:28:32 +020063 home: '/home/jsmith'
azvyagintsev967af132017-06-12 12:25:24 +030064 hash_password: true
65 password: "userpassword"
66 mark:
67 name: 'mark'
68 enabled: true
69 full_name: "unchange password'
70 home: '/home/mark'
71 password: false
72 elizabeth:
73 name: 'elizabeth'
74 enabled: true
75 full_name: 'With hased password'
76 home: '/home/elizabeth'
77 password: "$6$nUI7QEz3$dFYjzQqK5cJ6HQ38KqG4gTWA9eJu3aKx6TRVDFh6BVJxJgFWg2akfAA7f1fCxcSUeOJ2arCO6EEI6XXnHXxG10"
Filip Pytlounf5383a42015-10-06 16:28:32 +020078
Martin Polreichb6e6fbc2019-10-22 15:08:01 +020079Remove users data completely and terminate all user's processes:
Dzmitry Stremkouski6839f542019-09-04 14:15:09 +020080
81.. code-block:: yaml
82
83 linux:
84 system:
85 user:
86 example:
87 email: disabled
88 enabled: false
89 full_name: disabled
90 name: example
91 force_delete: True
92
Dmitry Teselkin8e903562019-02-21 16:40:23 +030093Setting user defaults
94---------------------
95Default parameters that will be used by `useradd` command could be configured
96the following way:
97
98.. code-block:: yaml
99
100 linux:
101 system:
102 ...
103 defaults:
104 user:
105 shell: <SHELL>
106 gid: <GROUP>
107 home: <HOME>
108 inactdays: <INACTIVE>
109 expire: <EXPIRE>
110 skeleton: <SKEL>
111 create_mail_spool: <CREATE_MAIL_SPOOL>
112
113Other parameters that are used when creating user profile could be configured
114as well, acting as global defaults:
115
116.. code-block:: yaml
117
118 linux:
119 system:
120 ...
121 defaults:
122 user:
123 ...
124 maxdays: <PASS_MAX_DAYS>
125 mindays: <PASS_MIN_DAYS>
126 warndays: <PASS_WARN_AGE>
127
128.. note::
129
130 The three options above ('maxdays', 'mindays', 'warndays') could be
131 overriden in linux:system:login_defs using their 'real' names.
132 The reason they could be defined here is that it's quite logical to
133 have these parameters related to configuration of user account
134 behaviour in one place.
135
136
Dmitry Teselkin47e41f42018-09-27 14:10:09 +0300137Configure password expiration parameters
138----------------------------------------
139The following login.defs parameters can be overridden per-user:
140
141* PASS_MAX_DAYS
142* PASS_MIN_DAYS
143* PASS_WARN_DAYS
Dmitry Teselkin47e41f42018-09-27 14:10:09 +0300144
145.. code-block:: yaml
146
147 linux:
148 system:
149 ...
150 user:
151 jdoe:
152 name: 'jdoe'
153 enabled: true
154 ...
155 maxdays: <PASS_MAX_DAYS>
156 mindays: <PASS_MIN_DAYS>
Dmitry Teselkin8e903562019-02-21 16:40:23 +0300157 warndays: <PASS_WARN_AGE>
Dmitry Teselkin47e41f42018-09-27 14:10:09 +0300158
Petr Michalec1c4c8d82017-02-28 19:09:21 +0100159Configure sudo for users and groups under ``/etc/sudoers.d/``.
160This ways ``linux.system.sudo`` pillar map to actual sudo attributes:
161
162.. code-block:: jinja
Aleš Komárek63572992017-04-11 13:16:44 +0200163
Petr Michalec1c4c8d82017-02-28 19:09:21 +0100164 # simplified template:
165 Cmds_Alias {{ alias }}={{ commands }}
166 {{ user }} {{ hosts }}=({{ runas }}) NOPASSWD: {{ commands }}
167 %{{ group }} {{ hosts }}=({{ runas }}) NOPASSWD: {{ commands }}
168
169 # when rendered:
170 saltuser1 ALL=(ALL) NOPASSWD: ALL
171
Petr Michalec1c4c8d82017-02-28 19:09:21 +0100172.. code-block:: yaml
Aleš Komárek63572992017-04-11 13:16:44 +0200173
Petr Michalec1c4c8d82017-02-28 19:09:21 +0100174 linux:
175 system:
176 sudo:
177 enabled: true
Tomas Kammd8eb3002017-05-08 19:30:29 +0200178 aliases:
Petr Michalec1c4c8d82017-02-28 19:09:21 +0100179 host:
180 LOCAL:
181 - localhost
182 PRODUCTION:
183 - db1
184 - db2
185 runas:
186 DBA:
187 - postgres
188 - mysql
189 SALT:
190 - root
191 command:
192 # Note: This is not 100% safe when ALL keyword is used, user still may modify configs and hide his actions.
193 # Best practice is to specify full list of commands user is allowed to run.
194 SUPPORT_RESTRICTED:
195 - /bin/vi /etc/sudoers*
196 - /bin/vim /etc/sudoers*
197 - /bin/nano /etc/sudoers*
198 - /bin/emacs /etc/sudoers*
199 - /bin/su - root
200 - /bin/su -
201 - /bin/su
202 - /usr/sbin/visudo
203 SUPPORT_SHELLS:
204 - /bin/sh
205 - /bin/ksh
206 - /bin/bash
207 - /bin/rbash
208 - /bin/dash
209 - /bin/zsh
210 - /bin/csh
211 - /bin/fish
212 - /bin/tcsh
213 - /usr/bin/login
214 - /usr/bin/su
215 - /usr/su
216 ALL_SALT_SAFE:
217 - /usr/bin/salt state*
218 - /usr/bin/salt service*
219 - /usr/bin/salt pillar*
220 - /usr/bin/salt grains*
221 - /usr/bin/salt saltutil*
222 - /usr/bin/salt-call state*
223 - /usr/bin/salt-call service*
224 - /usr/bin/salt-call pillar*
225 - /usr/bin/salt-call grains*
226 - /usr/bin/salt-call saltutil*
227 SALT_TRUSTED:
228 - /usr/bin/salt*
229 users:
230 # saltuser1 with default values: saltuser1 ALL=(ALL) NOPASSWD: ALL
231 saltuser1: {}
232 saltuser2:
233 hosts:
234 - LOCAL
235 # User Alias DBA
236 DBA:
237 hosts:
238 - ALL
239 commands:
240 - ALL_SALT_SAFE
241 groups:
242 db-ops:
243 hosts:
244 - ALL
245 - '!PRODUCTION'
246 runas:
247 - DBA
248 commands:
249 - /bin/cat *
250 - /bin/less *
251 - /bin/ls *
252 salt-ops:
253 hosts:
254 - 'ALL'
255 runas:
256 - SALT
257 commands:
258 - SUPPORT_SHELLS
259 salt-ops-2nd:
260 name: salt-ops
261 nopasswd: false
Jakub Josef7a9d9b92017-05-16 11:39:01 +0200262 setenv: true # Enable sudo -E option
Petr Michalec1c4c8d82017-02-28 19:09:21 +0100263 runas:
264 - DBA
265 commands:
266 - ALL
267 - '!SUPPORT_SHELLS'
268 - '!SUPPORT_RESTRICTED'
269
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300270Linux with package, latest version:
Filip Pytlounf5383a42015-10-06 16:28:32 +0200271
272.. code-block:: yaml
273
274 linux:
275 system:
276 ...
277 package:
278 package-name:
279 version: latest
280
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300281Linux with package from certail repo, version with no upgrades:
Filip Pytlounf5383a42015-10-06 16:28:32 +0200282
283.. code-block:: yaml
284
285 linux:
286 system:
287 ...
288 package:
289 package-name:
290 version: 2132.323
291 repo: 'custom-repo'
292 hold: true
293
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300294Linux with package from certail repo, version with no GPG
295verification:
Filip Pytlounf5383a42015-10-06 16:28:32 +0200296
297.. code-block:: yaml
298
299 linux:
300 system:
301 ...
302 package:
303 package-name:
304 version: 2132.323
305 repo: 'custom-repo'
306 verify: false
307
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300308Linux with autoupdates (automatically install security package
309updates):
Bruno Binet69a9d8d2017-02-16 22:34:32 +0100310
311.. code-block:: yaml
312
313 linux:
314 system:
315 ...
316 autoupdates:
317 enabled: true
318 mail: root@localhost
319 mail_only_on_error: true
320 remove_unused_dependencies: false
321 automatic_reboot: true
322 automatic_reboot_time: "02:00"
323
Dmitry Teselkin0f084a02018-08-29 14:46:38 +0300324Managing cron tasks
325-------------------
326
327There are two data structures that are related to managing cron itself and
328cron tasks:
329
330.. code-block:: yaml
331
332 linux:
333 system:
334 cron:
335
336and
337
338.. code-block:: yaml
339
340 linux:
341 system:
342 job:
343
344`linux:system:cron` manages cron packages, services, and '/etc/cron.allow' file.
345
346'deny' files are managed the only way - we're ensuring they are absent, that's
347a requirement from CIS 5.1.8
348
349'cron' pillar structure is the following:
350
351.. code-block:: yaml
352
353 linux:
354 system:
355 cron:
356 enabled: true
357 pkgs: [ <cron packages> ]
358 services: [ <cron services> ]
359 user:
360 <username>:
361 enabled: true
362
363To add user to '/etc/cron.allow' use 'enabled' key as shown above.
364
365'/etc/cron.deny' is not managed as CIS 5.1.8 requires it was removed.
366
367A user would be ignored if any of the following is true:
368* user is disabled in `linux:system:user:<username>`
369* user is disabled in `linux:system:cron:user:<username>`
370
371`linux:system:job` manages individual cron tasks.
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300372
373By default, it will use name as an identifier, unless identifier key is
Filip Pytloun91222222017-08-04 10:55:27 +0200374explicitly set or False (then it will use Salt's default behavior which is
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300375identifier same as command resulting in not being able to change it):
Filip Pytlounf5383a42015-10-06 16:28:32 +0200376
377.. code-block:: yaml
378
379 linux:
380 system:
381 ...
382 job:
383 cmd1:
384 command: '/cmd/to/run'
Filip Pytloun91222222017-08-04 10:55:27 +0200385 identifier: cmd1
Filip Pytlounf5383a42015-10-06 16:28:32 +0200386 enabled: true
387 user: 'root'
388 hour: 2
389 minute: 0
390
Dmitry Teselkin0f084a02018-08-29 14:46:38 +0300391Managing 'at' tasks
392-------------------
393
394Pillar for managing `at` tasks is similar to one for `cron` tasks:
395
396.. code-block:: yaml
397
398 linux:
399 system:
400 at:
401 enabled: true
402 pkgs: [ <at packages> ]
403 services: [ <at services> ]
404 user:
405 <username>:
406 enabled: true
407
408To add a user to '/etc/at.allow' use 'enabled' key as shown above.
409
410'/etc/at.deny' is not managed as CIS 5.1.8 requires it was removed.
411
412A user will be ignored if any of the following is true:
413* user is disabled in `linux:system:user:<username>`
414* user is disabled in `linux:system:at:user:<username>`
415
416
Filip Pytlound0a29e72015-11-30 15:23:34 +0100417Linux security limits (limit sensu user memory usage to max 1GB):
418
419.. code-block:: yaml
420
421 linux:
422 system:
423 ...
424 limit:
425 sensu:
426 enabled: true
427 domain: sensu
428 limits:
429 - type: hard
430 item: as
431 value: 1000000
432
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300433Enable autologin on ``tty1`` (may work only for Ubuntu 14.04):
Filip Pytloun7fee0542015-10-15 11:19:24 +0200434
435.. code-block:: yaml
436
437 linux:
438 system:
439 console:
440 tty1:
441 autologin: root
Filip Pytloun281d0202016-01-29 14:03:51 +0100442 # Enable serial console
443 ttyS0:
444 autologin: root
445 rate: 115200
446 term: xterm
Filip Pytloun7fee0542015-10-15 11:19:24 +0200447
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300448To disable set autologin to ``false``.
Filip Pytloun7fee0542015-10-15 11:19:24 +0200449
Filip Pytloun7731b852016-02-01 11:13:47 +0100450Set ``policy-rc.d`` on Debian-based systems. Action can be any available
451command in ``while true`` loop and ``case`` context.
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300452Following will disallow dpkg to stop/start services for the Cassandra
453package automatically:
Filip Pytloun7731b852016-02-01 11:13:47 +0100454
455.. code-block:: yaml
456
457 linux:
458 system:
459 policyrcd:
460 - package: cassandra
461 action: exit 101
462 - package: '*'
463 action: switch
464
Filip Pytlounc49445a2016-04-04 14:23:20 +0200465Set system locales:
466
467.. code-block:: yaml
468
469 linux:
470 system:
471 locale:
472 en_US.UTF-8:
473 default: true
Filip Pytlounee1745f2016-04-04 17:39:41 +0200474 "cs_CZ.UTF-8 UTF-8":
Filip Pytlounc49445a2016-04-04 14:23:20 +0200475 enabled: true
476
Andrey Shestakove7cca052017-05-24 23:06:24 +0300477Systemd settings:
478
479.. code-block:: yaml
480
481 linux:
482 system:
483 ...
484 systemd:
485 system:
486 Manager:
487 DefaultLimitNOFILE: 307200
488 DefaultLimitNPROC: 307200
489 user:
490 Manager:
491 DefaultLimitCPU: 2
492 DefaultLimitNPROC: 4
493
Filip Pytloun8b2131e2017-11-08 13:29:03 +0100494Ensure presence of directory:
495
496.. code-block:: yaml
497
498 linux:
499 system:
500 directory:
501 /tmp/test:
502 user: root
503 group: root
504 mode: 700
505 makedirs: true
506
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300507Ensure presence of file by specifying its source:
Richard Felkl2e07d652018-01-19 10:19:06 +0100508
509.. code-block:: yaml
510
511 linux:
512 system:
513 file:
514 /tmp/test.txt:
515 source: http://example.com/test.txt
Richard Felklf40599a2018-02-06 22:56:41 +0100516 user: root #optional
517 group: root #optional
518 mode: 700 #optional
519 dir_mode: 700 #optional
520 encoding: utf-8 #optional
521 hash: <<hash>> or <<URI to hash>> #optional
522 makedirs: true #optional
523
524 linux:
525 system:
526 file:
527 test.txt:
528 name: /tmp/test.txt
529 source: http://example.com/test.txt
Richard Felkl2e07d652018-01-19 10:19:06 +0100530
Gabor Orosz35815c02018-09-07 17:31:05 +0200531 linux:
532 system:
533 file:
534 test2:
535 name: /tmp/test2.txt
536 source: http://example.com/test2.jinja
537 template: jinja
538
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300539Ensure presence of file by specifying its contents:
Richard Felkl2e07d652018-01-19 10:19:06 +0100540
541.. code-block:: yaml
542
543 linux:
544 system:
545 file:
546 /tmp/test.txt:
547 contents: |
548 line1
549 line2
Richard Felklf40599a2018-02-06 22:56:41 +0100550
551 linux:
552 system:
553 file:
554 /tmp/test.txt:
555 contents_pillar: linux:network:hostname
556
557 linux:
558 system:
559 file:
560 /tmp/test.txt:
561 contents_grains: motd
562
Ivan Berezovskiyf9301e12019-07-22 13:14:14 +0400563Ensure presence of file by specifying its secured source:
564
565.. code-block:: yaml
566
567 linux:
568 system:
569 file:
570 /tmp/test.txt:
571 secured_source:
572 protocol: http #optional
573 user: foo
574 password: bar
575 url: example.com/test.txt
576 secured_hash: #optional
577 url: example.com/test.txt.md5
578 user: root #optional
579 group: root #optional
580 mode: 700 #optional
581 dir_mode: 700 #optional
582 encoding: utf-8 #optional
583 makedirs: true #optional
584
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300585Ensure presence of file to be serialized through one of the
586serializer modules (see:
587https://docs.saltstack.com/en/latest/ref/serializers/all/index.html):
Bruno Binet9c2fe222018-06-08 16:57:32 +0200588
589.. code-block:: yaml
590
591 linux:
592 system:
593 file:
594 /tmp/test.json:
595 serialize: json
596 contents:
597 foo: 1
598 bar: 'bar'
599
agoriunovd7b19ce2019-02-18 11:37:32 +0200600Ensure presence of file to be decoded through file.decode module (see:
601https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.decode):
602
603.. code-block:: yaml
604
605 linux:
606 system:
607 file:
608 /tmp/test4.txt:
609 decode: True
610 encoded_data: |
611 dGVzdDQK
612
Filip Pytloun281034a2016-01-04 18:06:22 +0100613Kernel
614~~~~~~
615
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300616Install always up to date LTS kernel and headers from Ubuntu Trusty:
Filip Pytloun281034a2016-01-04 18:06:22 +0100617
618.. code-block:: yaml
619
620 linux:
621 system:
622 kernel:
623 type: generic
624 lts: trusty
625 headers: true
626
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300627Load kernel modules and add them to ``/etc/modules``:
Tomáš Kukrálba35b212017-02-15 17:59:46 +0100628
629.. code-block:: yaml
630
631 linux:
632 system:
633 kernel:
634 modules:
635 - nf_conntrack
636 - tp_smapi
637 - 8021q
638
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300639Configure or blacklist kernel modules with additional options to
640``/etc/modprobe.d`` following example will add
641``/etc/modprobe.d/nf_conntrack.conf`` file with line
642``options nf_conntrack hashsize=262144``:
teoyaomiqui32b1f7c2017-05-24 14:36:09 +0300643
Dmitry Teselkin809834c2018-08-13 19:14:42 +0300644'option' can be a mapping (with 'enabled' and 'value' keys) or a scalar.
645
646Example for 'scalar' option value:
647
teoyaomiqui32b1f7c2017-05-24 14:36:09 +0300648.. code-block:: yaml
649
650 linux:
651 system:
652 kernel:
653 module:
654 nf_conntrack:
655 option:
656 hashsize: 262144
657
Dmitry Teselkin809834c2018-08-13 19:14:42 +0300658Example for 'mapping' option value:
659
660.. code-block:: yaml
661
662 linux:
663 system:
664 kernel:
665 module:
666 nf_conntrack:
667 option:
668 hashsize:
669 enabled: true
670 value: 262144
671
672NOTE: 'enabled' key is optional and is True by default.
673
674Blacklist a module:
675
676.. code-block:: yaml
677
678 linux:
679 system:
680 kernel:
681 module:
682 nf_conntrack:
683 blacklist: true
684
685A module can have a number of aliases, wildcards are allowed.
686Define an alias for a module:
687
688.. code-block:: yaml
689
690 linux:
691 system:
692 kernel:
693 module:
694 nf_conntrack:
695 alias:
696 nfct:
697 enabled: true
698 "nf_conn*":
699 enabled: true
700
701NOTE: 'enabled' key is mandatory as there are no other keys exist.
702
703Execute custom command instead of 'insmod' when inserting a module:
704
705.. code-block:: yaml
706
707 linux:
708 system:
709 kernel:
710 module:
711 nf_conntrack:
712 install:
713 enabled: true
714 command: /bin/true
715
716NOTE: 'enabled' key is optional and is True by default.
717
718Execute custom command instead of 'rmmod' when removing a module:
719
720.. code-block:: yaml
721
722 linux:
723 system:
724 kernel:
725 module:
726 nf_conntrack:
727 remove:
728 enabled: true
729 command: /bin/true
730
731NOTE: 'enabled' key is optional and is True by default.
732
733Define module dependencies:
734
735.. code-block:: yaml
736
737 linux:
738 system:
739 kernel:
740 module:
741 nf_conntrack:
742 softdep:
743 pre:
744 1:
745 enabled: true
746 value: a
747 2:
748 enabled: true
749 value: b
750 3:
751 enabled: true
752 value: c
753 post:
754 1:
755 enabled: true
756 value: x
757 2:
758 enabled: true
759 value: y
760 3:
761 enabled: true
762 value: z
763
764NOTE: 'enabled' key is optional and is True by default.
765
766
Filip Pytloun281034a2016-01-04 18:06:22 +0100767Install specific kernel version and ensure all other kernel packages are
768not present. Also install extra modules and headers for this kernel:
769
770.. code-block:: yaml
771
772 linux:
773 system:
774 kernel:
775 type: generic
776 extra: true
777 headers: true
778 version: 4.2.0-22
779
Denis Egorenkofa2ee422019-11-06 14:02:00 +0400780Also it is possible to install Kernel with Hardware Enablement or virtual
781kernel packages. For example, for Xenial:
782
783.. code-block:: yaml
784
785 linux:
786 system:
787 kernel:
788 type: generic
789 extra: true
790 headers: true
791 version: 4.15.0-65
792 hwe:
793 type: hwe
794 version: 16.04
795 kernel_version: 4.15.0.65
796
797Set `linux:system:kernel:hwe:type:virtual` if you need Virtual kernel packages.
798
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300799Systcl kernel parameters:
Jakub Pavlik32c2cb02016-01-29 12:45:29 +0100800
801.. code-block:: yaml
802
803 linux:
804 system:
805 kernel:
806 sysctl:
807 net.ipv4.tcp_keepalive_intvl: 3
808 net.ipv4.tcp_keepalive_time: 30
809 net.ipv4.tcp_keepalive_probes: 8
810
Michael Polenchukebf55522018-01-25 13:22:39 +0400811Configure kernel boot options:
812
813.. code-block:: yaml
814
815 linux:
816 system:
817 kernel:
818 boot_options:
819 - elevator=deadline
820 - spectre_v2=off
821 - nopti
822
Jiri Broulikf8f55a22017-01-26 14:36:46 +0100823CPU
824~~~
825
teoyaomiqui32b1f7c2017-05-24 14:36:09 +0300826Enable cpufreq governor for every cpu:
Jiri Broulikf8f55a22017-01-26 14:36:46 +0100827
828.. code-block:: yaml
829
830 linux:
831 system:
832 cpu:
833 governor: performance
834
Nick Metzf04f5f32018-01-08 15:25:04 +0100835
Jiri Broulik303905d2018-01-11 14:12:48 +0100836CGROUPS
837~~~~~~~
838
839Setup linux cgroups:
840
841.. code-block:: yaml
842
843 linux:
844 system:
845 cgroup:
846 enabled: true
847 group:
848 ceph_group_1:
849 controller:
850 cpu:
851 shares:
852 value: 250
853 cpuacct:
854 usage:
855 value: 0
856 cpuset:
857 cpus:
858 value: 1,2,3
859 memory:
860 limit_in_bytes:
861 value: 2G
862 memsw.limit_in_bytes:
863 value: 3G
864 mapping:
865 subjects:
866 - '@ceph'
867 generic_group_1:
868 controller:
869 cpu:
870 shares:
871 value: 250
872 cpuacct:
873 usage:
874 value: 0
875 mapping:
876 subjects:
877 - '*:firefox'
878 - 'student:cp'
879
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300880Shared libraries
Nick Metzf04f5f32018-01-08 15:25:04 +0100881~~~~~~~~~~~~~~~~
882
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300883Set additional shared library to Linux system library path:
Nick Metzf04f5f32018-01-08 15:25:04 +0100884
885.. code-block:: yaml
886
887 linux:
888 system:
889 ld:
890 library:
891 java:
892 - /usr/lib/jvm/jre-openjdk/lib/amd64/server
893 - /opt/java/jre/lib/amd64/server
Ondrej Smolaef9bd762018-07-11 14:26:02 +0200894
Filip Pytloun2fde88b2017-10-05 10:30:29 +0200895Certificates
896~~~~~~~~~~~~
897
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300898Add certificate authority into system trusted CA bundle:
Filip Pytloun2fde88b2017-10-05 10:30:29 +0200899
900.. code-block:: yaml
901
902 linux:
903 system:
904 ca_certificates:
905 mycert: |
906 -----BEGIN CERTIFICATE-----
907 MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
908 A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
909 cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
910 MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
911 BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
912 YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
913 ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
914 BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
915 I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
916 CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
917 lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
918 AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
919 -----END CERTIFICATE-----
920
Filip Pytloun361096c2017-08-23 10:57:20 +0200921Sysfs
922~~~~~
923
924Install sysfsutils and set sysfs attributes:
925
926.. code-block:: yaml
927
928 linux:
929 system:
930 sysfs:
931 scheduler:
932 block/sda/queue/scheduler: deadline
933 power:
934 mode:
935 power/state: 0660
936 owner:
937 power/state: "root:power"
938 devices/system/cpu/cpu0/cpufreq/scaling_governor: powersave
939
Ondrej Smolaef9bd762018-07-11 14:26:02 +0200940Optional: You can also use list that will ensure order of items.
941
942.. code-block:: yaml
943
944 linux:
945 system:
946 sysfs:
947 scheduler:
948 block/sda/queue/scheduler: deadline
949 power:
950 - mode:
951 power/state: 0660
952 - owner:
953 power/state: "root:power"
954 - devices/system/cpu/cpu0/cpufreq/scaling_governor: powersave
955
Martin Polreich148e1b82018-09-13 15:54:25 +0200956Sysfs definition with disabled automatic write. Attributes are saved
957to configuration, but are not applied during the run.
958Thay will be applied automatically after the reboot.
959
960
961.. code-block:: yaml
962
963 linux:
964 system:
965 sysfs:
966 enable_apply: false
967 scheduler:
968 block/sda/queue/scheduler: deadline
969
970.. note:: The `enable_apply` parameter defaults to `True` if not defined.
971
Jakub Pavlikb148c8c2017-02-12 21:30:48 +0100972Huge Pages
973~~~~~~~~~~~~
974
975Huge Pages give a performance boost to applications that intensively deal
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300976with memory allocation/deallocation by decreasing memory fragmentation:
Jakub Pavlikb148c8c2017-02-12 21:30:48 +0100977
978.. code-block:: yaml
979
980 linux:
981 system:
982 kernel:
983 hugepages:
984 small:
985 size: 2M
986 count: 107520
987 mount_point: /mnt/hugepages_2MB
Michael Polenchukd9369fe2018-05-08 17:53:08 +0400988 mount: false/true # default is true (mount immediately) / false (just save in the fstab)
Jakub Pavlikb148c8c2017-02-12 21:30:48 +0100989 large:
990 default: true # default automatically mounted
991 size: 1G
992 count: 210
993 mount_point: /mnt/hugepages_1GB
994
OlgaGusarenko2828f5f2018-07-30 19:37:05 +0300995.. note:: Not recommended to use both pagesizes concurrently.
Jiri Broulikf8f55a22017-01-26 14:36:46 +0100996
Jakub Pavlik5398d872017-02-13 22:30:47 +0100997Intel SR-IOV
998~~~~~~~~~~~~
999
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001000PCI-SIG Single Root I/O Virtualization and Sharing (SR-IOV)
1001specification defines a standardized mechanism to virtualize
1002PCIe devices. The mechanism can virtualize a single PCIe
1003Ethernet controller to appear as multiple PCIe devices:
Jakub Pavlik5398d872017-02-13 22:30:47 +01001004
1005.. code-block:: yaml
1006
1007 linux:
1008 system:
1009 kernel:
1010 sriov: True
1011 unsafe_interrupts: False # Default is false. for older platforms and AMD we need to add interrupt remapping workaround
1012 rc:
1013 local: |
1014 #!/bin/sh -e
1015 # Enable 7 VF on eth1
1016 echo 7 > /sys/class/net/eth1/device/sriov_numvfs; sleep 2; ifup -a
1017 exit 0
1018
Jakub Pavlik6c9ead12017-02-16 21:53:13 +01001019Isolate CPU options
1020~~~~~~~~~~~~~~~~~~~
1021
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001022Remove the specified CPUs, as defined by the cpu_number values, from
1023the general kernel SMP balancing and scheduler algroithms. The only
1024way to move a process onto or off an *isolated* CPU is via the CPU
1025affinity syscalls. ``cpu_number begins`` at ``0``, so the
1026maximum value is ``1`` less than the number of CPUs on the system.:
Jakub Pavlik6c9ead12017-02-16 21:53:13 +01001027
1028.. code-block:: yaml
1029
1030 linux:
1031 system:
1032 kernel:
1033 isolcpu: 1,2,3,4,5,6,7 # isolate first cpu 0
Jiri Broulikf8f55a22017-01-26 14:36:46 +01001034
Filip Pytlounf5383a42015-10-06 16:28:32 +02001035Repositories
1036~~~~~~~~~~~~
1037
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001038RedHat-based Linux with additional OpenStack repo:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001039
1040.. code-block:: yaml
1041
1042 linux:
1043 system:
1044 ...
1045 repo:
1046 rdo-icehouse:
1047 enabled: true
1048 source: 'http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/'
1049 pgpcheck: 0
1050
1051Ensure system repository to use czech Debian mirror (``default: true``)
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001052Also pin it's packages with priority ``900``:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001053
1054.. code-block:: yaml
1055
1056 linux:
1057 system:
1058 repo:
1059 debian:
1060 default: true
1061 source: "deb http://ftp.cz.debian.org/debian/ jessie main contrib non-free"
1062 # Import signing key from URL if needed
1063 key_url: "http://dummy.com/public.gpg"
1064 pin:
1065 - pin: 'origin "ftp.cz.debian.org"'
1066 priority: 900
1067 package: '*'
1068
azvyagintseva3a73d02018-12-06 14:49:58 +02001069Sometimes better to use one pining rule file, to decrease mistaken
1070ordering. You can use those option ``system:apt:preferences``, which would add opts into
1071``/etc/apt/preferences`` file:
1072
1073.. code-block:: yaml
1074
1075 parameters:
1076 linux:
1077 system:
1078 apt:
1079 preferences:
1080 enabled: true
1081 rules:
1082 100:
1083 enabled: true
1084 name: 'some origin pin'
1085 pin: 'release o=Debian'
1086 priority: 1100
1087 package: '*'
1088
1089
azvyagintsev4494a472018-09-14 19:19:23 +03001090If you need to add multiple pin rules for one repo, please use new,ordered definition format
1091('pinning' definition will be in priotity to use):
1092
1093.. code-block:: yaml
1094
1095 linux:
1096 system:
1097 repo:
1098 mcp_saltstack:
1099 source: "deb [arch=amd64] http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2017.7/ xenial main"
1100 architectures: amd64
1101 clean_file: true
1102 pinning:
1103 10:
1104 enabled: true
1105 pin: 'release o=SaltStack'
1106 priority: 50
1107 package: 'libsodium18'
1108 20:
1109 enabled: true
1110 pin: 'release o=SaltStack'
1111 priority: 1100
1112 package: '*'
1113
1114
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001115.. note:: For old Ubuntu releases (<xenial)
azvyagintsevff089d22018-07-27 16:52:34 +02001116 extra packages for apt transport, like ``apt-transport-https``
1117 may be required to be installed manually.
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001118 (Chicken-eggs issue: we need to install packages to
azvyagintsevff089d22018-07-27 16:52:34 +02001119 reach repo from where they should be installed)
1120 Otherwise, you still can try 'fortune' and install prereq.packages before
1121 any repo configuration, using list of requires in map.jinja.
1122
1123
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001124Disabling any prerequisite packages installation:
1125
azvyagintsevff089d22018-07-27 16:52:34 +02001126You can simply drop any package pre-installation (before system.linux.repo
1127will be processed) via cluster lvl:
1128
1129.. code-block:: yaml
1130
1131 linux:
1132 system:
1133 pkgs: ~
1134
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001135Package manager proxy global setup:
Petr Michalec10462bb2017-03-23 19:18:08 +01001136
1137.. code-block:: yaml
1138
1139 linux:
1140 system:
1141 ...
1142 repo:
1143 apt-mk:
1144 source: "deb http://apt-mk.mirantis.com/ stable main salt"
1145 ...
1146 proxy:
1147 pkg:
1148 enabled: true
1149 ftp: ftp://ftp-proxy-for-apt.host.local:2121
1150 ...
1151 # NOTE: Global defaults for any other componet that configure proxy on the system.
1152 # If your environment has just one simple proxy, set it on linux:system:proxy.
1153 #
1154 # fall back system defaults if linux:system:proxy:pkg has no protocol specific entries
1155 # as for https and http
1156 ftp: ftp://proxy.host.local:2121
1157 http: http://proxy.host.local:3142
1158 https: https://proxy.host.local:3143
1159
1160Package manager proxy setup per repository:
1161
1162.. code-block:: yaml
1163
1164 linux:
1165 system:
1166 ...
1167 repo:
1168 debian:
1169 source: "deb http://apt-mk.mirantis.com/ stable main salt"
1170 ...
1171 apt-mk:
1172 source: "deb http://apt-mk.mirantis.com/ stable main salt"
1173 # per repository proxy
1174 proxy:
1175 enabled: true
1176 http: http://maas-01:8080
1177 https: http://maas-01:8080
1178 ...
1179 proxy:
Oleksandr Vlasov27a6c3a2017-04-11 16:01:19 -06001180 # package manager fallback defaults
Petr Michalec10462bb2017-03-23 19:18:08 +01001181 # used if linux:system:repo:apt-mk:proxy has no protocol specific entries
1182 pkg:
1183 enabled: true
1184 ftp: ftp://proxy.host.local:2121
1185 #http: http://proxy.host.local:3142
1186 #https: https://proxy.host.local:3143
Oleksandr Vlasov27a6c3a2017-04-11 16:01:19 -06001187 ...
Petr Michalec10462bb2017-03-23 19:18:08 +01001188 # global system fallback system defaults
1189 ftp: ftp://proxy.host.local:2121
1190 http: http://proxy.host.local:3142
1191 https: https://proxy.host.local:3143
1192
Ivan Berezovskiy6335da52019-06-25 20:15:51 +04001193
1194Add secured apt repository:
1195
1196.. code-block:: yaml
1197
1198 linux:
1199 system:
1200 ...
1201 repo:
1202 test:
1203 secure: true
1204 url: example.org/ubuntu
1205 arch: deb
1206 protocol: http
1207 user: foo
1208 password: bar
1209 distribution: stable
1210 component: main
1211
1212Add multiply secured apt repositories with same credentials:
1213
1214.. code-block:: yaml
1215
1216 linux:
1217 system:
1218 ...
1219 common_repo_secured:
1220 arch: deb
1221 protocol: http
1222 user: foo
1223 password: bar
1224 distribution: stable
1225 component: main
1226 repo:
1227 test1:
1228 secure: true
1229 url: example1.org/ubuntu
1230 test2:
1231 secure: true
1232 url: example2.org/ubuntu
1233
Denis Egorenko808bd032019-12-05 15:46:06 +04001234Also it is possible to specify list of repos, which should be secured
1235within ``common_repo_secured`` block and without changing current
1236existing repo source parameter:
1237
1238.. code-block:: yaml
1239
1240 linux:
1241 system:
1242 ...
1243 common_repo_secured:
1244 user: foo
1245 password: bar
1246 secured_repos: [ 'test1', 'test2' ]
1247 repo:
1248 test1:
1249 ...
1250 test2:
1251 ...
1252 test3:
1253 ...
1254
1255Repos ``test1, test2`` will be secured. In case if you want secure all
1256available repos use ``secured_repos: [ 'all' ]``. But repo parameters have
1257precedence over parameters from ``common_repo_secured``. In next case:
1258
1259 linux:
1260 system:
1261 ...
1262 common_repo_secured:
1263 user: foo
1264 password: bar
1265 secured_repos: [ 'all' ]
1266 repo:
1267 test1:
1268 ...
1269 test2:
1270 ...
1271 test3:
1272 secure: False
1273 ...
1274
1275Repo ``test3`` will not be secured.
1276
Jiri Broulik34a29b42017-04-25 14:42:54 +02001277Remove all repositories:
1278
1279.. code-block:: yaml
1280
1281 linux:
1282 system:
1283 purge_repos: true
1284
azvyagintsevff089d22018-07-27 16:52:34 +02001285Refresh repositories metada, after configuration:
1286
1287.. code-block:: yaml
1288
1289 linux:
1290 system:
1291 refresh_repos_meta: true
1292
Filip Pytlounc512e6c2017-11-22 14:28:10 +01001293Setup custom apt config options:
1294
1295.. code-block:: yaml
1296
1297 linux:
1298 system:
1299 apt:
1300 config:
1301 compression-workaround:
1302 "Acquire::CompressionTypes::Order": "gz"
1303 docker-clean:
1304 "DPkg::Post-Invoke":
1305 - "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"
1306 "APT::Update::Post-Invoke":
1307 - "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"
Jiri Broulik34a29b42017-04-25 14:42:54 +02001308
Petr Michalec10462bb2017-03-23 19:18:08 +01001309RC
1310~~
1311
Jakub Pavlik78859382016-01-21 11:26:39 +01001312rc.local example
1313
1314.. code-block:: yaml
1315
1316 linux:
1317 system:
1318 rc:
1319 local: |
1320 #!/bin/sh -e
1321 #
1322 # rc.local
1323 #
1324 # This script is executed at the end of each multiuser runlevel.
1325 # Make sure that the script will "exit 0" on success or any other
1326 # value on error.
1327 #
1328 # In order to enable or disable this script just change the execution
1329 # bits.
1330 #
1331 # By default this script does nothing.
1332 exit 0
1333
Filip Pytloun1f40dac2016-01-22 15:52:57 +01001334Prompt
1335~~~~~~
1336
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001337Setting prompt is implemented by creating ``/etc/profile.d/prompt.sh``.
1338Every user can have different prompt:
Filip Pytloun1f40dac2016-01-22 15:52:57 +01001339
1340.. code-block:: yaml
1341
1342 linux:
1343 system:
1344 prompt:
1345 root: \\n\\[\\033[0;37m\\]\\D{%y/%m/%d %H:%M:%S} $(hostname -f)\\[\\e[0m\\]\\n\\[\\e[1;31m\\][\\u@\\h:\\w]\\[\\e[0m\\]
1346 default: \\n\\D{%y/%m/%d %H:%M:%S} $(hostname -f)\\n[\\u@\\h:\\w]
1347
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001348On Debian systems, to set prompt system-wide, it's necessary to
1349remove setting PS1 in ``/etc/bash.bashrc`` and ``~/.bashrc``,
1350which comes from ``/etc/skel/.bashrc``. This formula will do
1351this automatically, but will not touch existing user's
1352``~/.bashrc`` files except root.
Jakub Pavlik78859382016-01-21 11:26:39 +01001353
Filip Pytlouneef11c12016-03-25 11:00:23 +01001354Bash
1355~~~~
1356
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001357Fix bash configuration to preserve history across sessions
1358like ZSH does by default:
Filip Pytlouneef11c12016-03-25 11:00:23 +01001359
1360.. code-block:: yaml
1361
1362 linux:
1363 system:
1364 bash:
1365 preserve_history: true
1366
Dmitry Teselkin949398e2018-05-03 15:50:00 +03001367Login banner message
1368~~~~~~~~~~~~~~~~~~~~
1369
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001370``/etc/issue`` is a text file which contains a message or system
1371identification to be printed before the login prompt. It may contain
Dmitry Teselkin949398e2018-05-03 15:50:00 +03001372various @char and \char sequences, if supported by the getty-type
1373program employed on the system.
1374
1375Setting logon banner message is easy:
1376
1377.. code-block:: yaml
1378
1379 liunx:
1380 system:
1381 banner:
1382 enabled: true
1383 contents: |
1384 UNAUTHORIZED ACCESS TO THIS SYSTEM IS PROHIBITED
1385
1386 You must have explicit, authorized permission to access or configure this
1387 device. Unauthorized attempts and actions to access or use this system may
1388 result in civil and/or criminal penalties.
1389 All activities performed on this system are logged and monitored.
1390
Filip Pytloune874dfb2016-01-22 16:57:34 +01001391Message of the day
1392~~~~~~~~~~~~~~~~~~
1393
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001394``pam_motd`` from package ``libpam-modules`` is used for dynamic
1395messages of the day. Setting custom ``motd`` will clean up existing ones.
Filip Pytloune874dfb2016-01-22 16:57:34 +01001396
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001397Setting static ``motd`` will replace existing ``/etc/motd`` and remove
1398scripts from ``/etc/update-motd.d``.
Dmitry Teselkin538c8242018-04-02 16:13:37 +03001399
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001400Setting static ``motd``:
Dmitry Teselkin538c8242018-04-02 16:13:37 +03001401
1402.. code-block:: yaml
1403
1404 linux:
1405 system:
1406 motd: |
1407 UNAUTHORIZED ACCESS TO THIS SYSTEM IS PROHIBITED
1408
1409 You must have explicit, authorized permission to access or configure this
1410 device. Unauthorized attempts and actions to access or use this system may
1411 result in civil and/or criminal penalties.
1412 All activities performed on this system are logged and monitored.
1413
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001414Setting dynamic ``motd``:
Dmitry Teselkin538c8242018-04-02 16:13:37 +03001415
Filip Pytloune874dfb2016-01-22 16:57:34 +01001416.. code-block:: yaml
1417
1418 linux:
1419 system:
1420 motd:
1421 - release: |
1422 #!/bin/sh
1423 [ -r /etc/lsb-release ] && . /etc/lsb-release
1424
1425 if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
1426 # Fall back to using the very slow lsb_release utility
1427 DISTRIB_DESCRIPTION=$(lsb_release -s -d)
1428 fi
1429
1430 printf "Welcome to %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"
1431 - warning: |
1432 #!/bin/sh
1433 printf "This is [company name] network.\n"
1434 printf "Unauthorized access strictly prohibited.\n"
1435
Marek Celoud713e9072017-05-18 15:20:25 +02001436Services
1437~~~~~~~~
1438
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001439Stop and disable the ``linux`` service:
Marek Celoud713e9072017-05-18 15:20:25 +02001440
1441.. code-block:: yaml
1442
1443 linux:
1444 system:
1445 service:
1446 apt-daily.timer:
1447 status: dead
1448
Dzmitry Stremkouski70d09782018-11-30 16:04:59 +01001449Override systemd service unit:
1450
1451.. code-block:: yaml
1452
1453 parameters:
1454
1455 linux:
1456 system:
1457 service:
1458 tgt:
1459 name: tgt
1460 status: running
1461 enabled: True
1462 override:
1463 50:
1464 target: tgt.service.d
1465 name: bind
1466 content: |
1467 [Service]
1468 ExecStart=
1469 ExecStart=/usr/sbin/tgtd -f --iscsi portal=${_param:single_address}:3260
1470
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001471Possible statuses are ``dead`` (disable service by default), ``running``
1472(enable service by default), ``enabled``, ``disabled``:
Marek Celoud713e9072017-05-18 15:20:25 +02001473
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001474Linux with the ``atop`` service:
Serhiy Ovsianikov67bd56a2017-08-11 15:56:01 +03001475
1476.. code-block:: yaml
1477
1478 linux:
1479 system:
1480 atop:
1481 enabled: true
1482 interval: 20
1483 logpath: "/var/log/atop"
1484 outfile: "/var/log/atop/daily.log"
1485
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001486Linux with the ``mcelog`` service:
Oleksii Chupryn144432b2018-05-22 10:34:48 +03001487
1488.. code-block:: yaml
1489
1490 linux:
1491 system:
1492 mcelog:
1493 enabled: true
1494 logging:
1495 syslog: true
1496 syslog_error: true
1497
Denis Egorenkof0ef8c22019-11-22 17:26:30 +04001498Linux Sosreport
1499^^^^^^^^^^^^^^^
1500
1501Sosreport is an extensible, portable, support data collection tool
1502primarily aimed at Linux distributions and other UNIX-like operating systems,
1503which allows to create diagnostic snapshot of system.
1504
1505Works out of box and additional pillars are not needed by default:
1506
1507.. code-block:: bash
1508
1509 salt-call state.sls linux.system.sosreport.report
1510
1511or from Salt Master:
1512
1513.. code-block:: bash
1514
1515 salt -C '<target>' state.sls linux.system.sosreport.report
1516
1517Sosreport configuration may be extended with next pillar data:
1518
1519.. code-block:: yaml
1520
1521 linux:
1522 system:
1523 sosreport:
1524 cmd_options:
1525 tmp-dir: /root/reportdir
1526 no_arg_opts: [ '-q' ]
1527 config_options:
1528 general:
1529 all-logs: true
1530 plugins:
1531 disabled: [ docker ]
1532 tunables:
1533 apache.log: true
1534
1535Where is ``cmd_options`` additional provided arguments for cli cmd call,
1536``general`` desribes parameters for sos.conf ``general`` section,
1537``plugins`` desribes which plugins should be ``enabled`` or ``disabled``
1538and ``tunables`` has custom plugin options which can be additionally set.
1539
1540Also it is possible to pass cmd_options through pillar override:
1541
1542.. code-block:: bash
1543
1544 salt -C '<target>' state.sls linux.system.sosreport.report pillar='{ "sosreport" : { "ticket-number": 12345, "tmp-dir": "/root/reportdir2" } }'
1545
1546Run ``sosreport --help`` to get full list of possible options.
1547
1548Once state ``linux.system.sosreport.report`` is executed on targets, it is
1549possible to collect all reports by using next command on Salt Master:
1550
1551.. code-block:: bash
1552
1553 salt -C 'I@salt:master' state.sls linux.system.sosreport.collect pillar='{ "sosreport_collect" : { "target": "<target>", "archiveName": "sosreport_<env_name>_<customer>_<ticket>" } }'
1554
1555This will generate one common archive for all ``<target>`` nodes with name
1556``sosreport_<env_name>_<customer>_<ticket>.tar.gz``. It is required to specify
1557target nodes through model (``linux.system.sosreport.collect``) or pillar
1558override. Also possible options are: ``nodeIp`` which allows you to use IP from another
1559interface on node (should be available from minions), ``port`` for NetCat if
1560you see that default port is busy, ``archiveName`` for your archive and
1561``reportWorkDir`` directory to keeping all reports for current case.
1562
Filip Pytloun2f70b492016-02-19 15:55:25 +01001563RHEL / CentOS
Filip Pytloun8296bb92016-02-19 18:42:09 +01001564^^^^^^^^^^^^^
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001565Currently, ``update-motd`` is not available
1566for RHEL. So there is no native support for dynamic ``motd``.
1567You can still set a static one, with a different pillar structure:
Filip Pytloun2f70b492016-02-19 15:55:25 +01001568
1569.. code-block:: yaml
1570
1571 linux:
1572 system:
1573 motd: |
1574 This is [company name] network.
1575 Unauthorized access strictly prohibited.
1576
Filip Pytloun8296bb92016-02-19 18:42:09 +01001577Haveged
1578~~~~~~~
1579
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001580If you are running headless server and are low on entropy,
1581you may set up Haveged:
Filip Pytloun8296bb92016-02-19 18:42:09 +01001582
1583.. code-block:: yaml
1584
1585 linux:
1586 system:
1587 haveged:
1588 enabled: true
1589
Filip Pytlounf5383a42015-10-06 16:28:32 +02001590Linux network
1591-------------
1592
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001593Linux with network manager:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001594
1595.. code-block:: yaml
1596
1597 linux:
1598 network:
1599 enabled: true
1600 network_manager: true
1601
Dzmitry Stremkouski00cdbe62018-10-31 16:41:54 +01001602Execute linux.network.interface state without ifupdown activity:
1603
1604.. code-block:: bash
1605
1606 salt-call linux.network.interface pillar='{"linux":{"network":{"noifupdown":True}}}'
1607
1608
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001609Linux with default static network interfaces, default gateway
1610interface and DNS servers:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001611
1612.. code-block:: yaml
1613
1614 linux:
1615 network:
1616 enabled: true
1617 interface:
1618 eth0:
1619 enabled: true
1620 type: eth
1621 address: 192.168.0.102
1622 netmask: 255.255.255.0
1623 gateway: 192.168.0.1
1624 name_servers:
1625 - 8.8.8.8
1626 - 8.8.4.4
1627 mtu: 1500
1628
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001629Linux with bonded interfaces and disabled ``NetworkManager``:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001630
1631.. code-block:: yaml
1632
1633 linux:
1634 network:
1635 enabled: true
1636 interface:
1637 eth0:
1638 type: eth
1639 ...
1640 eth1:
1641 type: eth
1642 ...
1643 bond0:
1644 enabled: true
1645 type: bond
1646 address: 192.168.0.102
1647 netmask: 255.255.255.0
Dzmitry Stremkouskif6fb7212019-08-26 16:48:05 +02001648 proto: manual
1649 mtu: 9000
1650 name: ${_param:vlan_bond_name}
1651 slaves: ${_param:vlan_nic1} ${_param:vlan_nic2}
1652 mode: 802.3ad
1653 lacp_rate: slow
1654 downdelay: 200
1655 xmit_hash_policy: layer3+4
1656 miimon: 100
1657 use_interfaces:
1658 - ${_param:vlan_nic1}
1659 - ${_param:vlan_nic2}
1660 require_interfaces:
1661 - ${_param:vlan_nic1}
1662 - ${_param:vlan_nic2}
jan kaufman6d30adf2016-01-18 17:30:12 +01001663 network_manager:
1664 disable: true
Filip Pytlounf5383a42015-10-06 16:28:32 +02001665
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001666Linux with VLAN ``interface_params``:
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001667
1668.. code-block:: yaml
1669
1670 linux:
1671 network:
1672 enabled: true
1673 interface:
1674 vlan69:
1675 type: vlan
jan kaufmanc0bd76f2015-12-15 16:45:44 +01001676 use_interfaces:
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001677 - interface: ${linux:interface:bond0}
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001678
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001679Linux with wireless interface parameters:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001680
1681.. code-block:: yaml
1682
1683 linux:
1684 network:
1685 enabled: true
1686 gateway: 10.0.0.1
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001687 default_interface: eth0
Filip Pytlounf5383a42015-10-06 16:28:32 +02001688 interface:
1689 wlan0:
1690 type: eth
1691 wireless:
1692 essid: example
1693 key: example_key
1694 security: wpa
1695 priority: 1
1696
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001697Linux networks with routes defined:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001698
1699.. code-block:: yaml
1700
1701 linux:
1702 network:
1703 enabled: true
1704 gateway: 10.0.0.1
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001705 default_interface: eth0
Filip Pytlounf5383a42015-10-06 16:28:32 +02001706 interface:
1707 eth0:
1708 type: eth
1709 route:
1710 default:
1711 address: 192.168.0.123
1712 netmask: 255.255.255.0
1713 gateway: 192.168.0.1
1714
ivcc4730b12019-01-23 07:56:53 +03001715Linux networks with implicit routes definition:
1716
1717- on node 1:
1718
1719.. code-block:: yaml
1720
1721 linux:
1722 network:
1723 enabled: true
1724 router:
1725 ctl:
1726 # router that connects 10.0.1.0/24 and 10.0.2.0/24
1727 addresses:
1728 - 10.0.1.1/24
1729 - 10.0.2.1/24
1730 test:
1731 addresses:
1732 - 10.0.1.2/24
1733 networks:
1734 - 10.100.0.0/16
1735 interface:
1736 ctl:
1737 name: eth0
1738 address: 10.0.1.101
1739 netmask: 255.255.255.0
1740
1741- on node2:
1742
1743.. code-block:: yaml
1744
1745 linux:
1746 network:
1747 enabled: true
1748 router:
1749 ctl:
1750 # equivalent of node1's ctl router with 'implicit_routes = false'
1751 options:
1752 implicit_routes: false
1753 addresses:
1754 - 10.0.1.1/24
1755 - 10.0.2.1/24
1756 networks:
1757 - 10.0.1.0/24
1758 - 10.0.2.0/24
1759 interface:
1760 ctl:
1761 name: eth0
1762 address: 10.0.2.101
1763 netmask: 255.255.255.0
1764
1765
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001766Native Linux Bridges:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001767
1768.. code-block:: yaml
1769
1770 linux:
1771 network:
1772 interface:
1773 eth1:
1774 enabled: true
1775 type: eth
1776 proto: manual
1777 up_cmds:
1778 - ip address add 0/0 dev $IFACE
1779 - ip link set $IFACE up
1780 down_cmds:
1781 - ip link set $IFACE down
1782 br-ex:
1783 enabled: true
1784 type: bridge
1785 address: ${linux:network:host:public_local:address}
1786 netmask: 255.255.255.0
1787 use_interfaces:
1788 - eth1
1789
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001790Open vSwitch Bridges:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001791
1792.. code-block:: yaml
1793
1794 linux:
1795 network:
1796 bridge: openvswitch
1797 interface:
1798 eth1:
1799 enabled: true
1800 type: eth
1801 proto: manual
1802 up_cmds:
1803 - ip address add 0/0 dev $IFACE
1804 - ip link set $IFACE up
1805 down_cmds:
1806 - ip link set $IFACE down
1807 br-ex:
1808 enabled: true
1809 type: bridge
1810 address: ${linux:network:host:public_local:address}
1811 netmask: 255.255.255.0
1812 use_interfaces:
1813 - eth1
Dmitry Stremkouskia581ea72017-10-18 14:24:16 +03001814 br-prv:
1815 enabled: true
1816 type: ovs_bridge
1817 mtu: 65000
1818 br-ens7:
1819 enabled: true
1820 name: br-ens7
1821 type: ovs_bridge
1822 proto: manual
1823 mtu: 9000
1824 use_interfaces:
1825 - ens7
1826 patch-br-ens7-br-prv:
1827 enabled: true
1828 name: ens7-prv
1829 ovs_type: ovs_port
1830 type: ovs_port
1831 bridge: br-ens7
1832 port_type: patch
1833 peer: prv-ens7
Oleksii Chupryn694ee722018-06-13 14:08:58 +03001834 tag: 109 # [] to unset a tag
Dmitry Stremkouskia581ea72017-10-18 14:24:16 +03001835 mtu: 65000
1836 patch-br-prv-br-ens7:
1837 enabled: true
1838 name: prv-ens7
1839 bridge: br-prv
1840 ovs_type: ovs_port
1841 type: ovs_port
1842 port_type: patch
1843 peer: ens7-prv
Oleksii Chupryn694ee722018-06-13 14:08:58 +03001844 tag: 109
Dmitry Stremkouskia581ea72017-10-18 14:24:16 +03001845 mtu: 65000
1846 ens7:
1847 enabled: true
1848 name: ens7
1849 proto: manual
1850 ovs_port_type: OVSPort
1851 type: ovs_port
1852 ovs_bridge: br-ens7
1853 bridge: br-ens7
Oleg Gelbukh52f9f762019-07-01 15:26:16 -07001854 ens6:
1855 enabled: true
1856 proto: manual
1857 type: eth
1858 ovs_bridge: br-ctl
1859 br-ctl:
1860 enabled: true
1861 type: ovs_bridge
1862 internal-br-ctl-port:
1863 enabled: true
1864 proto: static
1865 address: 172.172.0.10
1866 netmask: 255.255.0.0
1867 name_servers:
1868 - 8.8.8.8
1869 - 172.172.172.172
1870 name: port-br-ctl
1871 bridge: br-ctl
1872 ovs_type: ovs_port
1873 type: ovs_port
1874 port_type: internal
1875 mtu: 65000
Filip Pytlounf5383a42015-10-06 16:28:32 +02001876
Petr Jediný8f8ae542017-07-13 16:19:12 +02001877Debian manual proto interfaces
1878
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001879When you are changing interface proto from static in up state
1880to manual, you may need to flush ip addresses. For example,
1881if you want to use the interface and the ip on the bridge.
1882This can be done by setting the ``ipflush_onchange`` to true.
Petr Jediný8f8ae542017-07-13 16:19:12 +02001883
1884.. code-block:: yaml
1885
1886 linux:
1887 network:
1888 interface:
1889 eth1:
1890 enabled: true
1891 type: eth
1892 proto: manual
1893 mtu: 9100
1894 ipflush_onchange: true
1895
Jiri Broulik1a191e32018-01-15 15:54:21 +01001896Debian static proto interfaces
1897
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001898When you are changing interface proto from dhcp in up state to
1899static, you may need to flush ip addresses and restart interface
1900to assign ip address from a managed file. For example, if you wantto
1901use the interface and the ip on the bridge. This can be done by
1902setting the ``ipflush_onchange`` with combination ``restart_on_ipflush``
1903param set to true.
Jiri Broulik1a191e32018-01-15 15:54:21 +01001904
1905.. code-block:: yaml
1906
1907 linux:
1908 network:
1909 interface:
1910 eth1:
1911 enabled: true
1912 type: eth
1913 proto: static
1914 address: 10.1.0.22
1915 netmask: 255.255.255.0
1916 ipflush_onchange: true
1917 restart_on_ipflush: true
Petr Jediný8f8ae542017-07-13 16:19:12 +02001918
Petr Jedinýd577cb52017-06-28 20:17:49 +02001919Concatinating and removing interface files
1920
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001921Debian based distributions have ``/etc/network/interfaces.d/``
1922directory, where you can store configuration of network
1923interfaces in separate files. You can concatinate the files
1924to the defined destination when needed, this operation removes
1925the file from the ``/etc/network/interfaces.d/``. If you just need
1926to remove iface files, you can use the ``remove_iface_files`` key.
Petr Jedinýd577cb52017-06-28 20:17:49 +02001927
1928.. code-block:: yaml
1929
1930 linux:
1931 network:
1932 concat_iface_files:
1933 - src: '/etc/network/interfaces.d/50-cloud-init.cfg'
1934 dst: '/etc/network/interfaces'
1935 remove_iface_files:
1936 - '/etc/network/interfaces.d/90-custom.cfg'
1937
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001938Configure DHCP client
Petr Jedinýd577cb52017-06-28 20:17:49 +02001939
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001940None of the keys is mandatory, include only those you really need.
1941For full list of available options under send, supersede, prepend,
1942append refer to dhcp-options(5).
Oleksandr Vlasov27a6c3a2017-04-11 16:01:19 -06001943
1944.. code-block:: yaml
1945
1946 linux:
1947 network:
1948 dhclient:
1949 enabled: true
1950 backoff_cutoff: 15
1951 initial_interval: 10
1952 reboot: 10
1953 retry: 60
1954 select_timeout: 0
1955 timeout: 120
1956 send:
1957 - option: host-name
1958 declaration: "= gethostname()"
1959 supersede:
1960 - option: host-name
1961 declaration: "spaceship"
1962 - option: domain-name
1963 declaration: "domain.home"
1964 #- option: arp-cache-timeout
1965 # declaration: 20
1966 prepend:
1967 - option: domain-name-servers
1968 declaration:
1969 - 8.8.8.8
1970 - 8.8.4.4
1971 - option: domain-search
1972 declaration:
1973 - example.com
1974 - eng.example.com
1975 #append:
1976 #- option: domain-name-servers
1977 # declaration: 127.0.0.1
1978 # ip or subnet to reject dhcp offer from
1979 reject:
1980 - 192.33.137.209
1981 - 10.0.2.0/24
1982 request:
1983 - subnet-mask
1984 - broadcast-address
1985 - time-offset
1986 - routers
1987 - domain-name
1988 - domain-name-servers
1989 - domain-search
1990 - host-name
1991 - dhcp6.name-servers
1992 - dhcp6.domain-search
1993 - dhcp6.fqdn
1994 - dhcp6.sntp-servers
1995 - netbios-name-servers
1996 - netbios-scope
1997 - interface-mtu
1998 - rfc3442-classless-static-routes
1999 - ntp-servers
2000 require:
2001 - subnet-mask
2002 - domain-name-servers
2003 # if per interface configuration required add below
2004 interface:
2005 ens2:
2006 initial_interval: 11
2007 reject:
2008 - 192.33.137.210
2009 ens3:
2010 initial_interval: 12
2011 reject:
2012 - 192.33.137.211
2013
Petr Michaleceb14b552017-06-01 10:27:05 +02002014Linux network systemd settings:
2015
2016.. code-block:: yaml
2017
2018 linux:
2019 network:
2020 ...
2021 systemd:
2022 link:
2023 10-iface-dmz:
2024 Match:
2025 MACAddress: c8:5b:67:fa:1a:af
2026 OriginalName: eth0
2027 Link:
2028 Name: dmz0
2029 netdev:
2030 20-bridge-dmz:
2031 match:
2032 name: dmz0
2033 network:
2034 mescription: bridge
2035 bridge: br-dmz0
2036 network:
2037 # works with lowercase, keys are by default capitalized
2038 40-dhcp:
2039 match:
2040 name: '*'
2041 network:
2042 DHCP: yes
2043
Petr Michalec10462bb2017-03-23 19:18:08 +01002044Configure global environment variables
Petr Michalec10462bb2017-03-23 19:18:08 +01002045
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002046Use ``/etc/environment`` for static system wide variable assignment
2047after boot. Variable expansion is frequently not supported.
Filip Pytlounf5383a42015-10-06 16:28:32 +02002048
2049.. code-block:: yaml
2050
2051 linux:
Petr Michalec10462bb2017-03-23 19:18:08 +01002052 system:
2053 env:
2054 BOB_VARIABLE: Alice
2055 ...
2056 BOB_PATH:
2057 - /srv/alice/bin
2058 - /srv/bob/bin
2059 ...
2060 ftp_proxy: none
2061 http_proxy: http://global-http-proxy.host.local:8080
2062 https_proxy: ${linux:system:proxy:https}
2063 no_proxy:
2064 - 192.168.0.80
2065 - 192.168.1.80
2066 - .domain.com
2067 - .local
Filip Pytlounf5383a42015-10-06 16:28:32 +02002068 ...
Petr Michalec10462bb2017-03-23 19:18:08 +01002069 # NOTE: global defaults proxy configuration.
Filip Pytlounf5383a42015-10-06 16:28:32 +02002070 proxy:
Petr Michalec10462bb2017-03-23 19:18:08 +01002071 ftp: ftp://proxy.host.local:2121
2072 http: http://proxy.host.local:3142
2073 https: https://proxy.host.local:3143
2074 noproxy:
2075 - .domain.com
2076 - .local
2077
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002078Configure the ``profile.d`` scripts
Petr Michalec10462bb2017-03-23 19:18:08 +01002079
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002080The ``profile.d`` scripts are being sourced during ``.sh`` execution
2081and support variable expansion in opposite to /etc/environment global
2082settings in ``/etc/environment``.
Petr Michalec10462bb2017-03-23 19:18:08 +01002083
2084.. code-block:: yaml
2085
2086 linux:
2087 system:
2088 profile:
2089 locales: |
2090 export LANG=C
2091 export LC_ALL=C
2092 ...
2093 vi_flavors.sh: |
2094 export PAGER=view
2095 export EDITOR=vim
2096 alias vi=vim
2097 shell_locales.sh: |
2098 export LANG=en_US
2099 export LC_ALL=en_US.UTF-8
2100 shell_proxies.sh: |
2101 export FTP_PROXY=ftp://127.0.3.3:2121
2102 export NO_PROXY='.local'
Filip Pytlounf5383a42015-10-06 16:28:32 +02002103
Dmitry Teselkina0d31d12018-09-04 14:43:09 +03002104
2105Configure login.defs parameters
2106-------------------------------
2107
2108.. code-block:: yaml
2109
2110 linux:
2111 system:
2112 login_defs:
2113 <opt_name>:
2114 enabled: true
2115 value: <opt_value>
2116
2117<opt_name> is a configurational option defined in 'man login.defs'.
2118<opt_name> is case sensitive, should be UPPERCASE only!
2119
2120
Filip Pytlounf5383a42015-10-06 16:28:32 +02002121Linux with hosts
2122
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002123Parameter ``purge_hosts`` will enforce whole ``/etc/hosts file``,
2124removing entries that are not defined in model except defaults
2125for both IPv4 and IPv6 localhost and hostname as well as FQDN.
Ales Komarek417e8c52017-08-25 15:10:29 +02002126
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002127We recommend using this option to verify that ``/etc/hosts``
2128is always in a clean state. However it is not enabled by default
2129for security reasons.
Filip Pytloun86506fe2017-01-26 14:36:16 +01002130
Filip Pytlounf5383a42015-10-06 16:28:32 +02002131.. code-block:: yaml
2132
2133 linux:
2134 network:
Filip Pytloun86506fe2017-01-26 14:36:16 +01002135 purge_hosts: true
Filip Pytlounf5383a42015-10-06 16:28:32 +02002136 host:
Filip Pytloun86506fe2017-01-26 14:36:16 +01002137 # No need to define this one if purge_hosts is true
2138 hostname:
2139 address: 127.0.1.1
2140 names:
2141 - ${linux:network:fqdn}
2142 - ${linux:network:hostname}
Filip Pytlounf5383a42015-10-06 16:28:32 +02002143 node1:
2144 address: 192.168.10.200
2145 names:
2146 - node2.domain.com
2147 - service2.domain.com
2148 node2:
2149 address: 192.168.10.201
2150 names:
2151 - node2.domain.com
2152 - service2.domain.com
2153
Ales Komarek417e8c52017-08-25 15:10:29 +02002154Linux with hosts collected from mine
2155
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002156All DNS records defined within infrastrucuture
2157are passed to the local hosts records or any DNS server. Only
2158hosts with the ``grain`` parameter set to ``true`` will be propagated
2159to the mine.
Ales Komarek417e8c52017-08-25 15:10:29 +02002160
2161.. code-block:: yaml
2162
2163 linux:
2164 network:
2165 purge_hosts: true
2166 mine_dns_records: true
2167 host:
2168 node1:
2169 address: 192.168.10.200
2170 grain: true
2171 names:
2172 - node2.domain.com
2173 - service2.domain.com
Filip Pytloun86506fe2017-01-26 14:36:16 +01002174
Michael Polenchuk95bc83a2019-01-15 18:47:48 +04002175Set up ``resolvconf's basic resolver info``, e.g. nameservers, search/domain and options:
Filip Pytlounde9bea52016-01-11 15:39:10 +01002176
2177.. code-block:: yaml
2178
2179 linux:
2180 network:
2181 resolv:
2182 dns:
Michael Polenchuk95bc83a2019-01-15 18:47:48 +04002183 - 8.8.4.4
2184 - 8.8.8.8
Filip Pytlounde9bea52016-01-11 15:39:10 +01002185 domain: my.example.com
2186 search:
Michael Polenchuk95bc83a2019-01-15 18:47:48 +04002187 - my.example.com
2188 - example.com
Marek Celoudf6cd1922016-12-05 13:39:49 +01002189 options:
Michael Polenchuk95bc83a2019-01-15 18:47:48 +04002190 - ndots:5
2191 - timeout:2
2192 - attempts:2
Filip Pytlounde9bea52016-01-11 15:39:10 +01002193
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002194Set up custom TX queue length for tap interfaces:
Andrii Petrenko735761d2017-03-21 17:17:35 -07002195
2196.. code-block:: yaml
2197
2198 linux:
2199 network:
Dzmitry Stremkouskic58cb242020-09-14 17:41:49 +02002200 custom_txqueuelen
2201 tap:
2202 queue_length: 10000
2203 enabled: true
2204 device_filter: 'tap[0-9a-z\-]*'
2205 ten:
2206 enabled: false
2207 veth:
2208 queue_length: 20000
Andrii Petrenko735761d2017-03-21 17:17:35 -07002209
Michael Polenchuk6e3042b2019-04-22 15:20:03 +04002210Auto repair/re-attach libvirt's vnet interfaces:
2211
2212.. code-block:: yaml
2213
2214 linux:
2215 network:
2216 libvirt_vnet_repair: true
2217
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002218DPDK OVS interfaces
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002219
2220**DPDK OVS NIC**
2221
2222.. code-block:: yaml
2223
2224 linux:
2225 network:
2226 bridge: openvswitch
2227 dpdk:
2228 enabled: true
Oleg Bondarev9a466792017-05-25 15:55:42 +04002229 driver: uio/vfio
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002230 openvswitch:
2231 pmd_cpu_mask: "0x6"
2232 dpdk_socket_mem: "1024,1024"
2233 dpdk_lcore_mask: "0x400"
2234 memory_channels: 2
2235 interface:
2236 dpkd0:
2237 name: ${_param:dpdk_nic}
2238 pci: 0000:06:00.0
Oleg Bondarev9a466792017-05-25 15:55:42 +04002239 driver: igb_uio/vfio-pci
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002240 enabled: true
2241 type: dpdk_ovs_port
2242 n_rxq: 2
Oleg Bondarev43dbbd32017-05-24 17:06:19 +04002243 pmd_rxq_affinity: "0:1,1:2"
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002244 bridge: br-prv
Jakub Pavlikaa759062017-03-13 15:57:26 +01002245 mtu: 9000
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002246 br-prv:
2247 enabled: true
2248 type: dpdk_ovs_bridge
Michael Polenchukd3378db2018-12-29 16:46:50 +04002249 br-floating:
2250 enabled: true
2251 type: ovs_bridge
2252 name_servers:
2253 - 1.1.1.1
2254 - 9.9.9.9
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002255
2256**DPDK OVS Bond**
2257
2258.. code-block:: yaml
2259
2260 linux:
2261 network:
2262 bridge: openvswitch
2263 dpdk:
2264 enabled: true
Oleg Bondarev9a466792017-05-25 15:55:42 +04002265 driver: uio/vfio
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002266 openvswitch:
2267 pmd_cpu_mask: "0x6"
2268 dpdk_socket_mem: "1024,1024"
2269 dpdk_lcore_mask: "0x400"
2270 memory_channels: 2
2271 interface:
2272 dpdk_second_nic:
2273 name: ${_param:primary_second_nic}
2274 pci: 0000:06:00.0
Oleg Bondarev9a466792017-05-25 15:55:42 +04002275 driver: igb_uio/vfio-pci
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002276 bond: dpdkbond0
2277 enabled: true
2278 type: dpdk_ovs_port
2279 n_rxq: 2
Oleg Bondarev43dbbd32017-05-24 17:06:19 +04002280 pmd_rxq_affinity: "0:1,1:2"
Jakub Pavlikaa759062017-03-13 15:57:26 +01002281 mtu: 9000
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002282 dpdk_first_nic:
2283 name: ${_param:primary_first_nic}
2284 pci: 0000:05:00.0
Oleg Bondarev9a466792017-05-25 15:55:42 +04002285 driver: igb_uio/vfio-pci
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002286 bond: dpdkbond0
2287 enabled: true
2288 type: dpdk_ovs_port
2289 n_rxq: 2
Oleg Bondarev43dbbd32017-05-24 17:06:19 +04002290 pmd_rxq_affinity: "0:1,1:2"
Jakub Pavlikaa759062017-03-13 15:57:26 +01002291 mtu: 9000
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002292 dpdkbond0:
2293 enabled: true
2294 bridge: br-prv
2295 type: dpdk_ovs_bond
2296 mode: active-backup
2297 br-prv:
2298 enabled: true
2299 type: dpdk_ovs_bridge
2300
Dzmitry Stremkouskif619b072018-03-15 20:13:42 +01002301**DPDK OVS LACP Bond with vlan tag**
2302
2303.. code-block:: yaml
2304
2305 linux:
2306 network:
2307 bridge: openvswitch
2308 dpdk:
2309 enabled: true
2310 driver: uio
2311 openvswitch:
2312 pmd_cpu_mask: "0x6"
2313 dpdk_socket_mem: "1024,1024"
2314 dpdk_lcore_mask: "0x400"
2315 memory_channels: "2"
2316 interface:
2317 eth3:
2318 enabled: true
2319 type: eth
2320 proto: manual
2321 name: ${_param:tenant_first_nic}
2322 eth4:
2323 enabled: true
2324 type: eth
2325 proto: manual
2326 name: ${_param:tenant_second_nic}
2327 dpdk0:
2328 name: ${_param:tenant_first_nic}
2329 pci: "0000:81:00.0"
2330 driver: igb_uio
2331 bond: bond1
2332 enabled: true
2333 type: dpdk_ovs_port
2334 n_rxq: 2
2335 dpdk1:
2336 name: ${_param:tenant_second_nic}
2337 pci: "0000:81:00.1"
2338 driver: igb_uio
2339 bond: bond1
2340 enabled: true
2341 type: dpdk_ovs_port
2342 n_rxq: 2
2343 bond1:
2344 enabled: true
2345 bridge: br-prv
2346 type: dpdk_ovs_bond
2347 mode: balance-slb
2348 br-prv:
2349 enabled: true
2350 type: dpdk_ovs_bridge
2351 tag: ${_param:tenant_vlan}
2352 address: ${_param:tenant_address}
2353 netmask: ${_param:tenant_network_netmask}
2354
Jakub Pavlikaa759062017-03-13 15:57:26 +01002355**DPDK OVS bridge for VXLAN**
2356
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002357If VXLAN is used as tenant segmentation, IP address must
2358be set on ``br-prv``.
Jakub Pavlikaa759062017-03-13 15:57:26 +01002359
2360.. code-block:: yaml
2361
2362 linux:
2363 network:
2364 ...
2365 interface:
2366 br-prv:
2367 enabled: true
2368 type: dpdk_ovs_bridge
2369 address: 192.168.50.0
2370 netmask: 255.255.255.0
Michael Polenchukd173d552018-01-22 15:22:47 +04002371 tag: 101
Jakub Pavlikaa759062017-03-13 15:57:26 +01002372 mtu: 9000
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002373
Oleksii Chupryne2151ff2018-03-13 16:01:12 +02002374**DPDK OVS bridge with Linux network interface**
2375
2376.. code-block:: yaml
2377
2378 linux:
2379 network:
2380 ...
2381 interface:
2382 eth0:
2383 type: eth
2384 ovs_bridge: br-prv
2385 ...
2386 br-prv:
2387 enabled: true
2388 type: dpdk_ovs_bridge
2389 ...
2390
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002391Linux storage
2392-------------
Filip Pytlounf5383a42015-10-06 16:28:32 +02002393
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002394Linux with mounted Samba:
Filip Pytlounf5383a42015-10-06 16:28:32 +02002395
2396.. code-block:: yaml
2397
2398 linux:
2399 storage:
2400 enabled: true
2401 mount:
2402 samba1:
Simon Pasquier376262a2016-11-16 15:21:51 +01002403 - enabled: true
Filip Pytlounf5383a42015-10-06 16:28:32 +02002404 - path: /media/myuser/public/
2405 - device: //192.168.0.1/storage
2406 - file_system: cifs
2407 - options: guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm
2408
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002409NFS mount:
Jiri Broulikb017f932017-03-31 13:55:36 +02002410
2411.. code-block:: yaml
2412
2413 linux:
2414 storage:
2415 enabled: true
2416 mount:
2417 nfs_glance:
2418 enabled: true
2419 path: /var/lib/glance/images
2420 device: 172.16.10.110:/var/nfs/glance
2421 file_system: nfs
2422 opts: rw,sync
2423
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002424File swap configuration:
Filip Pytlounf5383a42015-10-06 16:28:32 +02002425
2426.. code-block:: yaml
2427
2428 linux:
2429 storage:
2430 enabled: true
2431 swap:
2432 file:
2433 enabled: true
2434 engine: file
2435 device: /swapfile
2436 size: 1024
2437
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002438Partition swap configuration:
Lachlan Evenson30676512016-01-22 15:43:28 -08002439
2440.. code-block:: yaml
2441
2442 linux:
2443 storage:
2444 enabled: true
2445 swap:
2446 partition:
2447 enabled: true
2448 engine: partition
2449 device: /dev/vg0/swap
2450
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002451LVM group ``vg1`` with one device and ``data`` volume mounted
2452into ``/mnt/data``.
Filip Pytlounc8a001a2015-12-15 14:09:19 +01002453
2454.. code-block:: yaml
2455
2456 parameters:
2457 linux:
2458 storage:
2459 mount:
2460 data:
Simon Pasquier376262a2016-11-16 15:21:51 +01002461 enabled: true
Filip Pytlounc8a001a2015-12-15 14:09:19 +01002462 device: /dev/vg1/data
2463 file_system: ext4
2464 path: /mnt/data
2465 lvm:
2466 vg1:
2467 enabled: true
2468 devices:
2469 - /dev/sdb
2470 volume:
2471 data:
2472 size: 40G
2473 mount: ${linux:storage:mount:data}
root40bb5e72019-01-11 08:55:32 +00002474 # When set they will take precedence over filters aget from volume groups.
2475 lvm_filters:
2476 10:
2477 enabled: True
2478 value: "a|loop|"
2479 20:
2480 enabled: True
2481 value: "r|/dev/hdc|"
2482 30:
2483 enabled: True
2484 value: "a|/dev/ide|"
2485 40:
2486 enabled: True
2487 value: "r|.*|"
Filip Pytlounc8a001a2015-12-15 14:09:19 +01002488
Jakub Pavlik4f742142017-08-08 15:05:50 +02002489Create partitions on disk. Specify size in MB. It expects empty
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002490disk without any existing partitions.
2491Set ``startsector=1`` if you want to start partitions from ``2048``.
Jakub Pavlik4f742142017-08-08 15:05:50 +02002492
2493.. code-block:: yaml
2494
2495 linux:
2496 storage:
2497 disk:
2498 first_drive:
Piotr Krukd51911b2017-12-04 11:27:08 +01002499 startsector: 1
Jakub Pavlik4f742142017-08-08 15:05:50 +02002500 name: /dev/loop1
2501 type: gpt
2502 partitions:
2503 - size: 200 #size in MB
2504 type: fat32
2505 - size: 300 #size in MB
Jakub Pavlik8e2140a2017-08-14 23:29:57 +02002506 mkfs: True
2507 type: xfs
Jakub Pavlik4f742142017-08-08 15:05:50 +02002508 /dev/vda1:
2509 partitions:
2510 - size: 5
2511 type: ext2
2512 - size: 10
2513 type: ext4
Ales Komareka634f4b2016-10-02 13:11:04 +02002514
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002515Multipath with Fujitsu Eternus DXL:
Ales Komareka634f4b2016-10-02 13:11:04 +02002516
2517.. code-block:: yaml
2518
2519 parameters:
2520 linux:
2521 storage:
2522 multipath:
2523 enabled: true
2524 blacklist_devices:
2525 - /dev/sda
2526 - /dev/sdb
2527 backends:
2528 - fujitsu_eternus_dxl
2529
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002530Multipath with Hitachi VSP 1000:
Ales Komareka634f4b2016-10-02 13:11:04 +02002531
2532.. code-block:: yaml
2533
2534 parameters:
2535 linux:
2536 storage:
2537 multipath:
2538 enabled: true
2539 blacklist_devices:
2540 - /dev/sda
2541 - /dev/sdb
2542 backends:
2543 - hitachi_vsp1000
2544
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002545Multipath with IBM Storwize:
Ales Komareka634f4b2016-10-02 13:11:04 +02002546
2547.. code-block:: yaml
2548
2549 parameters:
2550 linux:
2551 storage:
2552 multipath:
2553 enabled: true
2554 blacklist_devices:
2555 - /dev/sda
2556 - /dev/sdb
2557 backends:
2558 - ibm_storwize
2559
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002560Multipath with multiple backends:
Ales Komareka634f4b2016-10-02 13:11:04 +02002561
2562.. code-block:: yaml
2563
2564 parameters:
2565 linux:
2566 storage:
2567 multipath:
2568 enabled: true
2569 blacklist_devices:
2570 - /dev/sda
2571 - /dev/sdb
2572 - /dev/sdc
2573 - /dev/sdd
2574 backends:
2575 - ibm_storwize
2576 - fujitsu_eternus_dxl
2577 - hitachi_vsp1000
2578
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002579PAM LDAP integration:
Dmitry Stremkouski7d8d67a2017-11-15 13:08:19 +03002580
2581.. code-block:: yaml
2582
2583 parameters:
2584 linux:
2585 system:
2586 auth:
2587 enabled: true
Dzmitry Stremkouski602735d2018-05-09 22:31:39 +02002588 mkhomedir:
2589 enabled: true
2590 umask: 0027
Dmitry Stremkouski7d8d67a2017-11-15 13:08:19 +03002591 ldap:
2592 enabled: true
2593 binddn: cn=bind,ou=service_users,dc=example,dc=com
2594 bindpw: secret
2595 uri: ldap://127.0.0.1
2596 base: ou=users,dc=example,dc=com
2597 ldap_version: 3
2598 pagesize: 65536
2599 referrals: off
2600 filter:
2601 passwd: (&(&(objectClass=person)(uidNumber=*))(unixHomeDirectory=*))
2602 shadow: (&(&(objectClass=person)(uidNumber=*))(unixHomeDirectory=*))
2603 group: (&(objectClass=group)(gidNumber=*))
2604
Gleb Galkin93b9ae92018-10-18 13:57:30 +03002605PAM duo 2FA integration
2606
2607.. code-block:: yaml
2608
2609 parameters:
2610 linux:
2611 system:
2612 auth:
2613 enabled: true
2614 duo:
2615 enabled: true
2616 duo_host: localhost
2617 duo_ikey: DUO-INTEGRATION-KEY
2618 duo_skey: DUO-SECRET-KEY
2619
2620duo package version may be specified (optional)
2621
2622.. code-block:: yaml
2623
2624 linux:
2625 system:
2626 package:
2627 duo-unix:
2628 version: 1.10.1-0
2629
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002630Disabled multipath (the default setup):
Ales Komareka634f4b2016-10-02 13:11:04 +02002631
2632.. code-block:: yaml
2633
2634 parameters:
2635 linux:
2636 storage:
2637 multipath:
2638 enabled: false
2639
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002640Linux with local loopback device:
Simon Pasquier375001e2017-01-26 13:22:33 +01002641
2642.. code-block:: yaml
2643
2644 linux:
2645 storage:
2646 loopback:
2647 disk1:
2648 file: /srv/disk1
2649 size: 50G
2650
Filip Pytlounb2c8f852016-11-21 17:03:43 +01002651External config generation
2652--------------------------
2653
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002654You are able to use config support metadata between formulas
2655and only generate configuration files for external use, for example, Docker, and so on.
Filip Pytlounb2c8f852016-11-21 17:03:43 +01002656
2657.. code-block:: yaml
2658
2659 parameters:
2660 linux:
2661 system:
2662 config:
2663 pillar:
2664 jenkins:
2665 master:
2666 home: /srv/volumes/jenkins
2667 approved_scripts:
2668 - method java.net.URL openConnection
2669 credentials:
2670 - type: username_password
2671 scope: global
2672 id: test
2673 desc: Testing credentials
2674 username: test
2675 password: test
2676
Vladimir Ereminccf28842017-04-10 23:52:10 +03002677Netconsole Remote Kernel Logging
2678--------------------------------
2679
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002680Netconsole logger can be configured for the configfs-enabled kernels
2681(``CONFIG_NETCONSOLE_DYNAMIC`` must be enabled). The configuration
2682applies both in runtime (if network is already configured),
2683and on-boot after an interface initialization.
Vladimir Ereminccf28842017-04-10 23:52:10 +03002684
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002685.. note::
2686
2687 * Receiver can be located only on the same L3 domain
2688 (or you need to configure gateway MAC manually).
2689 * The Receiver MAC is detected only on configuration time.
2690 * Using broadcast MAC is not recommended.
Vladimir Ereminccf28842017-04-10 23:52:10 +03002691
2692.. code-block:: yaml
2693
2694 parameters:
2695 linux:
2696 system:
2697 netconsole:
2698 enabled: true
2699 port: 514 (optional)
2700 loglevel: debug (optional)
2701 target:
2702 192.168.0.1:
2703 interface: bond0
2704 mac: "ff:ff:ff:ff:ff:ff" (optional)
Ales Komareka634f4b2016-10-02 13:11:04 +02002705
Dzmitry Stremkouskid1a268b2018-10-03 16:36:04 +02002706Check network params on the environment
2707---------------------------------------
2708
2709Grab nics and nics states
2710
2711.. code-block:: bash
2712
2713 salt osd001\* net_checks.get_nics
2714
2715**Example of system output:**
2716
2717.. code-block:: bash
2718
2719 osd001.domain.com:
2720 |_
2721 - bond0
2722 - None
2723 - 1e:c8:64:42:23:b9
2724 - 0
2725 - 1500
2726 |_
2727 - bond1
2728 - None
2729 - 3c:fd:fe:27:3b:00
2730 - 1
2731 - 9100
2732 |_
2733 - fourty1
2734 - None
2735 - 3c:fd:fe:27:3b:00
2736 - 1
2737 - 9100
2738 |_
2739 - fourty2
2740 - None
2741 - 3c:fd:fe:27:3b:02
2742 - 1
2743 - 9100
2744
2745Grab 10G nics PCI addresses for hugepages setup
2746
2747.. code-block:: bash
2748
2749 salt cmp001\* net_checks.get_ten_pci
2750
2751**Example of system output:**
2752
2753.. code-block:: bash
2754
2755 cmp001.domain.com:
2756 |_
2757 - ten1
2758 - 0000:19:00.0
2759 |_
2760 - ten2
2761 - 0000:19:00.1
2762 |_
2763 - ten3
2764 - 0000:19:00.2
2765 |_
2766 - ten4
2767 - 0000:19:00.3
2768
2769Grab ip address for an interface
2770
2771.. code-block:: bash
2772
2773 salt cmp001\* net_checks.get_ip iface=one4
2774
2775**Example of system output:**
2776
2777.. code-block:: bash
2778
2779 cmp001.domain.com:
2780 10.200.177.101
2781
2782Grab ip addresses map
2783
2784.. code-block:: bash
2785
2786 salt-call net_checks.nodes_addresses
2787
2788**Example of system output:**
2789
2790.. code-block:: bash
2791
2792 local:
2793 |_
2794 - cid01.domain.com
2795 |_
2796 |_
2797 - pxe
2798 - 10.200.177.91
2799 |_
2800 - control
2801 - 10.200.178.91
2802 |_
2803 - cmn02.domain.com
2804 |_
2805 |_
2806 - storage_access
2807 - 10.200.181.67
2808 |_
2809 - pxe
2810 - 10.200.177.67
2811 |_
2812 - control
2813 - 10.200.178.67
2814 |_
2815 - cmp010.domain.com
2816 |_
2817 |_
2818 - pxe
2819 - 10.200.177.110
2820 |_
2821 - storage_access
2822 - 10.200.181.110
2823 |_
2824 - control
2825 - 10.200.178.110
2826 |_
2827 - vxlan
2828 - 10.200.179.110
2829
2830Verify full mesh connectivity
2831
2832.. code-block:: bash
2833
2834 salt-call net_checks.ping_check
2835
2836**Example of positive system output:**
2837
2838.. code-block:: bash
2839
2840 ['PASSED']
2841 [INFO ] ['PASSED']
2842 local:
2843 True
2844
2845**Example of system output in case of failure:**
2846
2847.. code-block:: bash
2848
2849 FAILED
2850 [ERROR ] FAILED
2851 ['control: 10.0.1.92 -> 10.0.1.224: Failed']
2852 ['control: 10.0.1.93 -> 10.0.1.224: Failed']
2853 ['control: 10.0.1.51 -> 10.0.1.224: Failed']
2854 ['control: 10.0.1.102 -> 10.0.1.224: Failed']
2855 ['control: 10.0.1.13 -> 10.0.1.224: Failed']
2856 ['control: 10.0.1.81 -> 10.0.1.224: Failed']
2857 local:
2858 False
2859
2860For this feature to work, please mark addresses with some role.
2861Otherwise 'default' role is assumed and mesh would consist of all
2862addresses on the environment.
2863
2864Mesh mark is needed only for interfaces which are enabled and have
2865ip address assigned.
2866
2867Checking dhcp pxe network meaningless, as it is used for salt
2868master vs minion communications, therefore treated as checked.
2869
2870.. code-block:: yaml
2871
2872 parameters:
2873 linux:
2874 network:
2875 interface:
2876 ens3:
2877 enabled: true
2878 type: eth
2879 proto: static
2880 address: ${_param:deploy_address}
2881 netmask: ${_param:deploy_network_netmask}
2882 gateway: ${_param:deploy_network_gateway}
2883 mesh: pxe
2884
2885Check pillars for ip address duplicates
2886
2887.. code-block:: bash
2888
2889 salt-call net_checks.verify_addresses
2890
2891**Example of positive system output:**
2892
2893.. code-block:: bash
2894
2895 ['PASSED']
2896 [INFO ] ['PASSED']
2897 local:
2898 True
2899
2900**Example of system output in case of failure:**
2901
2902.. code-block:: bash
2903
2904 FAILED. Duplicates found
2905 [ERROR ] FAILED. Duplicates found
2906 ['gtw01.domain.com', 'gtw02.domain.com', '10.0.1.224']
2907 [ERROR ] ['gtw01.domain.com', 'gtw02.domain.com', '10.0.1.224']
2908 local:
2909 False
2910
2911Generate csv report for the env
2912
2913.. code-block:: bash
2914
2915 salt -C 'kvm* or cmp* or osd*' net_checks.get_nics_csv \
2916 | grep '^\ ' | sed 's/\ *//g' | grep -Ev ^server \
2917 | sed '1 i\server,nic_name,ip_addr,mac_addr,link,mtu,chassis_id,chassis_name,port_mac,port_descr'
2918
2919**Example of system output:**
2920
2921.. code-block:: bash
2922
2923 server,nic_name,ip_addr,mac_addr,link,mtu,chassis_id,chassis_name,port_mac,port_descr
2924 cmp010.domain.com,bond0,None,b4:96:91:10:5b:3a,1,1500,,,,
2925 cmp010.domain.com,bond0.21,10.200.178.110,b4:96:91:10:5b:3a,1,1500,,,,
2926 cmp010.domain.com,bond0.22,10.200.179.110,b4:96:91:10:5b:3a,1,1500,,,,
2927 cmp010.domain.com,bond1,None,3c:fd:fe:34:ad:22,0,1500,,,,
2928 cmp010.domain.com,bond1.24,10.200.181.110,3c:fd:fe:34:ad:22,0,1500,,,,
2929 cmp010.domain.com,fourty5,None,3c:fd:fe:34:ad:20,0,9000,,,,
2930 cmp010.domain.com,fourty6,None,3c:fd:fe:34:ad:22,0,9000,,,,
2931 cmp010.domain.com,one1,None,b4:96:91:10:5b:38,0,1500,,,,
2932 cmp010.domain.com,one2,None,b4:96:91:10:5b:39,1,1500,f0:4b:3a:8f:75:40,exnfvaa18-20,548,ge-0/0/22
2933 cmp010.domain.com,one3,None,b4:96:91:10:5b:3a,1,1500,f0:4b:3a:8f:75:40,exnfvaa18-20,547,ge-0/0/21
2934 cmp010.domain.com,one4,10.200.177.110,b4:96:91:10:5b:3b,1,1500,f0:4b:3a:8f:75:40,exnfvaa18-20,546,ge-0/0/20
2935 cmp011.domain.com,bond0,None,b4:96:91:13:6c:aa,1,1500,,,,
2936 cmp011.domain.com,bond0.21,10.200.178.111,b4:96:91:13:6c:aa,1,1500,,,,
2937 cmp011.domain.com,bond0.22,10.200.179.111,b4:96:91:13:6c:aa,1,1500,,,,
2938 ...
2939
Filip Pytlounf5383a42015-10-06 16:28:32 +02002940Usage
2941=====
2942
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002943Set MTU of the eth0 network interface to 1400:
Filip Pytlounf5383a42015-10-06 16:28:32 +02002944
2945.. code-block:: bash
2946
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002947 ip link set dev eth0 mtu 1400
Filip Pytlounf5383a42015-10-06 16:28:32 +02002948
Denis Egorenko4e45a702019-10-02 14:57:10 +04002949Switch Kernel from non-HWE to HWE
2950==================================
2951
2952It is possible to switch Kernel from non-HWE to HWE by using module
2953linux_kernel_switch. It has few methods:
2954
2955* check_hwe_kernel
2956* switch_kernel
2957* rollback_switch_kernel
2958
2959Method ``check_hwe_kernel`` allows to check whether HWE kernel installed
2960or not:
2961
2962.. code-block:: bash
2963
2964 salt <target> linux_kernel_switch.check_hwe_kernel
2965
2966Output for case HWE is installed:
2967
2968.. code-bloc:: bash
2969
2970 kvm02.cluster-env.local:
2971 ----------
2972 linux-image-extra-virtual-hwe-16.04:
2973 ----------
2974 linux-image-extra-virtual-hwe-16.04:
2975 ----------
2976 architecture:
2977 amd64
2978 description:
2979 Extra drivers for Virtual Linux kernel image
2980 This package will always depend on linux-image-generic.
2981 group:
2982 kernel
2983 install_date:
2984 2019-10-01T11:50:15Z
2985 name:
2986 linux-image-extra-virtual-hwe-16.04
2987 packager:
2988 Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
2989 source:
2990 linux-meta-hwe
2991 version:
2992 4.15.0.54.75
2993 ...
2994
2995Output for case HWE is not installed:
2996
2997.. code-bloc:: bash
2998
2999 kvm02.cluster-env.local:
3000 ----------
3001 linux-image-extra-virtual-hwe-16.04:
3002 Not installed!
3003 linux-image-generic-hwe-16.04:
3004 Not installed!
3005
3006Method ``switch_kernel`` allows you to switch from non-HWE to HWE. It has
3007two options: ``dry_run`` - to check what packages are going to be installed or
3008removed and ``only_kernel`` - install only Kernel image packages without other
3009HWE packages.
3010
3011Method ``rollback_switch_kernel`` allows you to rollback method
3012``switch_kernel`` which was executed successfully previously. Option
3013``dry_run`` - to check what packages are going to be installed/removed.
3014
Filip Pytlounf5383a42015-10-06 16:28:32 +02003015Read more
3016=========
3017
3018* https://www.archlinux.org/
3019* http://askubuntu.com/questions/175172/how-do-i-configure-proxies-in-ubuntu-server-or-minimal-cli-ubuntu