diff --git a/ironic-inspector-10.5.0.tar.gz b/ironic-inspector-10.5.0.tar.gz new file mode 100644 index 0000000..b6b708a Binary files /dev/null and b/ironic-inspector-10.5.0.tar.gz differ diff --git a/openstack-ironic-inspector-conductor.service b/openstack-ironic-inspector-conductor.service new file mode 100644 index 0000000..b478dcf --- /dev/null +++ b/openstack-ironic-inspector-conductor.service @@ -0,0 +1,12 @@ +[Unit] +Description=Hardware introspection service for OpenStack Ironic - Conductor +After=syslog.target network.target + +[Service] +ExecStart=/usr/bin/ironic-inspector-conductor +User=ironic-inspector +Restart=on-failure + +[Install] +WantedBy=multi-user.target +Alias=openstack-ironic-inspector-conductor.service diff --git a/openstack-ironic-inspector-dnsmasq.service b/openstack-ironic-inspector-dnsmasq.service new file mode 100644 index 0000000..f4e71aa --- /dev/null +++ b/openstack-ironic-inspector-dnsmasq.service @@ -0,0 +1,11 @@ +[Unit] +Description=PXE boot dnsmasq service for Ironic Inspector +After=openvswitch.service syslog.target network.target + +[Service] +Type=forking +ExecStart=/sbin/dnsmasq --conf-file=/etc/ironic-inspector/dnsmasq.conf + +[Install] +WantedBy=multi-user.target +Alias=openstack-ironic-inspector-dnsmasq.service diff --git a/openstack-ironic-inspector.defaultconf b/openstack-ironic-inspector.defaultconf new file mode 100644 index 0000000..5c59517 --- /dev/null +++ b/openstack-ironic-inspector.defaultconf @@ -0,0 +1,4 @@ +[DEFAULT] +log_dir = /var/log/ironic-inspector +state_path = /var/lib/ironic-inspector +use_stderr = True \ No newline at end of file diff --git a/openstack-ironic-inspector.dnsmasqconf b/openstack-ironic-inspector.dnsmasqconf new file mode 100644 index 0000000..cdb637f --- /dev/null +++ b/openstack-ironic-inspector.dnsmasqconf @@ -0,0 +1,3 @@ +port=0 +bind-interfaces +enable-tftp diff --git a/openstack-ironic-inspector.logrotate b/openstack-ironic-inspector.logrotate new file mode 100644 index 0000000..469535f --- /dev/null +++ b/openstack-ironic-inspector.logrotate @@ -0,0 +1,8 @@ +/var/log/ironic-inspector/*.log { + rotate 14 + size 10M + missingok + compress + copytruncate + su ironic-inspector ironic-inspector +} diff --git a/openstack-ironic-inspector.service b/openstack-ironic-inspector.service new file mode 100644 index 0000000..31c010e --- /dev/null +++ b/openstack-ironic-inspector.service @@ -0,0 +1,12 @@ +[Unit] +Description=Hardware introspection service for OpenStack Ironic +After=syslog.target network.target + +[Service] +ExecStart=/usr/bin/ironic-inspector +User=ironic-inspector +Restart=on-failure + +[Install] +WantedBy=multi-user.target +Alias=openstack-ironic-inspector.service diff --git a/openstack-ironic-inspector.spec b/openstack-ironic-inspector.spec new file mode 100644 index 0000000..72d23c0 --- /dev/null +++ b/openstack-ironic-inspector.spec @@ -0,0 +1,273 @@ +Name: openstack-ironic-inspector +Version: 10.5.0 +Release: 1 +Summary: Hardware introspection service for OpenStack Ironic +License: ASL 2.0 +URL: https://launchpad.net/ironic-inspector +Source0: ironic-inspector-10.5.0.tar.gz +Source1: openstack-ironic-inspector.sudoers +Source2: openstack-ironic-inspector.logrotate +Source3: openstack-ironic-inspector.defaultconf +Source4: openstack-ironic-inspector.dnsmasqconf +# systemd service files +Source5: openstack-ironic-inspector.service +Source6: openstack-ironic-inspector-dnsmasq.service +Source7: openstack-ironic-inspector-conductor.service + +BuildRequires: openstack-macros +BuildRequires: python3-flask +BuildRequires: python3-sqlalchemy +BuildRequires: python3-alembic +BuildRequires: python3-automaton +BuildRequires: python3-construct +BuildRequires: python3-devel +BuildRequires: python3-eventlet +BuildRequires: python3-fixtures +BuildRequires: python3-futurist +BuildRequires: python3-ironic-lib +BuildRequires: python3-ironicclient +BuildRequires: python3-jsonpath-rw +BuildRequires: python3-jsonschema +BuildRequires: python3-keystoneauth1 +BuildRequires: python3-keystonemiddleware +BuildRequires: python3-mock +BuildRequires: python3-netaddr +BuildRequires: python3-openstacksdk +BuildRequires: python3-oslo-concurrency +BuildRequires: python3-oslo-config +BuildRequires: python3-oslo-context +BuildRequires: python3-oslo-db +BuildRequires: python3-oslo-i18n +BuildRequires: python3-oslo-log +BuildRequires: python3-oslo-messaging +BuildRequires: python3-oslo-middleware +BuildRequires: python3-oslo-policy +BuildRequires: python3-oslo-serialization +BuildRequires: python3-oslo-utils +BuildRequires: python3-oslotest +BuildRequires: python3-pbr +BuildRequires: python3-pytz +BuildRequires: python3-retrying +BuildRequires: python3-stestr +BuildRequires: python3-stevedore +BuildRequires: python3-testscenarios +BuildRequires: python3-tooz +BuildRequires: sudo +BuildRequires: systemd + +Requires: logrotate +Requires: python3-ironic-inspector +Requires(post): systemd +Requires(postun): systemd +Requires(preun): systemd + +BuildArch: noarch + +%description +Ironic Inspector is an auxiliary service for discovering hardware properties +for a node managed by OpenStack Ironic. Hardware introspection or hardware +properties discovery is a process of getting hardware parameters required for +scheduling from a bare metal node, given its power management credentials +(e.g. IPMI address, user name and password). + +This package contains Python modules and an ironic-inspector service combining +API and conductor in one binary. + +%package -n python3-ironic-inspector +Summary: Hardware introspection service for OpenStack Ironic +Group: Development/Languages/Python +Requires: openstack-ironic-inspector-dnsmasq +Requires: python3-flask +Requires: python3-sqlalchemy +Requires: python3-alembic +Requires: python3-automaton +Requires: python3-construct +Requires: python3-eventlet +Requires: python3-futurist +Requires: python3-ironic-lib +Requires: python3-ironicclient +Requires: python3-jsonpath-rw +Requires: python3-jsonschema +Requires: python3-keystoneauth1 +Requires: python3-keystonemiddleware +Requires: python3-netaddr +Requires: python3-openstacksdk +Requires: python3-oslo-concurrency +Requires: python3-oslo-config +Requires: python3-oslo-context +Requires: python3-oslo-db +Requires: python3-oslo-i18n +Requires: python3-oslo-log +Requires: python3-oslo-messaging +Requires: python3-oslo-middleware +Requires: python3-oslo-policy +Requires: python3-oslo-rootwrap +Requires: python3-oslo-serialization +Requires: python3-oslo-service +Requires: python3-oslo-utils +Requires: python3-pbr +Requires: python3-pytz +Requires: python3-retrying +Requires: python3-stevedore +Requires: python3-tooz + +%description -n python3-ironic-inspector + +Ironic Inspector is an auxiliary service for discovering hardware properties +for a node managed by OpenStack Ironic. Hardware introspection or hardware +properties discovery is a process of getting hardware parameters required for +scheduling from a bare metal node, given its power management credentials +(e.g. IPMI address, user name and password). + +This package contains Python modules and an ironic-inspector service combining +API and conductor in one binary. + +%package -n openstack-ironic-inspector-dnsmasq +Summary: DHCP service for ironic-inspector using dnsmasq +Requires: dnsmasq +Requires: openstack-ironic-inspector + +%description -n openstack-ironic-inspector-dnsmasq +Ironic Inspector is an auxiliary service for discovering hardware properties +for a node managed by OpenStack Ironic. Hardware introspection or hardware +properties discovery is a process of getting hardware parameters required for +scheduling from a bare metal node, given its power management credentials +(e.g. IPMI address, user name and password). + +This package contains a dnsmasq service pre-configured for using with +ironic-inspector. + +%package -n openstack-ironic-inspector-conductor +Summary: Conductor service for Ironic Inspector +Requires: openstack-ironic-inspector + +%description -n openstack-ironic-inspector-conductor +Ironic Inspector is an auxiliary service for discovering hardware properties +for a node managed by OpenStack Ironic. Hardware introspection or hardware +properties discovery is a process of getting hardware parameters required for +scheduling from a bare metal node, given its power management credentials +(e.g. IPMI address, user name and password). + +This package contains an ironic-inspector conductor service, which can be used +to split ironic-inspector into API and conductor processes. + +%package -n openstack-ironic-inspector-api +Summary: WSGI service service for Ironic Inspector +Requires: openstack-ironic-inspector + +%description -n openstack-ironic-inspector-api +Ironic Inspector is an auxiliary service for discovering hardware properties +for a node managed by OpenStack Ironic. Hardware introspection or hardware +properties discovery is a process of getting hardware parameters required for +scheduling from a bare metal node, given its power management credentials +(e.g. IPMI address, user name and password). + +This package contains an ironic-inspector WSGI service, which can be used +to split ironic-inspector into API and conductor processes. + +%prep +%autosetup -p1 -n ironic-inspector-10.5.0 +%py_req_cleanup + +%build +%{py3_build} + +%install +%{py3_install} + +# logs configuration +install -d -m 750 %{buildroot}%{_localstatedir}/log/ironic-inspector +install -d -m 750 %{buildroot}%{_localstatedir}/log/ironic-inspector/ramdisk +install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-ironic-inspector + +# install systemd scripts +mkdir -p %{buildroot}%{_unitdir} +install -p -D -m 644 %{SOURCE5} %{buildroot}%{_unitdir} +install -p -D -m 644 %{SOURCE6} %{buildroot}%{_unitdir} +install -p -D -m 644 %{SOURCE7} %{buildroot}%{_unitdir} + +# install sudoers file +mkdir -p %{buildroot}%{_sysconfdir}/sudoers.d +install -p -D -m 440 %{SOURCE1} %{buildroot}%{_sysconfdir}/sudoers.d/openstack-ironic-inspector + +# install configuration files +install -d -m 750 %{buildroot}%{_sysconfdir}/ironic-inspector +install -p -D -m 640 %{SOURCE3} %{buildroot}/%{_sysconfdir}/ironic-inspector/ironic-inspector.conf +install -p -D -m 640 %{SOURCE4} %{buildroot}/%{_sysconfdir}/ironic-inspector/dnsmasq.conf + +# rootwrap configuration +mkdir -p %{buildroot}%{_sysconfdir}/ironic-inspector/rootwrap.d +install -p -D -m 640 rootwrap.conf %{buildroot}/%{_sysconfdir}/ironic-inspector/rootwrap.conf +install -p -D -m 640 rootwrap.d/* %{buildroot}/%{_sysconfdir}/ironic-inspector/rootwrap.d/ + +%pre +%openstack_pre_user_group_create ironic-inspector ironic-inspector /sbin/nologin +exit 0 + +%post api +%systemd_post %{name}.service + +%preun api +%systemd_preun %{name}.service + +%postun api +%systemd_postun %{name}.service + +%post dnsmasq +%systemd_post %{name}-dnsmasq.service + +%preun dnsmasq +%systemd_preun %{name}-dnsmasq.service + +%postun dnsmasq +%systemd_postun %{name}-dnsmasq.service + +%post conductor +%systemd_post %{name}-conductor.service + +%preun conductor +%systemd_preun %{name}-conductor.service + +%postun conductor +%systemd_postun %{name}-conductor.service + + +%files +%doc README.rst +%license LICENSE +%dir %attr(0750, ironic-inspector, ironic-inspector) %{_localstatedir}/log/ironic-inspector +%dir %{_sysconfdir}/ironic-inspector +%config(noreplace) %{_sysconfdir}/logrotate.d/openstack-ironic-inspector +%config(noreplace) %{_sysconfdir}/sudoers.d/openstack-ironic-inspector +%config(noreplace) %attr(0640, root, ironic-inspector) %{_sysconfdir}/ironic-inspector/ironic-inspector.conf +%config(noreplace) %attr(0640, root, ironic-inspector) %{_sysconfdir}/ironic-inspector/dnsmasq.conf +%config %{_sysconfdir}/ironic-inspector/rootwrap.conf +%dir %{_sysconfdir}/ironic-inspector/rootwrap.d +%config(noreplace) %{_sysconfdir}/ironic-inspector/rootwrap.d/ironic-inspector.filters +%{_bindir}/ironic-inspector-rootwrap +%{_bindir}/ironic-inspector-dbsync +%{_bindir}/ironic-inspector-migrate-data + +%files -n python3-ironic-inspector +%license LICENSE +%{python3_sitelib}/ironic_inspector/ +%{python3_sitelib}/ironic_inspector*.egg-info + +%files dnsmasq +%license LICENSE +%{_unitdir}/%{name}-dnsmasq.service + +%files api +%license LICENSE +%{_unitdir}/%{name}.service +%{_bindir}/ironic-inspector +%{_bindir}/ironic-inspector-api-wsgi + +%files conductor +%license LICENSE +%{_unitdir}/%{name}-conductor.service +%{_bindir}/ironic-inspector-conductor + +%changelog +* Thu Feb 4 2021 wangxiyuan - 10.5.0-1 +- Package init diff --git a/openstack-ironic-inspector.sudoers b/openstack-ironic-inspector.sudoers new file mode 100644 index 0000000..0f22f41 --- /dev/null +++ b/openstack-ironic-inspector.sudoers @@ -0,0 +1,2 @@ +Defaults:ironic-inspector !requiretty +ironic-inspector ALL=(root) NOPASSWD: /usr/bin/ironic-inspector-rootwrap /etc/ironic-inspector/rootwrap.conf * \ No newline at end of file