1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161 | %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
# See: http://www.zarb.org/~jasonc/macros.php
# Or: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets
# Or: http://www.rpm.org/max-rpm/ch-rpm-inside.html
Name: cloud-init
Version: 0.7.9+181.gff6eea3b
Release: 1%{?dist}
Summary: Cloud instance init scripts
Group: System Environment/Base
License: Dual-licesed GPLv3 or Apache 2.0
URL: http://launchpad.net/cloud-init
Source0: cloud-init-0.7.9-181-gff6eea3b.tar.gz
BuildArch: noarch
BuildRoot: %{_tmppath}
BuildRequires: python-devel
BuildRequires: python-setuptools
BuildRequires: python-cheetah
BuildRequires: python-jinja2
BuildRequires: python-prettytable
BuildRequires: python-oauthlib
BuildRequires: python-configobj
BuildRequires: PyYAML
BuildRequires: python-requests
BuildRequires: python-jsonpatch
BuildRequires: python-jsonschema
BuildRequires: python-six
# System util packages needed
%ifarch %{?ix86} x86_64 ia64
Requires: dmidecode
%endif
Requires: shadow-utils
Requires: rsyslog
Requires: iproute
Requires: e2fsprogs
Requires: net-tools
Requires: procps
Requires: shadow-utils
Requires: sudo >= 1.7.2p2-3
# Install pypi 'dynamic' requirements
Requires: python-jinja2
Requires: python-prettytable
Requires: python-oauthlib
Requires: python-configobj
Requires: PyYAML
Requires: python-requests
Requires: python-jsonpatch
Requires: python-jsonschema
Requires: python-six
# Custom patches
BuildRequires: systemd-units
Requires(post): systemd-units
Requires(postun): systemd-units
Requires(preun): systemd-units
%description
Cloud-init is a set of init scripts for cloud instances. Cloud instances
need special scripts to run during initialization to retrieve and install
ssh keys and to let the user run various scripts.
%prep
%setup -q -n cloud-init-0.7.9-181-gff6eea3b
# Custom patches activation
%build
%{__python} setup.py build
%install
%{__python} setup.py install -O1 \
--skip-build --root $RPM_BUILD_ROOT \
--init-system=systemd
# Note that /etc/rsyslog.d didn't exist by default until F15.
# el6 request: https://bugzilla.redhat.com/show_bug.cgi?id=740420
mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d
cp -p tools/21-cloudinit.conf \
$RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d/21-cloudinit.conf
# Remove the tests
rm -rf $RPM_BUILD_ROOT%{python_sitelib}/tests
# Required dirs...
mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/cloud
mkdir -p $RPM_BUILD_ROOT/%{_libexecdir}/%{name}
mkdir -p $RPM_BUILD_ROOT/%{_unitdir}
cp -p systemd/* $RPM_BUILD_ROOT/%{_unitdir}
%clean
rm -rf $RPM_BUILD_ROOT
%post
if [ $1 -eq 1 ]
then
/bin/systemctl enable cloud-config.service >/dev/null 2>&1 || :
/bin/systemctl enable cloud-final.service >/dev/null 2>&1 || :
/bin/systemctl enable cloud-init.service >/dev/null 2>&1 || :
/bin/systemctl enable cloud-init-local.service >/dev/null 2>&1 || :
fi
%preun
if [ $1 -eq 0 ]
then
/bin/systemctl --no-reload disable cloud-config.service >/dev/null 2>&1 || :
/bin/systemctl --no-reload disable cloud-final.service >/dev/null 2>&1 || :
/bin/systemctl --no-reload disable cloud-init.service >/dev/null 2>&1 || :
/bin/systemctl --no-reload disable cloud-init-local.service >/dev/null 2>&1 || :
fi
%postun
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
%files
/lib/udev/rules.d/66-azure-ephemeral.rules
/usr/lib/systemd/system-generators/cloud-init-generator
%{_unitdir}/cloud-*
%{_unitdir}/cloud-*
%{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager
%{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient
# Program binaries
%{_bindir}/cloud-init*
# Docs
%doc LICENSE ChangeLog TODO.rst requirements.txt
%doc %{_defaultdocdir}/cloud-init/*
# Configs
%config(noreplace) %{_sysconfdir}/cloud/cloud.cfg
%dir %{_sysconfdir}/cloud/cloud.cfg.d
%config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/*.cfg
%config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/README
%dir %{_sysconfdir}/cloud/templates
%config(noreplace) %{_sysconfdir}/cloud/templates/*
%config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf
%{_libexecdir}/%{name}
%dir %{_sharedstatedir}/cloud
# Python code is here...
%{python_sitelib}/*
|