blob: 6ee52c4822a2bad8adebff531612f0741ed7bf1a [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
Jiri Broulik34a29b42017-04-25 14:42:54 +02001234Remove all repositories:
1235
1236.. code-block:: yaml
1237
1238 linux:
1239 system:
1240 purge_repos: true
1241
azvyagintsevff089d22018-07-27 16:52:34 +02001242Refresh repositories metada, after configuration:
1243
1244.. code-block:: yaml
1245
1246 linux:
1247 system:
1248 refresh_repos_meta: true
1249
Filip Pytlounc512e6c2017-11-22 14:28:10 +01001250Setup custom apt config options:
1251
1252.. code-block:: yaml
1253
1254 linux:
1255 system:
1256 apt:
1257 config:
1258 compression-workaround:
1259 "Acquire::CompressionTypes::Order": "gz"
1260 docker-clean:
1261 "DPkg::Post-Invoke":
1262 - "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"
1263 "APT::Update::Post-Invoke":
1264 - "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 +02001265
Petr Michalec10462bb2017-03-23 19:18:08 +01001266RC
1267~~
1268
Jakub Pavlik78859382016-01-21 11:26:39 +01001269rc.local example
1270
1271.. code-block:: yaml
1272
1273 linux:
1274 system:
1275 rc:
1276 local: |
1277 #!/bin/sh -e
1278 #
1279 # rc.local
1280 #
1281 # This script is executed at the end of each multiuser runlevel.
1282 # Make sure that the script will "exit 0" on success or any other
1283 # value on error.
1284 #
1285 # In order to enable or disable this script just change the execution
1286 # bits.
1287 #
1288 # By default this script does nothing.
1289 exit 0
1290
Filip Pytloun1f40dac2016-01-22 15:52:57 +01001291Prompt
1292~~~~~~
1293
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001294Setting prompt is implemented by creating ``/etc/profile.d/prompt.sh``.
1295Every user can have different prompt:
Filip Pytloun1f40dac2016-01-22 15:52:57 +01001296
1297.. code-block:: yaml
1298
1299 linux:
1300 system:
1301 prompt:
1302 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\\]
1303 default: \\n\\D{%y/%m/%d %H:%M:%S} $(hostname -f)\\n[\\u@\\h:\\w]
1304
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001305On Debian systems, to set prompt system-wide, it's necessary to
1306remove setting PS1 in ``/etc/bash.bashrc`` and ``~/.bashrc``,
1307which comes from ``/etc/skel/.bashrc``. This formula will do
1308this automatically, but will not touch existing user's
1309``~/.bashrc`` files except root.
Jakub Pavlik78859382016-01-21 11:26:39 +01001310
Filip Pytlouneef11c12016-03-25 11:00:23 +01001311Bash
1312~~~~
1313
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001314Fix bash configuration to preserve history across sessions
1315like ZSH does by default:
Filip Pytlouneef11c12016-03-25 11:00:23 +01001316
1317.. code-block:: yaml
1318
1319 linux:
1320 system:
1321 bash:
1322 preserve_history: true
1323
Dmitry Teselkin949398e2018-05-03 15:50:00 +03001324Login banner message
1325~~~~~~~~~~~~~~~~~~~~
1326
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001327``/etc/issue`` is a text file which contains a message or system
1328identification to be printed before the login prompt. It may contain
Dmitry Teselkin949398e2018-05-03 15:50:00 +03001329various @char and \char sequences, if supported by the getty-type
1330program employed on the system.
1331
1332Setting logon banner message is easy:
1333
1334.. code-block:: yaml
1335
1336 liunx:
1337 system:
1338 banner:
1339 enabled: true
1340 contents: |
1341 UNAUTHORIZED ACCESS TO THIS SYSTEM IS PROHIBITED
1342
1343 You must have explicit, authorized permission to access or configure this
1344 device. Unauthorized attempts and actions to access or use this system may
1345 result in civil and/or criminal penalties.
1346 All activities performed on this system are logged and monitored.
1347
Filip Pytloune874dfb2016-01-22 16:57:34 +01001348Message of the day
1349~~~~~~~~~~~~~~~~~~
1350
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001351``pam_motd`` from package ``libpam-modules`` is used for dynamic
1352messages of the day. Setting custom ``motd`` will clean up existing ones.
Filip Pytloune874dfb2016-01-22 16:57:34 +01001353
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001354Setting static ``motd`` will replace existing ``/etc/motd`` and remove
1355scripts from ``/etc/update-motd.d``.
Dmitry Teselkin538c8242018-04-02 16:13:37 +03001356
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001357Setting static ``motd``:
Dmitry Teselkin538c8242018-04-02 16:13:37 +03001358
1359.. code-block:: yaml
1360
1361 linux:
1362 system:
1363 motd: |
1364 UNAUTHORIZED ACCESS TO THIS SYSTEM IS PROHIBITED
1365
1366 You must have explicit, authorized permission to access or configure this
1367 device. Unauthorized attempts and actions to access or use this system may
1368 result in civil and/or criminal penalties.
1369 All activities performed on this system are logged and monitored.
1370
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001371Setting dynamic ``motd``:
Dmitry Teselkin538c8242018-04-02 16:13:37 +03001372
Filip Pytloune874dfb2016-01-22 16:57:34 +01001373.. code-block:: yaml
1374
1375 linux:
1376 system:
1377 motd:
1378 - release: |
1379 #!/bin/sh
1380 [ -r /etc/lsb-release ] && . /etc/lsb-release
1381
1382 if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
1383 # Fall back to using the very slow lsb_release utility
1384 DISTRIB_DESCRIPTION=$(lsb_release -s -d)
1385 fi
1386
1387 printf "Welcome to %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"
1388 - warning: |
1389 #!/bin/sh
1390 printf "This is [company name] network.\n"
1391 printf "Unauthorized access strictly prohibited.\n"
1392
Marek Celoud713e9072017-05-18 15:20:25 +02001393Services
1394~~~~~~~~
1395
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001396Stop and disable the ``linux`` service:
Marek Celoud713e9072017-05-18 15:20:25 +02001397
1398.. code-block:: yaml
1399
1400 linux:
1401 system:
1402 service:
1403 apt-daily.timer:
1404 status: dead
1405
Dzmitry Stremkouski70d09782018-11-30 16:04:59 +01001406Override systemd service unit:
1407
1408.. code-block:: yaml
1409
1410 parameters:
1411
1412 linux:
1413 system:
1414 service:
1415 tgt:
1416 name: tgt
1417 status: running
1418 enabled: True
1419 override:
1420 50:
1421 target: tgt.service.d
1422 name: bind
1423 content: |
1424 [Service]
1425 ExecStart=
1426 ExecStart=/usr/sbin/tgtd -f --iscsi portal=${_param:single_address}:3260
1427
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001428Possible statuses are ``dead`` (disable service by default), ``running``
1429(enable service by default), ``enabled``, ``disabled``:
Marek Celoud713e9072017-05-18 15:20:25 +02001430
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001431Linux with the ``atop`` service:
Serhiy Ovsianikov67bd56a2017-08-11 15:56:01 +03001432
1433.. code-block:: yaml
1434
1435 linux:
1436 system:
1437 atop:
1438 enabled: true
1439 interval: 20
1440 logpath: "/var/log/atop"
1441 outfile: "/var/log/atop/daily.log"
1442
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001443Linux with the ``mcelog`` service:
Oleksii Chupryn144432b2018-05-22 10:34:48 +03001444
1445.. code-block:: yaml
1446
1447 linux:
1448 system:
1449 mcelog:
1450 enabled: true
1451 logging:
1452 syslog: true
1453 syslog_error: true
1454
Denis Egorenkof0ef8c22019-11-22 17:26:30 +04001455Linux Sosreport
1456^^^^^^^^^^^^^^^
1457
1458Sosreport is an extensible, portable, support data collection tool
1459primarily aimed at Linux distributions and other UNIX-like operating systems,
1460which allows to create diagnostic snapshot of system.
1461
1462Works out of box and additional pillars are not needed by default:
1463
1464.. code-block:: bash
1465
1466 salt-call state.sls linux.system.sosreport.report
1467
1468or from Salt Master:
1469
1470.. code-block:: bash
1471
1472 salt -C '<target>' state.sls linux.system.sosreport.report
1473
1474Sosreport configuration may be extended with next pillar data:
1475
1476.. code-block:: yaml
1477
1478 linux:
1479 system:
1480 sosreport:
1481 cmd_options:
1482 tmp-dir: /root/reportdir
1483 no_arg_opts: [ '-q' ]
1484 config_options:
1485 general:
1486 all-logs: true
1487 plugins:
1488 disabled: [ docker ]
1489 tunables:
1490 apache.log: true
1491
1492Where is ``cmd_options`` additional provided arguments for cli cmd call,
1493``general`` desribes parameters for sos.conf ``general`` section,
1494``plugins`` desribes which plugins should be ``enabled`` or ``disabled``
1495and ``tunables`` has custom plugin options which can be additionally set.
1496
1497Also it is possible to pass cmd_options through pillar override:
1498
1499.. code-block:: bash
1500
1501 salt -C '<target>' state.sls linux.system.sosreport.report pillar='{ "sosreport" : { "ticket-number": 12345, "tmp-dir": "/root/reportdir2" } }'
1502
1503Run ``sosreport --help`` to get full list of possible options.
1504
1505Once state ``linux.system.sosreport.report`` is executed on targets, it is
1506possible to collect all reports by using next command on Salt Master:
1507
1508.. code-block:: bash
1509
1510 salt -C 'I@salt:master' state.sls linux.system.sosreport.collect pillar='{ "sosreport_collect" : { "target": "<target>", "archiveName": "sosreport_<env_name>_<customer>_<ticket>" } }'
1511
1512This will generate one common archive for all ``<target>`` nodes with name
1513``sosreport_<env_name>_<customer>_<ticket>.tar.gz``. It is required to specify
1514target nodes through model (``linux.system.sosreport.collect``) or pillar
1515override. Also possible options are: ``nodeIp`` which allows you to use IP from another
1516interface on node (should be available from minions), ``port`` for NetCat if
1517you see that default port is busy, ``archiveName`` for your archive and
1518``reportWorkDir`` directory to keeping all reports for current case.
1519
Filip Pytloun2f70b492016-02-19 15:55:25 +01001520RHEL / CentOS
Filip Pytloun8296bb92016-02-19 18:42:09 +01001521^^^^^^^^^^^^^
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001522Currently, ``update-motd`` is not available
1523for RHEL. So there is no native support for dynamic ``motd``.
1524You can still set a static one, with a different pillar structure:
Filip Pytloun2f70b492016-02-19 15:55:25 +01001525
1526.. code-block:: yaml
1527
1528 linux:
1529 system:
1530 motd: |
1531 This is [company name] network.
1532 Unauthorized access strictly prohibited.
1533
Filip Pytloun8296bb92016-02-19 18:42:09 +01001534Haveged
1535~~~~~~~
1536
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001537If you are running headless server and are low on entropy,
1538you may set up Haveged:
Filip Pytloun8296bb92016-02-19 18:42:09 +01001539
1540.. code-block:: yaml
1541
1542 linux:
1543 system:
1544 haveged:
1545 enabled: true
1546
Filip Pytlounf5383a42015-10-06 16:28:32 +02001547Linux network
1548-------------
1549
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001550Linux with network manager:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001551
1552.. code-block:: yaml
1553
1554 linux:
1555 network:
1556 enabled: true
1557 network_manager: true
1558
Dzmitry Stremkouski00cdbe62018-10-31 16:41:54 +01001559Execute linux.network.interface state without ifupdown activity:
1560
1561.. code-block:: bash
1562
1563 salt-call linux.network.interface pillar='{"linux":{"network":{"noifupdown":True}}}'
1564
1565
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001566Linux with default static network interfaces, default gateway
1567interface and DNS servers:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001568
1569.. code-block:: yaml
1570
1571 linux:
1572 network:
1573 enabled: true
1574 interface:
1575 eth0:
1576 enabled: true
1577 type: eth
1578 address: 192.168.0.102
1579 netmask: 255.255.255.0
1580 gateway: 192.168.0.1
1581 name_servers:
1582 - 8.8.8.8
1583 - 8.8.4.4
1584 mtu: 1500
1585
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001586Linux with bonded interfaces and disabled ``NetworkManager``:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001587
1588.. code-block:: yaml
1589
1590 linux:
1591 network:
1592 enabled: true
1593 interface:
1594 eth0:
1595 type: eth
1596 ...
1597 eth1:
1598 type: eth
1599 ...
1600 bond0:
1601 enabled: true
1602 type: bond
1603 address: 192.168.0.102
1604 netmask: 255.255.255.0
Dzmitry Stremkouskif6fb7212019-08-26 16:48:05 +02001605 proto: manual
1606 mtu: 9000
1607 name: ${_param:vlan_bond_name}
1608 slaves: ${_param:vlan_nic1} ${_param:vlan_nic2}
1609 mode: 802.3ad
1610 lacp_rate: slow
1611 downdelay: 200
1612 xmit_hash_policy: layer3+4
1613 miimon: 100
1614 use_interfaces:
1615 - ${_param:vlan_nic1}
1616 - ${_param:vlan_nic2}
1617 require_interfaces:
1618 - ${_param:vlan_nic1}
1619 - ${_param:vlan_nic2}
jan kaufman6d30adf2016-01-18 17:30:12 +01001620 network_manager:
1621 disable: true
Filip Pytlounf5383a42015-10-06 16:28:32 +02001622
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001623Linux with VLAN ``interface_params``:
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001624
1625.. code-block:: yaml
1626
1627 linux:
1628 network:
1629 enabled: true
1630 interface:
1631 vlan69:
1632 type: vlan
jan kaufmanc0bd76f2015-12-15 16:45:44 +01001633 use_interfaces:
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001634 - interface: ${linux:interface:bond0}
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001635
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001636Linux with wireless interface parameters:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001637
1638.. code-block:: yaml
1639
1640 linux:
1641 network:
1642 enabled: true
1643 gateway: 10.0.0.1
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001644 default_interface: eth0
Filip Pytlounf5383a42015-10-06 16:28:32 +02001645 interface:
1646 wlan0:
1647 type: eth
1648 wireless:
1649 essid: example
1650 key: example_key
1651 security: wpa
1652 priority: 1
1653
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001654Linux networks with routes defined:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001655
1656.. code-block:: yaml
1657
1658 linux:
1659 network:
1660 enabled: true
1661 gateway: 10.0.0.1
Jan Kaufman6a1ad712015-12-11 14:44:19 +01001662 default_interface: eth0
Filip Pytlounf5383a42015-10-06 16:28:32 +02001663 interface:
1664 eth0:
1665 type: eth
1666 route:
1667 default:
1668 address: 192.168.0.123
1669 netmask: 255.255.255.0
1670 gateway: 192.168.0.1
1671
ivcc4730b12019-01-23 07:56:53 +03001672Linux networks with implicit routes definition:
1673
1674- on node 1:
1675
1676.. code-block:: yaml
1677
1678 linux:
1679 network:
1680 enabled: true
1681 router:
1682 ctl:
1683 # router that connects 10.0.1.0/24 and 10.0.2.0/24
1684 addresses:
1685 - 10.0.1.1/24
1686 - 10.0.2.1/24
1687 test:
1688 addresses:
1689 - 10.0.1.2/24
1690 networks:
1691 - 10.100.0.0/16
1692 interface:
1693 ctl:
1694 name: eth0
1695 address: 10.0.1.101
1696 netmask: 255.255.255.0
1697
1698- on node2:
1699
1700.. code-block:: yaml
1701
1702 linux:
1703 network:
1704 enabled: true
1705 router:
1706 ctl:
1707 # equivalent of node1's ctl router with 'implicit_routes = false'
1708 options:
1709 implicit_routes: false
1710 addresses:
1711 - 10.0.1.1/24
1712 - 10.0.2.1/24
1713 networks:
1714 - 10.0.1.0/24
1715 - 10.0.2.0/24
1716 interface:
1717 ctl:
1718 name: eth0
1719 address: 10.0.2.101
1720 netmask: 255.255.255.0
1721
1722
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001723Native Linux Bridges:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001724
1725.. code-block:: yaml
1726
1727 linux:
1728 network:
1729 interface:
1730 eth1:
1731 enabled: true
1732 type: eth
1733 proto: manual
1734 up_cmds:
1735 - ip address add 0/0 dev $IFACE
1736 - ip link set $IFACE up
1737 down_cmds:
1738 - ip link set $IFACE down
1739 br-ex:
1740 enabled: true
1741 type: bridge
1742 address: ${linux:network:host:public_local:address}
1743 netmask: 255.255.255.0
1744 use_interfaces:
1745 - eth1
1746
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001747Open vSwitch Bridges:
Filip Pytlounf5383a42015-10-06 16:28:32 +02001748
1749.. code-block:: yaml
1750
1751 linux:
1752 network:
1753 bridge: openvswitch
1754 interface:
1755 eth1:
1756 enabled: true
1757 type: eth
1758 proto: manual
1759 up_cmds:
1760 - ip address add 0/0 dev $IFACE
1761 - ip link set $IFACE up
1762 down_cmds:
1763 - ip link set $IFACE down
1764 br-ex:
1765 enabled: true
1766 type: bridge
1767 address: ${linux:network:host:public_local:address}
1768 netmask: 255.255.255.0
1769 use_interfaces:
1770 - eth1
Dmitry Stremkouskia581ea72017-10-18 14:24:16 +03001771 br-prv:
1772 enabled: true
1773 type: ovs_bridge
1774 mtu: 65000
1775 br-ens7:
1776 enabled: true
1777 name: br-ens7
1778 type: ovs_bridge
1779 proto: manual
1780 mtu: 9000
1781 use_interfaces:
1782 - ens7
1783 patch-br-ens7-br-prv:
1784 enabled: true
1785 name: ens7-prv
1786 ovs_type: ovs_port
1787 type: ovs_port
1788 bridge: br-ens7
1789 port_type: patch
1790 peer: prv-ens7
Oleksii Chupryn694ee722018-06-13 14:08:58 +03001791 tag: 109 # [] to unset a tag
Dmitry Stremkouskia581ea72017-10-18 14:24:16 +03001792 mtu: 65000
1793 patch-br-prv-br-ens7:
1794 enabled: true
1795 name: prv-ens7
1796 bridge: br-prv
1797 ovs_type: ovs_port
1798 type: ovs_port
1799 port_type: patch
1800 peer: ens7-prv
Oleksii Chupryn694ee722018-06-13 14:08:58 +03001801 tag: 109
Dmitry Stremkouskia581ea72017-10-18 14:24:16 +03001802 mtu: 65000
1803 ens7:
1804 enabled: true
1805 name: ens7
1806 proto: manual
1807 ovs_port_type: OVSPort
1808 type: ovs_port
1809 ovs_bridge: br-ens7
1810 bridge: br-ens7
Oleg Gelbukh52f9f762019-07-01 15:26:16 -07001811 ens6:
1812 enabled: true
1813 proto: manual
1814 type: eth
1815 ovs_bridge: br-ctl
1816 br-ctl:
1817 enabled: true
1818 type: ovs_bridge
1819 internal-br-ctl-port:
1820 enabled: true
1821 proto: static
1822 address: 172.172.0.10
1823 netmask: 255.255.0.0
1824 name_servers:
1825 - 8.8.8.8
1826 - 172.172.172.172
1827 name: port-br-ctl
1828 bridge: br-ctl
1829 ovs_type: ovs_port
1830 type: ovs_port
1831 port_type: internal
1832 mtu: 65000
Filip Pytlounf5383a42015-10-06 16:28:32 +02001833
Petr Jediný8f8ae542017-07-13 16:19:12 +02001834Debian manual proto interfaces
1835
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001836When you are changing interface proto from static in up state
1837to manual, you may need to flush ip addresses. For example,
1838if you want to use the interface and the ip on the bridge.
1839This can be done by setting the ``ipflush_onchange`` to true.
Petr Jediný8f8ae542017-07-13 16:19:12 +02001840
1841.. code-block:: yaml
1842
1843 linux:
1844 network:
1845 interface:
1846 eth1:
1847 enabled: true
1848 type: eth
1849 proto: manual
1850 mtu: 9100
1851 ipflush_onchange: true
1852
Jiri Broulik1a191e32018-01-15 15:54:21 +01001853Debian static proto interfaces
1854
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001855When you are changing interface proto from dhcp in up state to
1856static, you may need to flush ip addresses and restart interface
1857to assign ip address from a managed file. For example, if you wantto
1858use the interface and the ip on the bridge. This can be done by
1859setting the ``ipflush_onchange`` with combination ``restart_on_ipflush``
1860param set to true.
Jiri Broulik1a191e32018-01-15 15:54:21 +01001861
1862.. code-block:: yaml
1863
1864 linux:
1865 network:
1866 interface:
1867 eth1:
1868 enabled: true
1869 type: eth
1870 proto: static
1871 address: 10.1.0.22
1872 netmask: 255.255.255.0
1873 ipflush_onchange: true
1874 restart_on_ipflush: true
Petr Jediný8f8ae542017-07-13 16:19:12 +02001875
Petr Jedinýd577cb52017-06-28 20:17:49 +02001876Concatinating and removing interface files
1877
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001878Debian based distributions have ``/etc/network/interfaces.d/``
1879directory, where you can store configuration of network
1880interfaces in separate files. You can concatinate the files
1881to the defined destination when needed, this operation removes
1882the file from the ``/etc/network/interfaces.d/``. If you just need
1883to remove iface files, you can use the ``remove_iface_files`` key.
Petr Jedinýd577cb52017-06-28 20:17:49 +02001884
1885.. code-block:: yaml
1886
1887 linux:
1888 network:
1889 concat_iface_files:
1890 - src: '/etc/network/interfaces.d/50-cloud-init.cfg'
1891 dst: '/etc/network/interfaces'
1892 remove_iface_files:
1893 - '/etc/network/interfaces.d/90-custom.cfg'
1894
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001895Configure DHCP client
Petr Jedinýd577cb52017-06-28 20:17:49 +02001896
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03001897None of the keys is mandatory, include only those you really need.
1898For full list of available options under send, supersede, prepend,
1899append refer to dhcp-options(5).
Oleksandr Vlasov27a6c3a2017-04-11 16:01:19 -06001900
1901.. code-block:: yaml
1902
1903 linux:
1904 network:
1905 dhclient:
1906 enabled: true
1907 backoff_cutoff: 15
1908 initial_interval: 10
1909 reboot: 10
1910 retry: 60
1911 select_timeout: 0
1912 timeout: 120
1913 send:
1914 - option: host-name
1915 declaration: "= gethostname()"
1916 supersede:
1917 - option: host-name
1918 declaration: "spaceship"
1919 - option: domain-name
1920 declaration: "domain.home"
1921 #- option: arp-cache-timeout
1922 # declaration: 20
1923 prepend:
1924 - option: domain-name-servers
1925 declaration:
1926 - 8.8.8.8
1927 - 8.8.4.4
1928 - option: domain-search
1929 declaration:
1930 - example.com
1931 - eng.example.com
1932 #append:
1933 #- option: domain-name-servers
1934 # declaration: 127.0.0.1
1935 # ip or subnet to reject dhcp offer from
1936 reject:
1937 - 192.33.137.209
1938 - 10.0.2.0/24
1939 request:
1940 - subnet-mask
1941 - broadcast-address
1942 - time-offset
1943 - routers
1944 - domain-name
1945 - domain-name-servers
1946 - domain-search
1947 - host-name
1948 - dhcp6.name-servers
1949 - dhcp6.domain-search
1950 - dhcp6.fqdn
1951 - dhcp6.sntp-servers
1952 - netbios-name-servers
1953 - netbios-scope
1954 - interface-mtu
1955 - rfc3442-classless-static-routes
1956 - ntp-servers
1957 require:
1958 - subnet-mask
1959 - domain-name-servers
1960 # if per interface configuration required add below
1961 interface:
1962 ens2:
1963 initial_interval: 11
1964 reject:
1965 - 192.33.137.210
1966 ens3:
1967 initial_interval: 12
1968 reject:
1969 - 192.33.137.211
1970
Petr Michaleceb14b552017-06-01 10:27:05 +02001971Linux network systemd settings:
1972
1973.. code-block:: yaml
1974
1975 linux:
1976 network:
1977 ...
1978 systemd:
1979 link:
1980 10-iface-dmz:
1981 Match:
1982 MACAddress: c8:5b:67:fa:1a:af
1983 OriginalName: eth0
1984 Link:
1985 Name: dmz0
1986 netdev:
1987 20-bridge-dmz:
1988 match:
1989 name: dmz0
1990 network:
1991 mescription: bridge
1992 bridge: br-dmz0
1993 network:
1994 # works with lowercase, keys are by default capitalized
1995 40-dhcp:
1996 match:
1997 name: '*'
1998 network:
1999 DHCP: yes
2000
Petr Michalec10462bb2017-03-23 19:18:08 +01002001Configure global environment variables
Petr Michalec10462bb2017-03-23 19:18:08 +01002002
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002003Use ``/etc/environment`` for static system wide variable assignment
2004after boot. Variable expansion is frequently not supported.
Filip Pytlounf5383a42015-10-06 16:28:32 +02002005
2006.. code-block:: yaml
2007
2008 linux:
Petr Michalec10462bb2017-03-23 19:18:08 +01002009 system:
2010 env:
2011 BOB_VARIABLE: Alice
2012 ...
2013 BOB_PATH:
2014 - /srv/alice/bin
2015 - /srv/bob/bin
2016 ...
2017 ftp_proxy: none
2018 http_proxy: http://global-http-proxy.host.local:8080
2019 https_proxy: ${linux:system:proxy:https}
2020 no_proxy:
2021 - 192.168.0.80
2022 - 192.168.1.80
2023 - .domain.com
2024 - .local
Filip Pytlounf5383a42015-10-06 16:28:32 +02002025 ...
Petr Michalec10462bb2017-03-23 19:18:08 +01002026 # NOTE: global defaults proxy configuration.
Filip Pytlounf5383a42015-10-06 16:28:32 +02002027 proxy:
Petr Michalec10462bb2017-03-23 19:18:08 +01002028 ftp: ftp://proxy.host.local:2121
2029 http: http://proxy.host.local:3142
2030 https: https://proxy.host.local:3143
2031 noproxy:
2032 - .domain.com
2033 - .local
2034
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002035Configure the ``profile.d`` scripts
Petr Michalec10462bb2017-03-23 19:18:08 +01002036
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002037The ``profile.d`` scripts are being sourced during ``.sh`` execution
2038and support variable expansion in opposite to /etc/environment global
2039settings in ``/etc/environment``.
Petr Michalec10462bb2017-03-23 19:18:08 +01002040
2041.. code-block:: yaml
2042
2043 linux:
2044 system:
2045 profile:
2046 locales: |
2047 export LANG=C
2048 export LC_ALL=C
2049 ...
2050 vi_flavors.sh: |
2051 export PAGER=view
2052 export EDITOR=vim
2053 alias vi=vim
2054 shell_locales.sh: |
2055 export LANG=en_US
2056 export LC_ALL=en_US.UTF-8
2057 shell_proxies.sh: |
2058 export FTP_PROXY=ftp://127.0.3.3:2121
2059 export NO_PROXY='.local'
Filip Pytlounf5383a42015-10-06 16:28:32 +02002060
Dmitry Teselkina0d31d12018-09-04 14:43:09 +03002061
2062Configure login.defs parameters
2063-------------------------------
2064
2065.. code-block:: yaml
2066
2067 linux:
2068 system:
2069 login_defs:
2070 <opt_name>:
2071 enabled: true
2072 value: <opt_value>
2073
2074<opt_name> is a configurational option defined in 'man login.defs'.
2075<opt_name> is case sensitive, should be UPPERCASE only!
2076
2077
Filip Pytlounf5383a42015-10-06 16:28:32 +02002078Linux with hosts
2079
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002080Parameter ``purge_hosts`` will enforce whole ``/etc/hosts file``,
2081removing entries that are not defined in model except defaults
2082for both IPv4 and IPv6 localhost and hostname as well as FQDN.
Ales Komarek417e8c52017-08-25 15:10:29 +02002083
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002084We recommend using this option to verify that ``/etc/hosts``
2085is always in a clean state. However it is not enabled by default
2086for security reasons.
Filip Pytloun86506fe2017-01-26 14:36:16 +01002087
Filip Pytlounf5383a42015-10-06 16:28:32 +02002088.. code-block:: yaml
2089
2090 linux:
2091 network:
Filip Pytloun86506fe2017-01-26 14:36:16 +01002092 purge_hosts: true
Filip Pytlounf5383a42015-10-06 16:28:32 +02002093 host:
Filip Pytloun86506fe2017-01-26 14:36:16 +01002094 # No need to define this one if purge_hosts is true
2095 hostname:
2096 address: 127.0.1.1
2097 names:
2098 - ${linux:network:fqdn}
2099 - ${linux:network:hostname}
Filip Pytlounf5383a42015-10-06 16:28:32 +02002100 node1:
2101 address: 192.168.10.200
2102 names:
2103 - node2.domain.com
2104 - service2.domain.com
2105 node2:
2106 address: 192.168.10.201
2107 names:
2108 - node2.domain.com
2109 - service2.domain.com
2110
Ales Komarek417e8c52017-08-25 15:10:29 +02002111Linux with hosts collected from mine
2112
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002113All DNS records defined within infrastrucuture
2114are passed to the local hosts records or any DNS server. Only
2115hosts with the ``grain`` parameter set to ``true`` will be propagated
2116to the mine.
Ales Komarek417e8c52017-08-25 15:10:29 +02002117
2118.. code-block:: yaml
2119
2120 linux:
2121 network:
2122 purge_hosts: true
2123 mine_dns_records: true
2124 host:
2125 node1:
2126 address: 192.168.10.200
2127 grain: true
2128 names:
2129 - node2.domain.com
2130 - service2.domain.com
Filip Pytloun86506fe2017-01-26 14:36:16 +01002131
Michael Polenchuk95bc83a2019-01-15 18:47:48 +04002132Set up ``resolvconf's basic resolver info``, e.g. nameservers, search/domain and options:
Filip Pytlounde9bea52016-01-11 15:39:10 +01002133
2134.. code-block:: yaml
2135
2136 linux:
2137 network:
2138 resolv:
2139 dns:
Michael Polenchuk95bc83a2019-01-15 18:47:48 +04002140 - 8.8.4.4
2141 - 8.8.8.8
Filip Pytlounde9bea52016-01-11 15:39:10 +01002142 domain: my.example.com
2143 search:
Michael Polenchuk95bc83a2019-01-15 18:47:48 +04002144 - my.example.com
2145 - example.com
Marek Celoudf6cd1922016-12-05 13:39:49 +01002146 options:
Michael Polenchuk95bc83a2019-01-15 18:47:48 +04002147 - ndots:5
2148 - timeout:2
2149 - attempts:2
Filip Pytlounde9bea52016-01-11 15:39:10 +01002150
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002151Set up custom TX queue length for tap interfaces:
Andrii Petrenko735761d2017-03-21 17:17:35 -07002152
2153.. code-block:: yaml
2154
2155 linux:
2156 network:
2157 tap_custom_txqueuelen: 10000
2158
Michael Polenchuk6e3042b2019-04-22 15:20:03 +04002159Auto repair/re-attach libvirt's vnet interfaces:
2160
2161.. code-block:: yaml
2162
2163 linux:
2164 network:
2165 libvirt_vnet_repair: true
2166
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002167DPDK OVS interfaces
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002168
2169**DPDK OVS NIC**
2170
2171.. code-block:: yaml
2172
2173 linux:
2174 network:
2175 bridge: openvswitch
2176 dpdk:
2177 enabled: true
Oleg Bondarev9a466792017-05-25 15:55:42 +04002178 driver: uio/vfio
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002179 openvswitch:
2180 pmd_cpu_mask: "0x6"
2181 dpdk_socket_mem: "1024,1024"
2182 dpdk_lcore_mask: "0x400"
2183 memory_channels: 2
2184 interface:
2185 dpkd0:
2186 name: ${_param:dpdk_nic}
2187 pci: 0000:06:00.0
Oleg Bondarev9a466792017-05-25 15:55:42 +04002188 driver: igb_uio/vfio-pci
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002189 enabled: true
2190 type: dpdk_ovs_port
2191 n_rxq: 2
Oleg Bondarev43dbbd32017-05-24 17:06:19 +04002192 pmd_rxq_affinity: "0:1,1:2"
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002193 bridge: br-prv
Jakub Pavlikaa759062017-03-13 15:57:26 +01002194 mtu: 9000
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002195 br-prv:
2196 enabled: true
2197 type: dpdk_ovs_bridge
Michael Polenchukd3378db2018-12-29 16:46:50 +04002198 br-floating:
2199 enabled: true
2200 type: ovs_bridge
2201 name_servers:
2202 - 1.1.1.1
2203 - 9.9.9.9
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002204
2205**DPDK OVS Bond**
2206
2207.. code-block:: yaml
2208
2209 linux:
2210 network:
2211 bridge: openvswitch
2212 dpdk:
2213 enabled: true
Oleg Bondarev9a466792017-05-25 15:55:42 +04002214 driver: uio/vfio
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002215 openvswitch:
2216 pmd_cpu_mask: "0x6"
2217 dpdk_socket_mem: "1024,1024"
2218 dpdk_lcore_mask: "0x400"
2219 memory_channels: 2
2220 interface:
2221 dpdk_second_nic:
2222 name: ${_param:primary_second_nic}
2223 pci: 0000:06:00.0
Oleg Bondarev9a466792017-05-25 15:55:42 +04002224 driver: igb_uio/vfio-pci
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002225 bond: dpdkbond0
2226 enabled: true
2227 type: dpdk_ovs_port
2228 n_rxq: 2
Oleg Bondarev43dbbd32017-05-24 17:06:19 +04002229 pmd_rxq_affinity: "0:1,1:2"
Jakub Pavlikaa759062017-03-13 15:57:26 +01002230 mtu: 9000
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002231 dpdk_first_nic:
2232 name: ${_param:primary_first_nic}
2233 pci: 0000:05:00.0
Oleg Bondarev9a466792017-05-25 15:55:42 +04002234 driver: igb_uio/vfio-pci
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002235 bond: dpdkbond0
2236 enabled: true
2237 type: dpdk_ovs_port
2238 n_rxq: 2
Oleg Bondarev43dbbd32017-05-24 17:06:19 +04002239 pmd_rxq_affinity: "0:1,1:2"
Jakub Pavlikaa759062017-03-13 15:57:26 +01002240 mtu: 9000
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002241 dpdkbond0:
2242 enabled: true
2243 bridge: br-prv
2244 type: dpdk_ovs_bond
2245 mode: active-backup
2246 br-prv:
2247 enabled: true
2248 type: dpdk_ovs_bridge
2249
Dzmitry Stremkouskif619b072018-03-15 20:13:42 +01002250**DPDK OVS LACP Bond with vlan tag**
2251
2252.. code-block:: yaml
2253
2254 linux:
2255 network:
2256 bridge: openvswitch
2257 dpdk:
2258 enabled: true
2259 driver: uio
2260 openvswitch:
2261 pmd_cpu_mask: "0x6"
2262 dpdk_socket_mem: "1024,1024"
2263 dpdk_lcore_mask: "0x400"
2264 memory_channels: "2"
2265 interface:
2266 eth3:
2267 enabled: true
2268 type: eth
2269 proto: manual
2270 name: ${_param:tenant_first_nic}
2271 eth4:
2272 enabled: true
2273 type: eth
2274 proto: manual
2275 name: ${_param:tenant_second_nic}
2276 dpdk0:
2277 name: ${_param:tenant_first_nic}
2278 pci: "0000:81:00.0"
2279 driver: igb_uio
2280 bond: bond1
2281 enabled: true
2282 type: dpdk_ovs_port
2283 n_rxq: 2
2284 dpdk1:
2285 name: ${_param:tenant_second_nic}
2286 pci: "0000:81:00.1"
2287 driver: igb_uio
2288 bond: bond1
2289 enabled: true
2290 type: dpdk_ovs_port
2291 n_rxq: 2
2292 bond1:
2293 enabled: true
2294 bridge: br-prv
2295 type: dpdk_ovs_bond
2296 mode: balance-slb
2297 br-prv:
2298 enabled: true
2299 type: dpdk_ovs_bridge
2300 tag: ${_param:tenant_vlan}
2301 address: ${_param:tenant_address}
2302 netmask: ${_param:tenant_network_netmask}
2303
Jakub Pavlikaa759062017-03-13 15:57:26 +01002304**DPDK OVS bridge for VXLAN**
2305
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002306If VXLAN is used as tenant segmentation, IP address must
2307be set on ``br-prv``.
Jakub Pavlikaa759062017-03-13 15:57:26 +01002308
2309.. code-block:: yaml
2310
2311 linux:
2312 network:
2313 ...
2314 interface:
2315 br-prv:
2316 enabled: true
2317 type: dpdk_ovs_bridge
2318 address: 192.168.50.0
2319 netmask: 255.255.255.0
Michael Polenchukd173d552018-01-22 15:22:47 +04002320 tag: 101
Jakub Pavlikaa759062017-03-13 15:57:26 +01002321 mtu: 9000
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002322
Oleksii Chupryne2151ff2018-03-13 16:01:12 +02002323**DPDK OVS bridge with Linux network interface**
2324
2325.. code-block:: yaml
2326
2327 linux:
2328 network:
2329 ...
2330 interface:
2331 eth0:
2332 type: eth
2333 ovs_bridge: br-prv
2334 ...
2335 br-prv:
2336 enabled: true
2337 type: dpdk_ovs_bridge
2338 ...
2339
Jakub Pavlik21ca2152017-02-27 22:21:09 +01002340Linux storage
2341-------------
Filip Pytlounf5383a42015-10-06 16:28:32 +02002342
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002343Linux with mounted Samba:
Filip Pytlounf5383a42015-10-06 16:28:32 +02002344
2345.. code-block:: yaml
2346
2347 linux:
2348 storage:
2349 enabled: true
2350 mount:
2351 samba1:
Simon Pasquier376262a2016-11-16 15:21:51 +01002352 - enabled: true
Filip Pytlounf5383a42015-10-06 16:28:32 +02002353 - path: /media/myuser/public/
2354 - device: //192.168.0.1/storage
2355 - file_system: cifs
2356 - options: guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm
2357
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002358NFS mount:
Jiri Broulikb017f932017-03-31 13:55:36 +02002359
2360.. code-block:: yaml
2361
2362 linux:
2363 storage:
2364 enabled: true
2365 mount:
2366 nfs_glance:
2367 enabled: true
2368 path: /var/lib/glance/images
2369 device: 172.16.10.110:/var/nfs/glance
2370 file_system: nfs
2371 opts: rw,sync
2372
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002373File swap configuration:
Filip Pytlounf5383a42015-10-06 16:28:32 +02002374
2375.. code-block:: yaml
2376
2377 linux:
2378 storage:
2379 enabled: true
2380 swap:
2381 file:
2382 enabled: true
2383 engine: file
2384 device: /swapfile
2385 size: 1024
2386
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002387Partition swap configuration:
Lachlan Evenson30676512016-01-22 15:43:28 -08002388
2389.. code-block:: yaml
2390
2391 linux:
2392 storage:
2393 enabled: true
2394 swap:
2395 partition:
2396 enabled: true
2397 engine: partition
2398 device: /dev/vg0/swap
2399
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002400LVM group ``vg1`` with one device and ``data`` volume mounted
2401into ``/mnt/data``.
Filip Pytlounc8a001a2015-12-15 14:09:19 +01002402
2403.. code-block:: yaml
2404
2405 parameters:
2406 linux:
2407 storage:
2408 mount:
2409 data:
Simon Pasquier376262a2016-11-16 15:21:51 +01002410 enabled: true
Filip Pytlounc8a001a2015-12-15 14:09:19 +01002411 device: /dev/vg1/data
2412 file_system: ext4
2413 path: /mnt/data
2414 lvm:
2415 vg1:
2416 enabled: true
2417 devices:
2418 - /dev/sdb
2419 volume:
2420 data:
2421 size: 40G
2422 mount: ${linux:storage:mount:data}
root40bb5e72019-01-11 08:55:32 +00002423 # When set they will take precedence over filters aget from volume groups.
2424 lvm_filters:
2425 10:
2426 enabled: True
2427 value: "a|loop|"
2428 20:
2429 enabled: True
2430 value: "r|/dev/hdc|"
2431 30:
2432 enabled: True
2433 value: "a|/dev/ide|"
2434 40:
2435 enabled: True
2436 value: "r|.*|"
Filip Pytlounc8a001a2015-12-15 14:09:19 +01002437
Jakub Pavlik4f742142017-08-08 15:05:50 +02002438Create partitions on disk. Specify size in MB. It expects empty
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002439disk without any existing partitions.
2440Set ``startsector=1`` if you want to start partitions from ``2048``.
Jakub Pavlik4f742142017-08-08 15:05:50 +02002441
2442.. code-block:: yaml
2443
2444 linux:
2445 storage:
2446 disk:
2447 first_drive:
Piotr Krukd51911b2017-12-04 11:27:08 +01002448 startsector: 1
Jakub Pavlik4f742142017-08-08 15:05:50 +02002449 name: /dev/loop1
2450 type: gpt
2451 partitions:
2452 - size: 200 #size in MB
2453 type: fat32
2454 - size: 300 #size in MB
Jakub Pavlik8e2140a2017-08-14 23:29:57 +02002455 mkfs: True
2456 type: xfs
Jakub Pavlik4f742142017-08-08 15:05:50 +02002457 /dev/vda1:
2458 partitions:
2459 - size: 5
2460 type: ext2
2461 - size: 10
2462 type: ext4
Ales Komareka634f4b2016-10-02 13:11:04 +02002463
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002464Multipath with Fujitsu Eternus DXL:
Ales Komareka634f4b2016-10-02 13:11:04 +02002465
2466.. code-block:: yaml
2467
2468 parameters:
2469 linux:
2470 storage:
2471 multipath:
2472 enabled: true
2473 blacklist_devices:
2474 - /dev/sda
2475 - /dev/sdb
2476 backends:
2477 - fujitsu_eternus_dxl
2478
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002479Multipath with Hitachi VSP 1000:
Ales Komareka634f4b2016-10-02 13:11:04 +02002480
2481.. code-block:: yaml
2482
2483 parameters:
2484 linux:
2485 storage:
2486 multipath:
2487 enabled: true
2488 blacklist_devices:
2489 - /dev/sda
2490 - /dev/sdb
2491 backends:
2492 - hitachi_vsp1000
2493
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002494Multipath with IBM Storwize:
Ales Komareka634f4b2016-10-02 13:11:04 +02002495
2496.. code-block:: yaml
2497
2498 parameters:
2499 linux:
2500 storage:
2501 multipath:
2502 enabled: true
2503 blacklist_devices:
2504 - /dev/sda
2505 - /dev/sdb
2506 backends:
2507 - ibm_storwize
2508
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002509Multipath with multiple backends:
Ales Komareka634f4b2016-10-02 13:11:04 +02002510
2511.. code-block:: yaml
2512
2513 parameters:
2514 linux:
2515 storage:
2516 multipath:
2517 enabled: true
2518 blacklist_devices:
2519 - /dev/sda
2520 - /dev/sdb
2521 - /dev/sdc
2522 - /dev/sdd
2523 backends:
2524 - ibm_storwize
2525 - fujitsu_eternus_dxl
2526 - hitachi_vsp1000
2527
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002528PAM LDAP integration:
Dmitry Stremkouski7d8d67a2017-11-15 13:08:19 +03002529
2530.. code-block:: yaml
2531
2532 parameters:
2533 linux:
2534 system:
2535 auth:
2536 enabled: true
Dzmitry Stremkouski602735d2018-05-09 22:31:39 +02002537 mkhomedir:
2538 enabled: true
2539 umask: 0027
Dmitry Stremkouski7d8d67a2017-11-15 13:08:19 +03002540 ldap:
2541 enabled: true
2542 binddn: cn=bind,ou=service_users,dc=example,dc=com
2543 bindpw: secret
2544 uri: ldap://127.0.0.1
2545 base: ou=users,dc=example,dc=com
2546 ldap_version: 3
2547 pagesize: 65536
2548 referrals: off
2549 filter:
2550 passwd: (&(&(objectClass=person)(uidNumber=*))(unixHomeDirectory=*))
2551 shadow: (&(&(objectClass=person)(uidNumber=*))(unixHomeDirectory=*))
2552 group: (&(objectClass=group)(gidNumber=*))
2553
Gleb Galkin93b9ae92018-10-18 13:57:30 +03002554PAM duo 2FA integration
2555
2556.. code-block:: yaml
2557
2558 parameters:
2559 linux:
2560 system:
2561 auth:
2562 enabled: true
2563 duo:
2564 enabled: true
2565 duo_host: localhost
2566 duo_ikey: DUO-INTEGRATION-KEY
2567 duo_skey: DUO-SECRET-KEY
2568
2569duo package version may be specified (optional)
2570
2571.. code-block:: yaml
2572
2573 linux:
2574 system:
2575 package:
2576 duo-unix:
2577 version: 1.10.1-0
2578
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002579Disabled multipath (the default setup):
Ales Komareka634f4b2016-10-02 13:11:04 +02002580
2581.. code-block:: yaml
2582
2583 parameters:
2584 linux:
2585 storage:
2586 multipath:
2587 enabled: false
2588
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002589Linux with local loopback device:
Simon Pasquier375001e2017-01-26 13:22:33 +01002590
2591.. code-block:: yaml
2592
2593 linux:
2594 storage:
2595 loopback:
2596 disk1:
2597 file: /srv/disk1
2598 size: 50G
2599
Filip Pytlounb2c8f852016-11-21 17:03:43 +01002600External config generation
2601--------------------------
2602
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002603You are able to use config support metadata between formulas
2604and only generate configuration files for external use, for example, Docker, and so on.
Filip Pytlounb2c8f852016-11-21 17:03:43 +01002605
2606.. code-block:: yaml
2607
2608 parameters:
2609 linux:
2610 system:
2611 config:
2612 pillar:
2613 jenkins:
2614 master:
2615 home: /srv/volumes/jenkins
2616 approved_scripts:
2617 - method java.net.URL openConnection
2618 credentials:
2619 - type: username_password
2620 scope: global
2621 id: test
2622 desc: Testing credentials
2623 username: test
2624 password: test
2625
Vladimir Ereminccf28842017-04-10 23:52:10 +03002626Netconsole Remote Kernel Logging
2627--------------------------------
2628
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002629Netconsole logger can be configured for the configfs-enabled kernels
2630(``CONFIG_NETCONSOLE_DYNAMIC`` must be enabled). The configuration
2631applies both in runtime (if network is already configured),
2632and on-boot after an interface initialization.
Vladimir Ereminccf28842017-04-10 23:52:10 +03002633
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002634.. note::
2635
2636 * Receiver can be located only on the same L3 domain
2637 (or you need to configure gateway MAC manually).
2638 * The Receiver MAC is detected only on configuration time.
2639 * Using broadcast MAC is not recommended.
Vladimir Ereminccf28842017-04-10 23:52:10 +03002640
2641.. code-block:: yaml
2642
2643 parameters:
2644 linux:
2645 system:
2646 netconsole:
2647 enabled: true
2648 port: 514 (optional)
2649 loglevel: debug (optional)
2650 target:
2651 192.168.0.1:
2652 interface: bond0
2653 mac: "ff:ff:ff:ff:ff:ff" (optional)
Ales Komareka634f4b2016-10-02 13:11:04 +02002654
Dzmitry Stremkouskid1a268b2018-10-03 16:36:04 +02002655Check network params on the environment
2656---------------------------------------
2657
2658Grab nics and nics states
2659
2660.. code-block:: bash
2661
2662 salt osd001\* net_checks.get_nics
2663
2664**Example of system output:**
2665
2666.. code-block:: bash
2667
2668 osd001.domain.com:
2669 |_
2670 - bond0
2671 - None
2672 - 1e:c8:64:42:23:b9
2673 - 0
2674 - 1500
2675 |_
2676 - bond1
2677 - None
2678 - 3c:fd:fe:27:3b:00
2679 - 1
2680 - 9100
2681 |_
2682 - fourty1
2683 - None
2684 - 3c:fd:fe:27:3b:00
2685 - 1
2686 - 9100
2687 |_
2688 - fourty2
2689 - None
2690 - 3c:fd:fe:27:3b:02
2691 - 1
2692 - 9100
2693
2694Grab 10G nics PCI addresses for hugepages setup
2695
2696.. code-block:: bash
2697
2698 salt cmp001\* net_checks.get_ten_pci
2699
2700**Example of system output:**
2701
2702.. code-block:: bash
2703
2704 cmp001.domain.com:
2705 |_
2706 - ten1
2707 - 0000:19:00.0
2708 |_
2709 - ten2
2710 - 0000:19:00.1
2711 |_
2712 - ten3
2713 - 0000:19:00.2
2714 |_
2715 - ten4
2716 - 0000:19:00.3
2717
2718Grab ip address for an interface
2719
2720.. code-block:: bash
2721
2722 salt cmp001\* net_checks.get_ip iface=one4
2723
2724**Example of system output:**
2725
2726.. code-block:: bash
2727
2728 cmp001.domain.com:
2729 10.200.177.101
2730
2731Grab ip addresses map
2732
2733.. code-block:: bash
2734
2735 salt-call net_checks.nodes_addresses
2736
2737**Example of system output:**
2738
2739.. code-block:: bash
2740
2741 local:
2742 |_
2743 - cid01.domain.com
2744 |_
2745 |_
2746 - pxe
2747 - 10.200.177.91
2748 |_
2749 - control
2750 - 10.200.178.91
2751 |_
2752 - cmn02.domain.com
2753 |_
2754 |_
2755 - storage_access
2756 - 10.200.181.67
2757 |_
2758 - pxe
2759 - 10.200.177.67
2760 |_
2761 - control
2762 - 10.200.178.67
2763 |_
2764 - cmp010.domain.com
2765 |_
2766 |_
2767 - pxe
2768 - 10.200.177.110
2769 |_
2770 - storage_access
2771 - 10.200.181.110
2772 |_
2773 - control
2774 - 10.200.178.110
2775 |_
2776 - vxlan
2777 - 10.200.179.110
2778
2779Verify full mesh connectivity
2780
2781.. code-block:: bash
2782
2783 salt-call net_checks.ping_check
2784
2785**Example of positive system output:**
2786
2787.. code-block:: bash
2788
2789 ['PASSED']
2790 [INFO ] ['PASSED']
2791 local:
2792 True
2793
2794**Example of system output in case of failure:**
2795
2796.. code-block:: bash
2797
2798 FAILED
2799 [ERROR ] FAILED
2800 ['control: 10.0.1.92 -> 10.0.1.224: Failed']
2801 ['control: 10.0.1.93 -> 10.0.1.224: Failed']
2802 ['control: 10.0.1.51 -> 10.0.1.224: Failed']
2803 ['control: 10.0.1.102 -> 10.0.1.224: Failed']
2804 ['control: 10.0.1.13 -> 10.0.1.224: Failed']
2805 ['control: 10.0.1.81 -> 10.0.1.224: Failed']
2806 local:
2807 False
2808
2809For this feature to work, please mark addresses with some role.
2810Otherwise 'default' role is assumed and mesh would consist of all
2811addresses on the environment.
2812
2813Mesh mark is needed only for interfaces which are enabled and have
2814ip address assigned.
2815
2816Checking dhcp pxe network meaningless, as it is used for salt
2817master vs minion communications, therefore treated as checked.
2818
2819.. code-block:: yaml
2820
2821 parameters:
2822 linux:
2823 network:
2824 interface:
2825 ens3:
2826 enabled: true
2827 type: eth
2828 proto: static
2829 address: ${_param:deploy_address}
2830 netmask: ${_param:deploy_network_netmask}
2831 gateway: ${_param:deploy_network_gateway}
2832 mesh: pxe
2833
2834Check pillars for ip address duplicates
2835
2836.. code-block:: bash
2837
2838 salt-call net_checks.verify_addresses
2839
2840**Example of positive system output:**
2841
2842.. code-block:: bash
2843
2844 ['PASSED']
2845 [INFO ] ['PASSED']
2846 local:
2847 True
2848
2849**Example of system output in case of failure:**
2850
2851.. code-block:: bash
2852
2853 FAILED. Duplicates found
2854 [ERROR ] FAILED. Duplicates found
2855 ['gtw01.domain.com', 'gtw02.domain.com', '10.0.1.224']
2856 [ERROR ] ['gtw01.domain.com', 'gtw02.domain.com', '10.0.1.224']
2857 local:
2858 False
2859
2860Generate csv report for the env
2861
2862.. code-block:: bash
2863
2864 salt -C 'kvm* or cmp* or osd*' net_checks.get_nics_csv \
2865 | grep '^\ ' | sed 's/\ *//g' | grep -Ev ^server \
2866 | sed '1 i\server,nic_name,ip_addr,mac_addr,link,mtu,chassis_id,chassis_name,port_mac,port_descr'
2867
2868**Example of system output:**
2869
2870.. code-block:: bash
2871
2872 server,nic_name,ip_addr,mac_addr,link,mtu,chassis_id,chassis_name,port_mac,port_descr
2873 cmp010.domain.com,bond0,None,b4:96:91:10:5b:3a,1,1500,,,,
2874 cmp010.domain.com,bond0.21,10.200.178.110,b4:96:91:10:5b:3a,1,1500,,,,
2875 cmp010.domain.com,bond0.22,10.200.179.110,b4:96:91:10:5b:3a,1,1500,,,,
2876 cmp010.domain.com,bond1,None,3c:fd:fe:34:ad:22,0,1500,,,,
2877 cmp010.domain.com,bond1.24,10.200.181.110,3c:fd:fe:34:ad:22,0,1500,,,,
2878 cmp010.domain.com,fourty5,None,3c:fd:fe:34:ad:20,0,9000,,,,
2879 cmp010.domain.com,fourty6,None,3c:fd:fe:34:ad:22,0,9000,,,,
2880 cmp010.domain.com,one1,None,b4:96:91:10:5b:38,0,1500,,,,
2881 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
2882 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
2883 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
2884 cmp011.domain.com,bond0,None,b4:96:91:13:6c:aa,1,1500,,,,
2885 cmp011.domain.com,bond0.21,10.200.178.111,b4:96:91:13:6c:aa,1,1500,,,,
2886 cmp011.domain.com,bond0.22,10.200.179.111,b4:96:91:13:6c:aa,1,1500,,,,
2887 ...
2888
Filip Pytlounf5383a42015-10-06 16:28:32 +02002889Usage
2890=====
2891
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002892Set MTU of the eth0 network interface to 1400:
Filip Pytlounf5383a42015-10-06 16:28:32 +02002893
2894.. code-block:: bash
2895
OlgaGusarenko2828f5f2018-07-30 19:37:05 +03002896 ip link set dev eth0 mtu 1400
Filip Pytlounf5383a42015-10-06 16:28:32 +02002897
Denis Egorenko4e45a702019-10-02 14:57:10 +04002898Switch Kernel from non-HWE to HWE
2899==================================
2900
2901It is possible to switch Kernel from non-HWE to HWE by using module
2902linux_kernel_switch. It has few methods:
2903
2904* check_hwe_kernel
2905* switch_kernel
2906* rollback_switch_kernel
2907
2908Method ``check_hwe_kernel`` allows to check whether HWE kernel installed
2909or not:
2910
2911.. code-block:: bash
2912
2913 salt <target> linux_kernel_switch.check_hwe_kernel
2914
2915Output for case HWE is installed:
2916
2917.. code-bloc:: bash
2918
2919 kvm02.cluster-env.local:
2920 ----------
2921 linux-image-extra-virtual-hwe-16.04:
2922 ----------
2923 linux-image-extra-virtual-hwe-16.04:
2924 ----------
2925 architecture:
2926 amd64
2927 description:
2928 Extra drivers for Virtual Linux kernel image
2929 This package will always depend on linux-image-generic.
2930 group:
2931 kernel
2932 install_date:
2933 2019-10-01T11:50:15Z
2934 name:
2935 linux-image-extra-virtual-hwe-16.04
2936 packager:
2937 Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
2938 source:
2939 linux-meta-hwe
2940 version:
2941 4.15.0.54.75
2942 ...
2943
2944Output for case HWE is not installed:
2945
2946.. code-bloc:: bash
2947
2948 kvm02.cluster-env.local:
2949 ----------
2950 linux-image-extra-virtual-hwe-16.04:
2951 Not installed!
2952 linux-image-generic-hwe-16.04:
2953 Not installed!
2954
2955Method ``switch_kernel`` allows you to switch from non-HWE to HWE. It has
2956two options: ``dry_run`` - to check what packages are going to be installed or
2957removed and ``only_kernel`` - install only Kernel image packages without other
2958HWE packages.
2959
2960Method ``rollback_switch_kernel`` allows you to rollback method
2961``switch_kernel`` which was executed successfully previously. Option
2962``dry_run`` - to check what packages are going to be installed/removed.
2963
Filip Pytlounf5383a42015-10-06 16:28:32 +02002964Read more
2965=========
2966
2967* https://www.archlinux.org/
2968* http://askubuntu.com/questions/175172/how-do-i-configure-proxies-in-ubuntu-server-or-minimal-cli-ubuntu