1#
2# spec file for package salt
3#
4# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
5#
6# All modifications and additions to the file contributed by third parties
7# remain the property of their copyright owners, unless otherwise agreed
8# upon. The license for this file, and modifications and additions to the
9# file, is the same license as for the pristine package itself (unless the
10# license for the pristine package is not an Open Source License, in which
11# case the license is the MIT License). An "Open Source License" is a
12# license that conforms to the Open Source Definition (Version 1.9)
13# published by the Open Source Initiative.
14
15# Please submit bugfixes or comments via http://bugs.opensuse.org/
16#
17
18
19%if 0%{?suse_version} > 1210
20%bcond_without systemd
21%else
22%bcond_with    systemd
23%endif
24%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
25%if 0%{?suse_version} > 1110
26%bcond_without bash_completion
27%bcond_without fish_completion
28%bcond_without zsh_completion
29%else
30%bcond_with    bash_completion
31%bcond_with    fish_completion
32%bcond_with    zsh_completion
33%endif
34%bcond_with    test
35%bcond_with    raet
36%bcond_without docs
37
38Name:           salt
39Version:        2015.8.1
40Release:        0
41Summary:        A parallel remote execution system
42License:        Apache-2.0
43Group:          System/Monitoring
44Url:            http://saltstack.org/
45Source0:        http://pypi.python.org/packages/source/s/%{name}/%{name}-%{version}.tar.gz
46Source1:        README.SUSE
47Source2:        salt-tmpfiles.d
48# PATCH-FIX-OPENSUSE use-forking-daemon.patch tserong@suse.com -- We don't have python-systemd, so notify can't work
49Patch1:         use-forking-daemon.patch
50# PATCH-OPENSUSE use-salt-user-for-master.patch -- Run salt master as dedicated salt user
51Patch2:         use-salt-user-for-master.patch
52BuildRoot:      %{_tmppath}/%{name}-%{version}-build
53BuildRequires:  logrotate
54BuildRequires:  python
55BuildRequires:  python-devel
56# requirements/base.txt
57BuildRequires:  python-Jinja2
58BuildRequires:  python-futures >= 2.0
59BuildRequires:  python-markupsafe
60BuildRequires:  python-msgpack-python > 0.3
61BuildRequires:  python-psutil
62BuildRequires:  python-requests >= 1.0.0
63BuildRequires:  python-tornado >= 4.2.1
64BuildRequires:  python-yaml
65# requirements/opt.txt (not all)
66# BuildRequires:  python-MySQL-python
67# BuildRequires:  python-timelib
68# BuildRequires:  python-gnupg
69# BuildRequires:  python-cherrypy >= 3.2.2
70%if %{with raet}
71# requirements/raet.txt
72BuildRequires:  python-libnacl >= 1.0.0
73BuildRequires:  python-ioflo >= 1.1.7
74BuildRequires:  python-raet >= 0.6.0
75%endif
76# requirements/zeromq.txt
77BuildRequires:  pycryptodomex >= 3.9.7
78BuildRequires:  python-pyzmq >= 2.2.0
79%if %{with test}
80# requirements/dev_python27.txt
81BuildRequires:  python-boto >= 2.32.1
82BuildRequires:  python-mock
83BuildRequires:  python-moto >= 0.3.6
84BuildRequires:  python-pip
85BuildRequires:  python-salt-testing >= 2015.2.16
86BuildRequires:  python-unittest2
87BuildRequires:  python-xml
88%endif
89%if %{with docs}
90#for docs
91BuildRequires:  python-sphinx
92%endif
93
94Requires(pre):  %{_sbindir}/groupadd
95Requires(pre):  %{_sbindir}/useradd
96%if 0%{?suse_version}
97Requires(pre):  %fillup_prereq
98Requires(pre):  pwdutils
99%endif
100Requires:       logrotate
101Requires:       python
102#
103%if ! 0%{?suse_version} > 1110
104Requires:       python-certifi
105%endif
106# requirements/base.txt
107Requires:       python-Jinja2
108Requires:       python-futures >= 2.0
109Requires:       python-markupsafe
110Requires:       python-msgpack-python > 0.3
111Requires:       python-psutil
112Requires:       python-requests >= 1.0.0
113Requires:       python-tornado >= 4.2.1
114Requires:       python-yaml
115%if 0%{?suse_version}
116# requirements/opt.txt (not all)
117Recommends:     python-MySQL-python
118Recommends:     python-timelib
119Recommends:     python-gnupg
120# requirements/raet.txt
121# Recommends:     salt-raet
122# requirements/zeromq.txt
123%endif
124Requires:       pycryptodomex >= 3.9.7
125Requires:       python-pyzmq >= 2.2.0
126#
127%if 0%{?suse_version}
128# python-xml is part of python-base in all rhel versions
129Requires:       python-xml
130Recommends:     python-Mako
131Recommends:     python-netaddr
132%endif
133
134%if %{with systemd}
135BuildRequires:  systemd
136%{?systemd_requires}
137%else
138%if 0%{?suse_version}
139Requires(pre): %insserv_prereq
140%endif
141%endif
142
143%if %{with fish_completion}
144%define fish_dir %{_datadir}/fish/
145%define fish_completions_dir %{_datadir}/fish/completions/
146%endif
147
148%if %{with bash_completion}
149%if 0%{?suse_version} >= 1140
150BuildRequires:  bash-completion
151%else
152BuildRequires:  bash
153%endif
154%endif
155
156%if %{with zsh_completion}
157BuildRequires:  zsh
158%endif
159
160%description
161Salt is a distributed remote execution system used to execute commands and
162query data. It was developed in order to bring the best solutions found in
163the world of remote execution together and make them better, faster and more
164malleable. Salt accomplishes this via its ability to handle larger loads of
165information, and not just dozens, but hundreds or even thousands of individual
166servers, handle them quickly and through a simple and manageable interface.
167
168%package api
169Summary:        The api for Salt a parallel remote execution system
170Group:          System/Monitoring
171Requires:       %{name} = %{version}
172Requires:       %{name}-master = %{version}
173Requires:       python-CherryPy >= 3.2.2
174
175%description api
176salt-api is a modular interface on top of Salt that can provide a variety of entry points into a running Salt system.
177
178%package cloud
179Summary:        Generic cloud provisioning tool for Saltstack
180Group:          System/Monitoring
181Requires:       %{name} = %{version}
182Requires:       %{name}-master = %{version}
183Requires:       python-apache-libcloud
184%if 0%{?suse_version}
185Recommends:     python-botocore
186Recommends:     python-netaddr
187%endif
188
189%description cloud
190public cloud VM management system
191provision virtual machines on various public clouds via a cleanly
192controlled profile and mapping system.
193
194%if %{with docs}
195%package doc
196Summary:        Documentation for salt, a parallel remote execution system
197Group:          Documentation/HTML
198Requires:       %{name} = %{version}
199
200%description doc
201This contains the documentation of salt, it is an offline version of https://docs.saltproject.io.
202%endif
203
204%package master
205Summary:        The management component of Saltstack both protocols zmq and raet supported
206Group:          System/Monitoring
207Requires:       %{name} = %{version}
208%if 0%{?suse_version}
209Recommends:     python-pygit2 >= 0.20.3
210%endif
211%ifarch %{ix86} x86_64
212%if 0%{?suse_version}
213Requires:       dmidecode
214%endif
215%endif
216%if %{with systemd}
217%{?systemd_requires}
218%else
219%if 0%{?suse_version}
220Requires(pre):  %insserv_prereq
221%endif
222%endif
223%if 0%{?suse_version}
224Requires(pre):  %fillup_prereq
225%endif
226
227%description master
228The Salt master is the central server to which all minions connect.
229Enabled commands to remote systems to be called in parallel rather
230than serially.
231
232%package minion
233Summary:        The client component for Saltstack
234Group:          System/Monitoring
235Requires:       %{name} = %{version}
236%if %{with systemd}
237%{?systemd_requires}
238%else
239%if 0%{?suse_version}
240Requires(pre):  %insserv_prereq
241%endif
242%endif
243%if 0%{?suse_version}
244Requires(pre):  %fillup_prereq
245%endif
246
247%description minion
248Salt minion is queried and controlled from the master.
249Listens to the salt master and execute the commands.
250
251%package raet
252Summary:        Raet Support for Saltstack
253Group:          System/Monitoring
254Requires:       %{name} = %{version}
255Requires:       python-enum34
256Requires:       python-ioflo >= 1.1.7
257Requires:       python-libnacl >= 1.0.0
258Requires:       python-raet >= 0.6.0
259
260%description raet
261The Reliable Asynchronous Event Transport, or RAET, is an alternative transport
262medium developed specifically with Salt in mind. It has been developed to allow
263queuing to happen up on the application layer and comes with socket layer
264encryption. It also abstracts a great deal of control over the socket layer and
265makes it easy to bubble up errors and exceptions.
266
267RAET also offers very powerful message routing capabilities, allowing for
268messages to be routed between processes on a single machine all the way up to
269processes on multiple machines. Messages can also be restricted, allowing
270processes to be sent messages of specific types from specific sources allowing
271for trust to be established.
272
273%package proxy
274Summary:        Component for salt that enables controlling arbitrary devices
275Group:          System/Monitoring
276Requires:       %{name} = %{version}
277%if %{with systemd}
278%{?systemd_requires}
279%else
280%if 0%{?suse_version}
281Requires(pre):  %insserv_prereq
282%endif
283%endif
284%if 0%{?suse_version}
285Requires(pre):  %fillup_prereq
286%endif
287
288%description proxy
289Proxy minions are a developing Salt feature that enables controlling devices that,
290for whatever reason, cannot run a standard salt-minion.
291Examples include network gear that has an API but runs a proprietary OS,
292devices with limited CPU or memory, or devices that could run a minion, but for
293security reasons, will not.
294
295
296%package syndic
297Summary:        The syndic component for saltstack
298Group:          System/Monitoring
299Requires:       %{name} = %{version}
300Requires:       %{name}-master = %{version}
301%if %{with systemd}
302%{?systemd_requires}
303%else
304%if 0%{?suse_version}
305Requires(pre):  %insserv_prereq
306%endif
307%endif
308%if 0%{?suse_version}
309Requires(pre):  %fillup_prereq
310%endif
311
312%description syndic
313Salt syndic is the master-of-masters for salt
314The master of masters for salt-- it enables
315the management of multiple masters at a time..
316
317%package ssh
318Summary:        Management component for Saltstack with ssh protocol
319Group:          System/Monitoring
320Requires:       %{name} = %{version}
321Requires:       %{name}-master = %{version}
322%if 0%{?suse_version}
323Recommends:     sshpass
324%endif
325%if %{with systemd}
326%{?systemd_requires}
327%else
328%if 0%{?suse_version}
329Requires(pre):  %insserv_prereq
330%endif
331%endif
332%if 0%{?suse_version}
333Requires(pre):  %fillup_prereq
334%endif
335
336%description ssh
337Salt ssh is a master running without zmq.
338it enables the management of minions over a ssh connection.
339
340%if %{with bash_completion}
341%package bash-completion
342Summary:        Bash Completion for %{name}
343Group:          System/Management
344Requires:       %{name} = %{version}
345Requires:       bash-completion
346%if 0%{?suse_version} > 1110
347BuildArch:      noarch
348%endif
349
350%description bash-completion
351Bash command line completion support for %{name}.
352
353%endif
354
355%if %{with fish_completion}
356%package fish-completion
357Summary:        Fish Completion for %{name}
358Group:          System/Management
359Requires:       %{name} = %{version}
360
361%if 0%{?suse_version} > 1110
362BuildArch:      noarch
363%endif
364
365%description fish-completion
366Fish command line completion support for %{name}.
367%endif
368
369%if %{with zsh_completion}
370%package zsh-completion
371Summary:        Zsh Completion for %{name}
372Group:          System/Management
373Requires:       %{name} = %{version}
374Requires:       zsh
375%if 0%{?suse_version} > 1110
376BuildArch:      noarch
377%endif
378
379%description zsh-completion
380Zsh command line completion support for %{name}.
381
382%endif
383
384%prep
385%setup -q -n salt-%{version}
386cp %{S:1} .
387%patch1 -p1
388%patch2 -p1
389
390%build
391python setup.py --salt-transport=both build
392
393%if %{with docs}
394## documentation
395cd doc && make html && rm _build/html/.buildinfo && rm _build/html/_images/proxy_minions.png && cd _build/html && chmod -R -x+X *
396%endif
397
398%install
399python setup.py --salt-transport=both install --prefix=%{_prefix} --root=%{buildroot}
400## create missing directories
401install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/master.d
402install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/minion.d
403install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/cloud.maps.d
404install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/cloud.profiles.d
405install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/cloud.providers.d
406install -Dd -m 0750 %{buildroot}%{_localstatedir}/log/salt
407install -Dd -m 0755 %{buildroot}%{_sysconfdir}/logrotate.d/
408install -Dd -m 0755 %{buildroot}%{_sbindir}
409install -Dd -m 0750 %{buildroot}%{_localstatedir}/log/salt
410install -Dd -m 0750 %{buildroot}%{_localstatedir}/cache/salt/minion/extmod
411install -Dd -m 0750 %{buildroot}%{_localstatedir}/cache/salt/master
412install -Dd -m 0750 %{buildroot}%{_localstatedir}/cache/salt/master/jobs
413install -Dd -m 0750 %{buildroot}%{_localstatedir}/cache/salt/master/proc
414install -Dd -m 0750 %{buildroot}%{_localstatedir}/cache/salt/master/queues
415install -Dd -m 0750 %{buildroot}%{_localstatedir}/cache/salt/master/roots
416install -Dd -m 0750 %{buildroot}%{_localstatedir}/cache/salt/master/syndics
417install -Dd -m 0750 %{buildroot}%{_localstatedir}/cache/salt/master/tokens
418install -Dd -m 0750 %{buildroot}/srv/salt
419install -Dd -m 0750 %{buildroot}/srv/pillar
420install -Dd -m 0750 %{buildroot}/srv/spm
421install -Dd -m 0755 %{buildroot}%{_docdir}/salt
422install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/
423install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/cloud.maps.d
424install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/cloud.profiles.d
425install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/cloud.providers.d
426install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/master.d
427install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/minion.d
428install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/pki
429install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/pki/master
430install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/pki/master/minions
431install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/pki/master/minions_autosign
432install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/pki/master/minions_denied
433install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/pki/master/minions_pre
434install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/pki/master/minions_rejected
435install -Dd -m 0750 %{buildroot}%{_sysconfdir}/salt/pki/minion
436
437## install init and systemd scripts
438%if %{with systemd}
439install -Dpm 0644 pkg/salt-master.service %{buildroot}%{_unitdir}/salt-master.service
440install -Dpm 0644 pkg/salt-minion.service %{buildroot}%{_unitdir}/salt-minion.service
441install -Dpm 0644 pkg/salt-syndic.service %{buildroot}%{_unitdir}/salt-syndic.service
442install -Dpm 0644 pkg/salt-api.service    %{buildroot}%{_unitdir}/salt-api.service
443ln -s service %{buildroot}%{_sbindir}/rcsalt-master
444ln -s service %{buildroot}%{_sbindir}/rcsalt-syndic
445ln -s service %{buildroot}%{_sbindir}/rcsalt-minion
446ln -s service %{buildroot}%{_sbindir}/rcsalt-api
447install -Dpm 644 %{S:2}                   %{buildroot}/usr/lib/tmpfiles.d/salt.conf
448%else
449mkdir -p %{buildroot}%{_initddir}
450## install init scripts
451install -Dpm 0755 pkg/suse/salt-master %{buildroot}%{_initddir}/salt-master
452install -Dpm 0755 pkg/suse/salt-syndic %{buildroot}%{_initddir}/salt-syndic
453install -Dpm 0755 pkg/suse/salt-minion %{buildroot}%{_initddir}/salt-minion
454install -Dpm 0755 pkg/suse/salt-api %{buildroot}%{_initddir}/salt-api
455ln -sf %{_initddir}/salt-master %{buildroot}%{_sbindir}/rcsalt-master
456ln -sf %{_initddir}/salt-syndic %{buildroot}%{_sbindir}/rcsalt-syndic
457ln -sf %{_initddir}/salt-minion %{buildroot}%{_sbindir}/rcsalt-minion
458ln -sf %{_initddir}/salt-api %{buildroot}%{_sbindir}/rcsalt-api
459%endif
460
461#
462## install config files
463install -Dpm 0640 conf/minion %{buildroot}%{_sysconfdir}/salt/minion
464install -Dpm 0640 /dev/null   %{buildroot}%{_sysconfdir}/salt/minion_id
465install -Dpm 0640 conf/master %{buildroot}%{_sysconfdir}/salt/master
466install -Dpm 0640 conf/roster %{buildroot}%{_sysconfdir}/salt/roster
467install -Dpm 0640 conf/cloud %{buildroot}%{_sysconfdir}/salt/cloud
468install -Dpm 0640 conf/cloud.profiles %{buildroot}%{_sysconfdir}/salt/cloud.profiles
469install -Dpm 0640 conf/cloud.providers %{buildroot}%{_sysconfdir}/salt/cloud.providers
470#
471## install logrotate file
472install -Dpm 0644  pkg/salt-common.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/salt
473#
474## install SuSEfirewall2 rules
475install -Dpm 0644  pkg/suse/salt.SuSEfirewall2 %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/salt
476#
477## install completion scripts
478%if %{with bash_completion}
479install -Dpm 0644 pkg/salt.bash %{buildroot}%{_sysconfdir}/bash_completion.d/salt
480%endif
481%if %{with zsh_completion}
482install -Dpm 0644 pkg/salt.zsh %{buildroot}%{_sysconfdir}/zsh_completion.d/salt
483%endif
484
485%if %{with fish_completion}
486mkdir -p %{buildroot}%{fish_completions_dir}
487install -Dpm 0644 pkg/fish-completions/* %{buildroot}%{fish_completions_dir}
488%endif
489
490# raet transport config
491echo "transport: raet" > %{buildroot}%{_sysconfdir}/salt/master.d/transport-raet.conf
492echo "transport: raet" > %{buildroot}%{_sysconfdir}/salt/minion.d/transport-raet.conf
493
494%check
495%if %{with test}
496python setup.py test --runtests-opts=-u
497%endif
498
499%pre
500getent group salt >/dev/null || %{_sbindir}/groupadd -r salt
501getent passwd salt >/dev/null || %{_sbindir}/useradd -r -g salt -d /srv/salt -s /bin/false -c "salt-master daemon" salt
502
503%if %{with systemd}
504%post
505systemd-tmpfiles --create /usr/lib/tmpfiles.d/salt.conf || true
506%endif
507
508%preun syndic
509%if %{with systemd}
510%service_del_preun salt-syndic.service
511%else
512%if 0%{?suse_version}
513%stop_on_removal salt-syndic
514%else
515  if [ $1 -eq 0 ] ; then
516      /sbin/service salt-syndic stop >/dev/null 2>&1
517      /sbin/chkconfig --del salt-syndic
518  fi
519%endif
520%endif
521
522%pre syndic
523%if %{with systemd}
524%service_add_pre salt-syndic.service
525%endif
526
527%post syndic
528%if %{with systemd}
529%service_add_post salt-syndic.service
530%fillup_only
531%else
532%if 0%{?suse_version}
533%fillup_and_insserv
534%endif
535%endif
536
537%postun syndic
538%if %{with systemd}
539%service_del_postun salt-syndic.service
540%else
541%if 0%{?suse_version}
542%insserv_cleanup
543%restart_on_update salt-syndic
544%endif
545%endif
546
547%preun master
548%if %{with systemd}
549%service_del_preun salt-master.service
550%else
551%if 0%{?suse_version}
552%stop_on_removal salt-master
553%else
554  if [ $1 -eq 0 ] ; then
555      /sbin/service salt-master stop >/dev/null 2>&1
556      /sbin/chkconfig --del salt-master
557  fi
558%endif
559%endif
560
561%pre master
562%if %{with systemd}
563%service_add_pre salt-master.service
564%endif
565
566%post master
567%if %{with systemd}
568%service_add_post salt-master.service
569%fillup_only
570%else
571%if 0%{?suse_version}
572%fillup_and_insserv
573%else
574  /sbin/chkconfig --add salt-master
575%endif
576%endif
577
578%postun master
579%if %{with systemd}
580%service_del_postun salt-master.service
581%else
582%if 0%{?suse_version}
583%restart_on_update salt-master
584%insserv_cleanup
585%else
586  if [ "$1" -ge "1" ] ; then
587      /sbin/service salt-master condrestart >/dev/null 2>&1 || :
588  fi
589%endif
590%endif
591
592%preun minion
593%if %{with systemd}
594%service_del_preun salt-minion.service
595%else
596%if 0%{?suse_version}
597%stop_on_removal salt-minion
598%else
599  if [ $1 -eq 0 ] ; then
600      /sbin/service salt-minion stop >/dev/null 2>&1
601      /sbin/chkconfig --del salt-minion
602  fi
603%endif
604%endif
605
606%pre minion
607%if %{with systemd}
608%service_add_pre salt-minion.service
609%endif
610
611%post minion
612%if %{with systemd}
613%service_add_post salt-minion.service
614%fillup_only
615%else
616%if 0%{?suse_version}
617%fillup_and_insserv
618%else
619  /sbin/chkconfig --add salt-minion
620%endif
621%endif
622
623%postun minion
624%if %{with systemd}
625%service_del_postun salt-minion.service
626%else
627%if 0%{?suse_version}
628%insserv_cleanup
629%restart_on_update salt-minion
630%else
631  if [ "$1" -ge "1" ] ; then
632      /sbin/service salt-minion condrestart >/dev/null 2>&1 || :
633  fi
634%endif
635%endif
636
637%preun api
638%if %{with systemd}
639%service_del_preun salt-api.service
640%else
641%stop_on_removal
642%endif
643
644%pre api
645%if %{with systemd}
646%service_add_pre salt-api.service
647%endif
648
649%post api
650%if %{with systemd}
651%service_add_post salt-api.service
652%else
653%if 0%{?suse_version}
654%fillup_and_insserv
655%endif
656%endif
657
658%postun api
659%if %{with systemd}
660%service_del_postun salt-api.service
661%else
662%if 0%{?suse_version}
663%insserv_cleanup
664%restart_on_update
665%endif
666%endif
667
668%files api
669%defattr(-,root,root)
670%{_bindir}/salt-api
671%{_sbindir}/rcsalt-api
672%if %{with systemd}
673%{_unitdir}/salt-api.service
674%else
675%{_initddir}/salt-api
676%endif
677%{_mandir}/man1/salt-api.1.*
678
679%files cloud
680%defattr(-,root,root)
681%{_bindir}/salt-cloud
682%dir               %attr(0750, root, salt) %{_sysconfdir}/salt/cloud.maps.d
683%dir               %attr(0750, root, salt) %{_sysconfdir}/salt/cloud.profiles.d
684%dir               %attr(0750, root, salt) %{_sysconfdir}/salt/cloud.providers.d
685%config(noreplace) %attr(0640, root, salt) %{_sysconfdir}/salt/cloud
686%config(noreplace) %attr(0640, root, salt) %{_sysconfdir}/salt/cloud.profiles
687%config(noreplace) %attr(0640, root, salt) %{_sysconfdir}/salt/cloud.providers
688%{_mandir}/man1/salt-cloud.1.*
689
690%files ssh
691%defattr(-,root,root)
692%{_bindir}/salt-ssh
693%{_mandir}/man1/salt-ssh.1.gz
694
695%files syndic
696%defattr(-,root,root)
697%{_bindir}/salt-syndic
698%{_mandir}/man1/salt-syndic.1.gz
699%{_sbindir}/rcsalt-syndic
700%if %{with systemd}
701%{_unitdir}/salt-syndic.service
702%else
703%{_initddir}/salt-syndic
704%endif
705
706%files minion
707%defattr(-,root,root)
708%{_bindir}/salt-minion
709%{_mandir}/man1/salt-minion.1.gz
710%config(noreplace) %attr(0640, root, root) %{_sysconfdir}/salt/minion
711%config(noreplace) %attr(0640, root, root) %ghost %{_sysconfdir}/salt/minion_id
712%dir               %attr(0750, root, root) %{_sysconfdir}/salt/minion.d/
713%dir               %attr(0750, root, root) %{_sysconfdir}/salt/pki/minion/
714%dir               %attr(0750, root, root) %{_localstatedir}/cache/salt/minion/
715%{_sbindir}/rcsalt-minion
716%if %{with systemd}
717%{_unitdir}/salt-minion.service
718%else
719%config(noreplace) %{_initddir}/salt-minion
720%endif
721
722%files proxy
723%defattr(-,root,root)
724%{_bindir}/salt-proxy
725%{_mandir}/man1/salt-proxy.1.gz
726
727%files master
728%defattr(-,root,root)
729%{_bindir}/salt
730%{_bindir}/salt-master
731%{_bindir}/salt-cp
732%{_bindir}/salt-key
733%{_bindir}/salt-run
734%{_mandir}/man1/salt-master.1.gz
735%{_mandir}/man1/salt-cp.1.gz
736%{_mandir}/man1/salt-key.1.gz
737%{_mandir}/man1/salt-run.1.gz
738%{_mandir}/man7/salt.7.gz
739%config(noreplace) %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/salt
740%{_sbindir}/rcsalt-master
741%if %{with systemd}
742%{_unitdir}/salt-master.service
743%else
744%config(noreplace) %{_initddir}/salt-master
745%endif
746#
747%config(noreplace) %attr(0640, root, salt) %{_sysconfdir}/salt/master
748%config(noreplace) %attr(0640, root, salt) %{_sysconfdir}/salt/roster
749%dir               %attr(0755, root, salt) %{_sysconfdir}/salt/master.d/
750%dir               %attr(0750, salt, salt) %{_sysconfdir}/salt/pki/master/
751%dir               %attr(0750, salt, salt) %{_sysconfdir}/salt/pki/master/minions/
752%dir               %attr(0750, salt, salt) %{_sysconfdir}/salt/pki/master/minions_autosign/
753%dir               %attr(0750, salt, salt) %{_sysconfdir}/salt/pki/master/minions_denied/
754%dir               %attr(0750, salt, salt) %{_sysconfdir}/salt/pki/master/minions_pre/
755%dir               %attr(0750, salt, salt) %{_sysconfdir}/salt/pki/master/minions_rejected/
756%dir               %attr(0755, root, salt) /srv/salt
757%dir               %attr(0755, root, salt) /srv/pillar
758%dir               %attr(0750, salt, salt) %{_localstatedir}/cache/salt/master/
759%dir               %attr(0750, salt, salt) %{_localstatedir}/cache/salt/master/jobs/
760%dir               %attr(0750, salt, salt) %{_localstatedir}/cache/salt/master/proc/
761%dir               %attr(0750, salt, salt) %{_localstatedir}/cache/salt/master/queues/
762%dir               %attr(0750, salt, salt) %{_localstatedir}/cache/salt/master/roots/
763%dir               %attr(0750, salt, salt) %{_localstatedir}/cache/salt/master/syndics/
764%dir               %attr(0750, salt, salt) %{_localstatedir}/cache/salt/master/tokens/
765
766%files raet
767%defattr(-,root,root,-)
768%config(noreplace) %attr(0640, root, salt) %{_sysconfdir}/salt/master.d/transport-raet.conf
769%config(noreplace) %attr(0640, root, root) %{_sysconfdir}/salt/minion.d/transport-raet.conf
770
771%files
772%defattr(-,root,root,-)
773%{_bindir}/spm
774%{_bindir}/salt-call
775%{_bindir}/salt-unity
776%{_mandir}/man1/salt-unity.1.gz
777%{_mandir}/man1/salt-call.1.gz
778%config(noreplace) %{_sysconfdir}/logrotate.d/salt
779%{python_sitelib}/*
780%exclude %{python_sitelib}/salt/cloud/deploy/*.sh
781%attr(755,root,root)%{python_sitelib}/salt/cloud/deploy/*.sh
782%doc LICENSE AUTHORS README.rst HACKING.rst README.SUSE
783#
784%dir %attr(0750, root, salt) %{_sysconfdir}/salt
785%dir %attr(0750, root, salt) %{_sysconfdir}/salt/pki
786%dir %attr(0750, salt, salt) %{_localstatedir}/log/salt
787%dir %attr(0750, root, salt) %{_localstatedir}/cache/salt
788%dir %attr(0750, root, salt) /srv/spm
789%if %{with systemd}
790/usr/lib/tmpfiles.d/salt.conf
791%endif
792
793%if %{with docs}
794%files doc
795%defattr(-,root,root)
796%doc doc/_build/html
797%endif
798
799%if %{with bash_completion}
800%files bash-completion
801%defattr(-,root,root)
802%dir %{_sysconfdir}/bash_completion.d/
803%config %{_sysconfdir}/bash_completion.d/%{name}
804%endif
805
806%if %{with zsh_completion}
807%files zsh-completion
808%defattr(-,root,root)
809%dir %{_sysconfdir}/zsh_completion.d/
810%config %{_sysconfdir}/zsh_completion.d/%{name}
811%endif
812
813%if %{with fish_completion}
814%files fish-completion
815%defattr(-,root,root)
816%{fish_completions_dir}/salt*
817%dir %{fish_completions_dir}
818%dir %{fish_dir}
819%endif
820
821%changelog
822