diff --git a/README.en.md b/README.en.md index db8d7cd792954a74895afc6939a7d119dbb71c26..c37e42381d65873879a40f081f5c743beb87abc0 100644 --- a/README.en.md +++ b/README.en.md @@ -1,3 +1,36 @@ # openstack-ironic-inspector -OpenStack services are exclusively released in the openEuler LTS version. Please refer to other Multi-Version branches for the Spec source code. \ No newline at end of file +#### Description +Hardware introspection for OpenStack Bare Metal + +#### Software Architecture +Software architecture description + +#### Installation + +1. xxxx +2. xxxx +3. xxxx + +#### Instructions + +1. xxxx +2. xxxx +3. xxxx + +#### Contribution + +1. Fork the repository +2. Create Feat_xxx branch +3. Commit your code +4. Create Pull Request + + +#### Gitee Feature + +1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md +2. Gitee blog [blog.gitee.com](https://blog.gitee.com) +3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) +4. The most valuable open source project [GVP](https://gitee.com/gvp) +5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) +6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md index f403301e74a32b31f43394925b04efc153c14d1a..1953d7fb8bb6e9052c7d6c0de36d087b9ae9e24a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,37 @@ # openstack-ironic-inspector -openstack服务只在openEuler LTS版本发布,Spec源码请参考其他Multi-Version分支。 \ No newline at end of file +#### 介绍 +Hardware introspection for OpenStack Bare Metal + +#### 软件架构 +软件架构说明 + + +#### 安装教程 + +1. xxxx +2. xxxx +3. xxxx + +#### 使用说明 + +1. xxxx +2. xxxx +3. xxxx + +#### 参与贡献 + +1. Fork 本仓库 +2. 新建 Feat_xxx 分支 +3. 提交代码 +4. 新建 Pull Request + + +#### 特技 + +1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md +2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) +3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 +4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 +5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) +6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/dnsmasq.conf b/dnsmasq.conf new file mode 100644 index 0000000000000000000000000000000000000000..be1d83b5d21058ab3e4a1730e193c778528c2868 --- /dev/null +++ b/dnsmasq.conf @@ -0,0 +1,10 @@ +# This is the recommend minimum for using introspection +port=0 +bind-interfaces +enable-tftp + +# These values do not have reasonable defaults +#tftp-root=/tftpboot +#interface= +#dhcp-range= +#dhcp-boot= diff --git a/ironic-inspector-11.4.1.tar.gz b/ironic-inspector-11.4.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..2916f6fd7c0e8d89d19b26cbe51878218432ec4f Binary files /dev/null and b/ironic-inspector-11.4.1.tar.gz differ diff --git a/ironic-inspector-dist.conf b/ironic-inspector-dist.conf new file mode 100644 index 0000000000000000000000000000000000000000..8b906440bfc20d11f8a8a7e43c4072b286923f0b --- /dev/null +++ b/ironic-inspector-dist.conf @@ -0,0 +1,4 @@ +[DEFAULT] +log_dir = /var/log/ironic-inspector +state_path = /var/lib/ironic-inspector +use_stderr = False diff --git a/ironic-inspector-rootwrap-sudoers b/ironic-inspector-rootwrap-sudoers new file mode 100644 index 0000000000000000000000000000000000000000..e530832b2d4cb6082e569cf6fba66d50ce95dcc2 --- /dev/null +++ b/ironic-inspector-rootwrap-sudoers @@ -0,0 +1,2 @@ +Defaults:ironic-inspector !requiretty +ironic-inspector ALL=(root) NOPASSWD: /usr/bin/ironic-inspector-rootwrap /etc/ironic-inspector/rootwrap.conf * diff --git a/ironic-inspector.logrotate b/ironic-inspector.logrotate new file mode 100644 index 0000000000000000000000000000000000000000..51030e2ef355706ea2df4ddf5bd5f6b2294776e3 --- /dev/null +++ b/ironic-inspector.logrotate @@ -0,0 +1,7 @@ +/var/log/ironic-inspector/*.log { + rotate 14 + size 10M + missingok + compress + copytruncate +} diff --git a/openstack-ironic-inspector-conductor.service b/openstack-ironic-inspector-conductor.service new file mode 100644 index 0000000000000000000000000000000000000000..6a111bd7d431c9838ff2d8ce93c075405392c8f2 --- /dev/null +++ b/openstack-ironic-inspector-conductor.service @@ -0,0 +1,12 @@ +[Unit] +Description=Hardware introspection service for OpenStack Ironic - Conductor +After=network.target + +[Service] +ExecStart=/usr/bin/ironic-inspector-conductor --config-file /etc/ironic-inspector/inspector-dist.conf --config-file /etc/ironic-inspector/inspector.conf +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 0000000000000000000000000000000000000000..1339a08e5a368f781d514e2cbc173921b9af59d0 --- /dev/null +++ b/openstack-ironic-inspector-dnsmasq.service @@ -0,0 +1,11 @@ +[Unit] +Description=PXE boot dnsmasq service for Ironic Inspector +After=openvswitch.service 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.service b/openstack-ironic-inspector.service new file mode 100644 index 0000000000000000000000000000000000000000..89d14fd1a402bcccce1b93fa5fa258752099fc5d --- /dev/null +++ b/openstack-ironic-inspector.service @@ -0,0 +1,12 @@ +[Unit] +Description=Hardware introspection service for OpenStack Ironic +After=network.target + +[Service] +ExecStart=/usr/bin/ironic-inspector --config-file /etc/ironic-inspector/inspector-dist.conf --config-file /etc/ironic-inspector/inspector.conf +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 0000000000000000000000000000000000000000..e2f072b6359aa0b23a554dbf2969ffab38abd0ff --- /dev/null +++ b/openstack-ironic-inspector.spec @@ -0,0 +1,356 @@ +%global service ironic-inspector +%global modulename ironic_inspector +%{!?upstream_version: %global upstream_version %{version}} + +%global with_tests 1 + +Name: openstack-ironic-inspector +Summary: Hardware introspection service for OpenStack Ironic +Version: 11.4.1 +Release: 1 +License: ASL 2.0 +URL: https://launchpad.net/ironic-inspector + +Source0: https://tarballs.openstack.org/%{service}/%{service}-%{version}.tar.gz +Source1: openstack-ironic-inspector.service +Source2: openstack-ironic-inspector-dnsmasq.service +Source3: dnsmasq.conf +Source4: ironic-inspector-rootwrap-sudoers +Source5: ironic-inspector.logrotate +Source6: ironic-inspector-dist.conf +Source7: openstack-ironic-inspector-conductor.service + +BuildArch: noarch + +BuildRequires: git-core +BuildRequires: openstack-macros +BuildRequires: python3-devel +BuildRequires: python3-pbr +BuildRequires: python3-stestr +BuildRequires: systemd +# All these are required to run tests during check step +BuildRequires: python3-mock >= 3.0.5 +BuildRequires: python3-alembic +BuildRequires: python3-automaton +BuildRequires: python3-eventlet +BuildRequires: python3-fixtures +BuildRequires: python3-futurist +BuildRequires: python3-ironicclient +BuildRequires: python3-jsonschema +BuildRequires: python3-keystoneauth1 +BuildRequires: python3-keystonemiddleware +BuildRequires: python3-netaddr +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-six +BuildRequires: python3-sqlalchemy +BuildRequires: python3-stevedore +BuildRequires: python3-openstacksdk +BuildRequires: python3-testscenarios +BuildRequires: python3-testresources +BuildRequires: python3-tooz +BuildRequires: python3-construct +BuildRequires: python3-flask +BuildRequires: python3-ironic-lib +BuildRequires: python3-jsonpath-rw +BuildRequires: python3-retrying +BuildRequires: python3-pytz + +Requires: openstack-ironic-inspector-api +Requires: openstack-ironic-inspector-conductor +Requires: openstack-ironic-inspector-dnsmasq + +Provides: openstack-ironic-discoverd = %{upstream_version} + +%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 it’s 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: openstack-ironic-inspector-common = %{version}-%{release} +Requires: dnsmasq + +%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 it’s 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-common = %{version}-%{release} + +%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 it’s 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-common = %{version}-%{release} + +%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 it’s 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. + +%package -n openstack-ironic-inspector-common +Summary: Contains the common files required by the service + +Requires: python3-%{service} = %{version}-%{release} + +%description -n openstack-ironic-inspector-common +Contains the common files required by the service + +%package -n python3-%{service} +Summary: %{service} source code + +%{?systemd_requires} + +Requires: python3-alembic >= 1.4.2 +Requires: python3-automaton >= 1.9.0 +Requires: python3-construct >= 2.9.39 +Requires: python3-eventlet >= 0.26.0 +Requires: python3-flask >= 1.1.0 +Requires: python3-futurist >= 1.2.0 +Requires: python3-ironic-lib >= 4.3.0 +Requires: python3-jsonpath-rw >= 1.2.0 +Requires: python3-jsonschema >= 3.2.0 +Requires: python3-keystoneauth1 >= 4.2.0 +Requires: python3-keystonemiddleware >= 4.18.0 +Requires: python3-netaddr >= 0.7.18 +Requires: python3-openstacksdk >= 0.40.0 +Requires: python3-oslo-concurrency >= 3.26.0 +Requires: python3-oslo-config >= 6.8.0 +Requires: python3-oslo-context >= 2.19.2 +Requires: python3-oslo-db >= 6.0.0 +Requires: python3-oslo-i18n >= 3.15.3 +Requires: python3-oslo-log >= 3.36.0 +Requires: python3-oslo-messaging >= 5.32.0 +Requires: python3-oslo-middleware >= 3.31.0 +Requires: python3-oslo-policy >= 3.6.0 +Requires: python3-oslo-rootwrap >= 5.8.0 +Requires: python3-oslo-serialization >= 2.18.0 +Requires: python3-oslo-service >= 1.24.0 +Requires: python3-oslo-utils >= 4.5.0 +Requires: python3-pbr >= 2.0.0 +Requires: python3-pytz >= 2013.6 +Requires: python3-sqlalchemy >= 1.2.19 +Requires: python3-stevedore >= 1.20.0 +Requires: python3-tooz >= 2.5.1 +Requires: python3-tenacity >= 6.2.0 +Requires: python3-yaml >= 5.3.1 +Requires: python3-oslo-upgradecheck >= 1.2.0 + +%description -n python3-%{service} +It contains the project python source code + +%package -n python3-%{service}-tests +Summary: %{service} Unit Tests +%{?python_provide:%python_provide python2-%{service}-tests} + +Requires: python3-%{service} = %{version}-%{release} + +%description -n python3-%{service}-tests +It contains the unit tests + +%prep +%autosetup -v -p1 -n %{service}-%{upstream_version} +# Remove the requirements file so that pbr hooks don't add it +# to distutils requires_dist config +%py_req_cleanup + +%build +%{py3_build} + +%install +%{py3_install} + +mkdir -p %{buildroot}%{_mandir}/man8 +install -p -D -m 644 ironic-inspector.8 %{buildroot}%{_mandir}/man8/ + +# 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 %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-ironic-inspector + +# install systemd scripts +mkdir -p %{buildroot}%{_unitdir} +install -p -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir} +install -p -D -m 644 %{SOURCE2} %{buildroot}%{_unitdir} +install -p -D -m 644 %{SOURCE7} %{buildroot}%{_unitdir} + +# install sudoers file +mkdir -p %{buildroot}%{_sysconfdir}/sudoers.d +install -p -D -m 440 %{SOURCE4} %{buildroot}%{_sysconfdir}/sudoers.d/ironic-inspector + +# generate example configuration files +install -d -m 750 %{buildroot}%{_sysconfdir}/ironic-inspector +export PYTHONPATH=. +oslo-config-generator --config-file tools/config-generator.conf --output-file %{buildroot}/%{_sysconfdir}/ironic-inspector/inspector.conf +oslopolicy-sample-generator --config-file tools/policy-generator.conf --output-file %{buildroot}/%{_sysconfdir}/ironic-inspector/policy.json + +# configuration contains passwords, thus 640 +chmod 0640 %{buildroot}/%{_sysconfdir}/ironic-inspector/inspector.conf +install -p -D -m 640 %{SOURCE6} %{buildroot}/%{_sysconfdir}/ironic-inspector/inspector-dist.conf +install -p -D -m 644 %{SOURCE3} %{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/ + +# shared state directory +mkdir -p %{buildroot}%{_sharedstatedir}/ironic-inspector + +# shared state directory for the dnsmasq PXE filter and the dnsmasq service +mkdir -p %{buildroot}%{_sharedstatedir}/ironic-inspector/dhcp-hostsdir + + +%check +%if 0%{?with_tests} +PYTHON=%{__python3} stestr run --test-path ironic_inspector.test.unit +%endif + +%files +%doc README.rst +%license LICENSE +%doc %{_mandir}/man8/ironic-inspector.8.gz + +%files -n openstack-ironic-inspector-dnsmasq +%license LICENSE +%{_unitdir}/openstack-ironic-inspector-dnsmasq.service + +%files -n openstack-ironic-inspector-conductor +%license LICENSE +%{_bindir}/ironic-inspector-conductor +%{_unitdir}/openstack-ironic-inspector-conductor.service + +%files -n openstack-ironic-inspector-api +%license LICENSE +%{_bindir}/ironic-inspector-api-wsgi + +%files -n openstack-ironic-inspector-common +%license LICENSE +%config(noreplace) %attr(-,root,ironic-inspector) %{_sysconfdir}/ironic-inspector +%config(noreplace) %{_sysconfdir}/logrotate.d/openstack-ironic-inspector +%{_sysconfdir}/sudoers.d/ironic-inspector +%{_bindir}/ironic-inspector +%{_bindir}/ironic-inspector-rootwrap +%{_bindir}/ironic-inspector-dbsync +%{_bindir}/ironic-inspector-status +%{_bindir}/ironic-inspector-migrate-data +%{_unitdir}/openstack-ironic-inspector.service +%attr(-,ironic-inspector,ironic-inspector) %{_sharedstatedir}/ironic-inspector +%attr(-,ironic-inspector,ironic-inspector) %{_sharedstatedir}/ironic-inspector/dhcp-hostsdir +%attr(-,ironic-inspector,ironic-inspector) %{_localstatedir}/log/ironic-inspector +%attr(-,ironic-inspector,ironic-inspector) %{_localstatedir}/log/ironic-inspector/ramdisk/ + +%files -n python3-%{service} +%license LICENSE +%{python3_sitelib}/%{modulename} +%{python3_sitelib}/%{modulename}-*.egg-info +%exclude %{python3_sitelib}/%{modulename}/test +%exclude %{python3_sitelib}/%{modulename}_tests.egg-info + +%files -n python3-%{service}-tests +%license LICENSE +%{python3_sitelib}/%{modulename}/test + +%pre common +getent group ironic-inspector >/dev/null || groupadd -r ironic-inspector +getent passwd ironic-inspector >/dev/null || \ + useradd -r -g ironic-inspector -d %{_sharedstatedir}/ironic-inspector -s /sbin/nologin \ +-c "OpenStack Ironic Inspector Daemons" ironic-inspector +exit 0 + +%post +%systemd_post openstack-ironic-inspector.service + +%post -n openstack-ironic-inspector-dnsmasq +%systemd_post openstack-ironic-inspector-dnsmasq.service + +%post -n openstack-ironic-inspector-conductor +%systemd_post openstack-ironic-inspector-conductor.service + +%preun +%systemd_preun openstack-ironic-inspector.service + +%preun -n openstack-ironic-inspector-dnsmasq +%systemd_preun openstack-ironic-inspector-dnsmasq.service + +%preun -n openstack-ironic-inspector-conductor +%systemd_preun openstack-ironic-inspector-conductor.service + +%postun +%systemd_postun_with_restart openstack-ironic-inspector.service + +%postun -n openstack-ironic-inspector-dnsmasq +%systemd_postun_with_restart openstack-ironic-inspector-dnsmasq.service + +%postun -n openstack-ironic-inspector-conductor +%systemd_postun_with_restart openstack-ironic-inspector-conductor.service + +%changelog +* Tue May 21 2024 OpenStack_SIG - 11.4.1-1 +- Upgrade package to version 11.4.1 + +* Thu Apr 18 2024 Dongxing Wang - 11.4.0-1 +- Upgrade with version 11.4.0 to support OpenStack-Antelope + +* Fri Aug 05 2022 OpenStack_SIG - 10.11.0-2 +- Fix the creation of user and group + +* Thu Jun 16 2022 OpenStack_SIG - 10.11.0-1 +- Upgrade version for openstack yoga + +* Mon Aug 23 2021 wangxiyuan - 10.6.0-2 +- Correct the package structure. + +* Mon Jul 26 2021 liksh 10.6.0-1 +- Update to 10.6.0 + +* Mon Mar 15 2021 joec88 - 10.5.0-3 +- Add inspector-dist.conf; Add config-file option to service + +* Thu Mar 11 2021 wangxiyuan - 10.5.0-2 +- Fix sudoers file parse error + +* Thu Feb 4 2021 wangxiyuan - 10.5.0-1 +- Package init + +