!2 init package
From: @bitcoffee Reviewed-by: @t_feng Signed-off-by: @t_feng
This commit is contained in:
commit
d13b7ecc3e
36
README.en.md
36
README.en.md
@ -1,36 +0,0 @@
|
|||||||
# cobbler
|
|
||||||
|
|
||||||
#### Description
|
|
||||||
Cobbler is a Linux installation server that allow for rapid setup of network installation environments.
|
|
||||||
|
|
||||||
#### 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/)
|
|
||||||
37
README.md
37
README.md
@ -1,37 +0,0 @@
|
|||||||
# cobbler
|
|
||||||
|
|
||||||
#### 介绍
|
|
||||||
Cobbler is a Linux installation server that allow for rapid setup of network installation environments.
|
|
||||||
|
|
||||||
#### 软件架构
|
|
||||||
软件架构说明
|
|
||||||
|
|
||||||
|
|
||||||
#### 安装教程
|
|
||||||
|
|
||||||
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/)
|
|
||||||
BIN
cobbler-3.2.0.tar.gz
Normal file
BIN
cobbler-3.2.0.tar.gz
Normal file
Binary file not shown.
215
cobbler.spec
Normal file
215
cobbler.spec
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
%global tftpboot_dir %{_sharedstatedir}/tftpboot
|
||||||
|
%global apache_webconfigdir %{_sysconfdir}/httpd/conf.d
|
||||||
|
%global vendor_lower `echo %{_vendor}|tr 'A-Z' 'a-z'`
|
||||||
|
|
||||||
|
Name: cobbler
|
||||||
|
Version: 3.2.0
|
||||||
|
Release: 1
|
||||||
|
Summary: Boot server configurator
|
||||||
|
URL: https://cobbler.github.io/
|
||||||
|
License: GPLv2+
|
||||||
|
Source0: https://github.com/cobbler/cobbler/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
Patch9000: huawei-adapt-vendor.patch
|
||||||
|
Patch9001: huawei-repair-switch-condition-error.patch
|
||||||
|
Patch6000: fix-Give-root-RW-permissions-to-var-lib-cobbler-web.ss.patch
|
||||||
|
|
||||||
|
BuildRequires: system-release
|
||||||
|
BuildRequires: python%{python3_pkgversion}-devel
|
||||||
|
BuildRequires: python%{python3_pkgversion}-coverage
|
||||||
|
BuildRequires: python%{python3_pkgversion}-distro
|
||||||
|
BuildRequires: python%{python3_pkgversion}-future
|
||||||
|
BuildRequires: python%{python3_pkgversion}-setuptools
|
||||||
|
BuildRequires: python%{python3_pkgversion}-netaddr
|
||||||
|
BuildRequires: python%{python3_pkgversion}-cheetah
|
||||||
|
BuildRequires: python%{python3_pkgversion}-sphinx
|
||||||
|
BuildRequires: python%{python3_pkgversion}-yaml
|
||||||
|
BuildRequires: python%{python3_pkgversion}-simplejson
|
||||||
|
BuildRequires: python%{python3_pkgversion}-requests
|
||||||
|
BuildRequires: systemd
|
||||||
|
|
||||||
|
Requires(post): systemd
|
||||||
|
Requires(preun): systemd
|
||||||
|
Requires(postun): systemd
|
||||||
|
|
||||||
|
Requires: httpd
|
||||||
|
Requires: tftp-server
|
||||||
|
Requires: createrepo
|
||||||
|
Requires: file
|
||||||
|
Requires: rsync
|
||||||
|
Requires: xorriso
|
||||||
|
Requires: dnf-plugins-core
|
||||||
|
Requires: /sbin/service
|
||||||
|
Requires: python%{python3_pkgversion}-cheetah
|
||||||
|
Requires: python%{python3_pkgversion}-dns
|
||||||
|
Requires: python%{python3_pkgversion}-future
|
||||||
|
Requires: python%{python3_pkgversion}-mod_wsgi
|
||||||
|
Requires: python%{python3_pkgversion}-netaddr
|
||||||
|
Requires: python%{python3_pkgversion}-yaml
|
||||||
|
Requires: python%{python3_pkgversion}-requests
|
||||||
|
Requires: python%{python3_pkgversion}-simplejson
|
||||||
|
Requires: python%{python3_pkgversion}-tornado
|
||||||
|
Requires: python%{python3_pkgversion}-distro
|
||||||
|
Requires: python%{python3_pkgversion}-ldap3
|
||||||
|
Requires: genisoimage
|
||||||
|
|
||||||
|
Recommends: bash-completion
|
||||||
|
Recommends: syslinux
|
||||||
|
Recommends: grub2-efi-x64
|
||||||
|
Recommends: grub2-efi-aa64
|
||||||
|
Recommends: logrotate
|
||||||
|
|
||||||
|
Obsoletes: cobbler-nsupdate < 3.0.99
|
||||||
|
Provides: cobbler-nsupdate = %{version}-%{release}
|
||||||
|
|
||||||
|
%description
|
||||||
|
Cobbler is a network install server. Cobbler supports PXE, ISO virtualized installs, and re-installing existing Linux
|
||||||
|
machines. The last two modes use a helper tool, 'koan', that integrates with cobbler. Cobbler's advanced features
|
||||||
|
include importing distributions from DVDs and rsync mirrors, kickstart templating, integrated yum mirroring, and
|
||||||
|
built-in DHCP/DNS Management. Cobbler has a XML-RPC API for integration with other applications.
|
||||||
|
|
||||||
|
%package -n cobbler-web
|
||||||
|
Summary: Web interface for Cobbler
|
||||||
|
Requires: cobbler = %{version}-%{release}
|
||||||
|
Requires: python%{python3_pkgversion}-django
|
||||||
|
Requires: python%{python3_pkgversion}-mod_wsgi
|
||||||
|
Requires: mod_ssl
|
||||||
|
Requires(post): coreutils
|
||||||
|
Requires(post): sed
|
||||||
|
|
||||||
|
%description -n cobbler-web
|
||||||
|
Web interface for Cobbler that allows visiting
|
||||||
|
http://server/cobbler_web to configure the install server.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1
|
||||||
|
|
||||||
|
sed -i "s/generic_os/%{_vendor}/g" distro_build_configs.sh
|
||||||
|
sed -i "s/generic_os/%{_vendor}/g" config/cobbler/distro_signatures.json
|
||||||
|
sed -i "s/generic_lower_os/%{vendor_lower}/g" cobbler/actions/check.py
|
||||||
|
sed -i "s/generic_lower_os/%{vendor_lower}/g" cobbler/utils.py
|
||||||
|
sed -i "s/generic_lower_os/%{vendor_lower}/g" config/cobbler/distro_signatures.json
|
||||||
|
sed -i "s/generic_lower_os/%{vendor_lower}/g" cobbler/tftpgen.py
|
||||||
|
sed -i "s/generic_lower_os/%{vendor_lower}/g" cobbler/autoinstallgen.py
|
||||||
|
sed -i "s/generic_lower_os/%{vendor_lower}/g" cobbler/actions/buildiso.py
|
||||||
|
|
||||||
|
%build
|
||||||
|
. ./distro_build_configs.sh
|
||||||
|
|
||||||
|
# Check distro specific variables for consistency
|
||||||
|
[ "${DOCPATH}" != %{_mandir} ] && echo "ERROR: DOCPATH: ${DOCPATH} does not match %{_mandir}"
|
||||||
|
|
||||||
|
# [ "${ETCPATH}" != "/etc/cobbler" ]
|
||||||
|
# [ "${LIBPATH}" != "/var/lib/cobbler" ]
|
||||||
|
[ "${LOGPATH}" != %{_localstatedir}/log ] && echo "ERROR: LOGPATH: ${LOGPATH} does not match %{_localstatedir}/log"
|
||||||
|
[ "${COMPLETION_PATH}" != %{_datadir}/bash-completion/completions ] && \
|
||||||
|
echo "ERROR: COMPLETION: ${COMPLETION_PATH} does not match %{_datadir}/bash-completion/completions"
|
||||||
|
|
||||||
|
[ "${WEBROOT}" != %{apache_dir} ] && echo "ERROR: WEBROOT: ${WEBROOT} does not match %{apache_dir}"
|
||||||
|
[ "${WEBCONFIG}" != %{apache_webconfigdir} ] && echo "ERROR: WEBCONFIG: ${WEBCONFIG} does not match %{apache_webconfigdir}"
|
||||||
|
[ "${TFTPROOT}" != %{tftpboot_dir} ] && echo "ERROR: TFTPROOT: ${TFTPROOT} does not match %{tftpboot_dir}"
|
||||||
|
|
||||||
|
%py3_build
|
||||||
|
|
||||||
|
%install
|
||||||
|
. ./distro_build_configs.sh
|
||||||
|
%py3_install
|
||||||
|
|
||||||
|
# cobbler
|
||||||
|
rm %{buildroot}%{_sysconfdir}/cobbler/cobbler.conf
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
|
||||||
|
mv %{buildroot}%{_sysconfdir}/cobbler/cobblerd_rotate %{buildroot}%{_sysconfdir}/logrotate.d/cobblerd
|
||||||
|
|
||||||
|
# Create data directories in tftpboot_dir
|
||||||
|
mkdir -p %{buildroot}%{tftpboot_dir}/{boot,etc,grub/system{,_link},images{,2},ppc,pxelinux.cfg,s390x}
|
||||||
|
|
||||||
|
# systemd
|
||||||
|
mkdir -p %{buildroot}%{_unitdir}
|
||||||
|
mv %{buildroot}%{_sysconfdir}/cobbler/cobblerd.service %{buildroot}%{_unitdir}
|
||||||
|
|
||||||
|
# cobbler-web
|
||||||
|
rm %{buildroot}%{_sysconfdir}/cobbler/cobbler_web.conf
|
||||||
|
|
||||||
|
# ghosted files
|
||||||
|
touch %{buildroot}%{_sharedstatedir}/cobbler/web.ss
|
||||||
|
|
||||||
|
# rm test file
|
||||||
|
rm -rf %{buildroot}%{_datarootdir}/cobbler/tests
|
||||||
|
|
||||||
|
%pre
|
||||||
|
if [ $1 -ge 2 ]; then
|
||||||
|
# package upgrade: backup configuration
|
||||||
|
DATE=$(date "+%%Y%%m%%d-%%H%%M%%S")
|
||||||
|
if [ ! -d "%{_sharedstatedir}/cobbler/backup/upgrade-${DATE}" ]; then
|
||||||
|
mkdir -p "%{_sharedstatedir}/cobbler/backup/upgrade-${DATE}"
|
||||||
|
fi
|
||||||
|
for i in "config" "snippets" "templates" "triggers" "scripts"; do
|
||||||
|
if [ -d "%{_sharedstatedir}/cobbler/${i}" ]; then
|
||||||
|
cp -r "%{_sharedstatedir}/cobbler/${i}" "%{_sharedstatedir}/cobbler/backup/upgrade-${DATE}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -d %{_sysconfdir}/cobbler ]; then
|
||||||
|
cp -r %{_sysconfdir}/cobbler "%{_sharedstatedir}/cobbler/backup/upgrade-${DATE}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
%post
|
||||||
|
%systemd_post cobblerd.service
|
||||||
|
|
||||||
|
%preun
|
||||||
|
%systemd_preun cobblerd.service
|
||||||
|
|
||||||
|
%postun
|
||||||
|
%systemd_postun_with_restart cobblerd.service
|
||||||
|
|
||||||
|
%post -n cobbler-web
|
||||||
|
# Change the SECRET_KEY option in the Django settings.py file
|
||||||
|
# required for security reasons, should be unique on all systems
|
||||||
|
# Choose from letters and numbers only, so no special chars like ampersand (&).
|
||||||
|
RAND_SECRET=$(head /dev/urandom | tr -dc 'A-Za-z0-9!' | head -c 50; echo '')
|
||||||
|
sed -i -e "s/SECRET_KEY = ''/SECRET_KEY = \'$RAND_SECRET\'/" %{_datadir}/cobbler/web/settings.py
|
||||||
|
|
||||||
|
%files
|
||||||
|
%license COPYING
|
||||||
|
%doc AUTHORS.in README.md
|
||||||
|
%doc docs/developer-guide.rst docs/quickstart-guide.rst docs/installation-guide.rst
|
||||||
|
%config(noreplace) %{_sysconfdir}/cobbler
|
||||||
|
%config(noreplace) %{_sysconfdir}/logrotate.d/cobblerd
|
||||||
|
%config(noreplace) %{apache_webconfigdir}/cobbler.conf
|
||||||
|
%{_bindir}/cobbler
|
||||||
|
%{_bindir}/cobbler-ext-nodes
|
||||||
|
%{_bindir}/cobblerd
|
||||||
|
%{_sbindir}/tftpd.py
|
||||||
|
%{_sbindir}/fence_ipmitool
|
||||||
|
%{_datadir}/bash-completion/
|
||||||
|
%dir %{_datadir}/cobbler
|
||||||
|
%{_datadir}/cobbler/bin
|
||||||
|
%{_mandir}/man1/cobbler.1*
|
||||||
|
%{_mandir}/man5/cobbler.conf.5*
|
||||||
|
%{_mandir}/man8/cobblerd.8*
|
||||||
|
%{python3_sitelib}/cobbler/
|
||||||
|
%{python3_sitelib}/cobbler-*.egg-info
|
||||||
|
%{_unitdir}/cobblerd.service
|
||||||
|
%{tftpboot_dir}/*
|
||||||
|
/var/www/cobbler
|
||||||
|
%config(noreplace) %{_sharedstatedir}/cobbler
|
||||||
|
%exclude %{_sharedstatedir}/cobbler/web.ss
|
||||||
|
%exclude %{_sharedstatedir}/cobbler/webui_sessions
|
||||||
|
%{_localstatedir}/log/cobbler
|
||||||
|
|
||||||
|
%files -n cobbler-web
|
||||||
|
%license COPYING
|
||||||
|
%doc AUTHORS.in README.md
|
||||||
|
%config(noreplace) %{apache_webconfigdir}/cobbler_web.conf
|
||||||
|
%attr(-,apache,apache) %{_datadir}/cobbler/web
|
||||||
|
%ghost %attr(0660,apache,root) %{_sharedstatedir}/cobbler/web.ss
|
||||||
|
%dir %attr(700,apache,root) %{_sharedstatedir}/cobbler/webui_sessions
|
||||||
|
%attr(-,apache,apache) /var/www/cobbler_webui_content/
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Sat May 29 2021 liuxin <liuxin264@huawei.com> - 3.2.0 - 1
|
||||||
|
- Package init
|
||||||
|
|
||||||
|
|
||||||
4
cobbler.yaml
Normal file
4
cobbler.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
version_control: github
|
||||||
|
src_repo: cobbler/cobbler
|
||||||
|
tag_prefix: v
|
||||||
|
separator: .
|
||||||
25
fix-Give-root-RW-permissions-to-var-lib-cobbler-web.ss.patch
Normal file
25
fix-Give-root-RW-permissions-to-var-lib-cobbler-web.ss.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From d63ed9f9712bfbdc9b36e2f3dc94bc8bb4ba0a80 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Orion Poplawski <orion@nwra.com>
|
||||||
|
Date: Sun, 25 Oct 2020 11:43:25 -0600
|
||||||
|
Subject: [PATCH] Give root RW permissions to /var/lib/cobbler/web.ss
|
||||||
|
|
||||||
|
---
|
||||||
|
cobbler/cobblerd.py | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/cobbler/cobblerd.py b/cobbler/cobblerd.py
|
||||||
|
index fe1cf88..34aedf9 100644
|
||||||
|
--- a/cobbler/cobblerd.py
|
||||||
|
+++ b/cobbler/cobblerd.py
|
||||||
|
@@ -57,7 +57,7 @@ def regen_ss_file():
|
||||||
|
data = fd.read(512)
|
||||||
|
fd.close()
|
||||||
|
|
||||||
|
- fd = os.open(ssfile, os.O_CREAT | os.O_RDWR, 0o600)
|
||||||
|
+ fd = os.open(ssfile, os.O_CREAT | os.O_RDWR, 0o660)
|
||||||
|
os.write(fd, binascii.hexlify(data))
|
||||||
|
os.close(fd)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.30.0
|
||||||
|
|
||||||
287
huawei-adapt-vendor.patch
Normal file
287
huawei-adapt-vendor.patch
Normal file
@ -0,0 +1,287 @@
|
|||||||
|
From 39793327e0f859dc613f9ff69e3f91e6a7be086c Mon Sep 17 00:00:00 2001
|
||||||
|
From: bitcoffee <liuxin264@huawei.com>
|
||||||
|
Date: Tue, 29 Jun 2021 00:43:34 +0800
|
||||||
|
Subject: [PATCH] adapt vendor
|
||||||
|
|
||||||
|
---
|
||||||
|
cobbler/actions/buildiso.py | 22 ++++++++++-----------
|
||||||
|
cobbler/actions/check.py | 2 +-
|
||||||
|
cobbler/actions/reposync.py | 2 +-
|
||||||
|
cobbler/autoinstallgen.py | 2 +-
|
||||||
|
cobbler/tftpgen.py | 2 +-
|
||||||
|
cobbler/utils.py | 3 +++
|
||||||
|
config/cobbler/distro_signatures.json | 28 +++++++++++++++++++++++++++
|
||||||
|
distro_build_configs.sh | 5 ++++-
|
||||||
|
templates/etc/dhcp.template | 10 +++++-----
|
||||||
|
9 files changed, 55 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cobbler/actions/buildiso.py b/cobbler/actions/buildiso.py
|
||||||
|
index 9500086..be42749 100644
|
||||||
|
--- a/cobbler/actions/buildiso.py
|
||||||
|
+++ b/cobbler/actions/buildiso.py
|
||||||
|
@@ -228,7 +228,7 @@ class BuildIso(object):
|
||||||
|
else:
|
||||||
|
append_line += " autoyast=%s" % data["autoinstall"]
|
||||||
|
|
||||||
|
- if dist.breed == "redhat":
|
||||||
|
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
|
||||||
|
if "proxy" in data and data["proxy"] != "":
|
||||||
|
append_line += " proxy=%s http_proxy=%s" % (data["proxy"], data["proxy"])
|
||||||
|
append_line += " ks=%s" % data["autoinstall"]
|
||||||
|
@@ -278,7 +278,7 @@ class BuildIso(object):
|
||||||
|
else:
|
||||||
|
append_line += " autoyast=%s" % data["autoinstall"]
|
||||||
|
|
||||||
|
- if dist.breed == "redhat":
|
||||||
|
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
|
||||||
|
if "proxy" in data and data["proxy"] != "":
|
||||||
|
append_line += " proxy=%s http_proxy=%s" % (data["proxy"], data["proxy"])
|
||||||
|
append_line += " ks=%s" % data["autoinstall"]
|
||||||
|
@@ -314,7 +314,7 @@ class BuildIso(object):
|
||||||
|
my_mask = None
|
||||||
|
my_gw = None
|
||||||
|
my_dns = None
|
||||||
|
- if dist.breed in ["suse", "redhat"]:
|
||||||
|
+ if dist.breed in ["suse", "redhat", "generic_lower_os"]:
|
||||||
|
if "netmask" in data["kernel_options"] and data["kernel_options"]["netmask"] != "":
|
||||||
|
my_mask = data["kernel_options"]["netmask"]
|
||||||
|
del data["kernel_options"]["netmask"]
|
||||||
|
@@ -322,7 +322,7 @@ class BuildIso(object):
|
||||||
|
my_gw = data["kernel_options"]["gateway"]
|
||||||
|
del data["kernel_options"]["gateway"]
|
||||||
|
|
||||||
|
- if dist.breed == "redhat":
|
||||||
|
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
|
||||||
|
if "ksdevice" in data["kernel_options"] and data["kernel_options"]["ksdevice"] != "":
|
||||||
|
my_int = data["kernel_options"]["ksdevice"]
|
||||||
|
if my_int == "bootif":
|
||||||
|
@@ -424,7 +424,7 @@ class BuildIso(object):
|
||||||
|
append_line += " netdevice=%s" % data["mac_address_" + my_int].lower()
|
||||||
|
else:
|
||||||
|
append_line += " netdevice=%s" % my_int
|
||||||
|
- if dist.breed == "redhat":
|
||||||
|
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
|
||||||
|
if intmac in data and data[intmac] != "":
|
||||||
|
append_line += " ksdevice=%s" % data["mac_address_" + my_int]
|
||||||
|
else:
|
||||||
|
@@ -435,19 +435,19 @@ class BuildIso(object):
|
||||||
|
if my_ip is not None:
|
||||||
|
if dist.breed == "suse":
|
||||||
|
append_line += " hostip=%s" % my_ip
|
||||||
|
- if dist.breed == "redhat":
|
||||||
|
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
|
||||||
|
append_line += " ip=%s" % my_ip
|
||||||
|
if dist.breed in ["ubuntu", "debian"]:
|
||||||
|
append_line += " netcfg/get_ipaddress=%s" % my_ip
|
||||||
|
|
||||||
|
if my_mask is not None:
|
||||||
|
- if dist.breed in ["suse", "redhat"]:
|
||||||
|
+ if dist.breed in ["suse", "redhat", "generic_lower_os"]:
|
||||||
|
append_line += " netmask=%s" % my_mask
|
||||||
|
if dist.breed in ["ubuntu", "debian"]:
|
||||||
|
append_line += " netcfg/get_netmask=%s" % my_mask
|
||||||
|
|
||||||
|
if my_gw is not None:
|
||||||
|
- if dist.breed in ["suse", "redhat"]:
|
||||||
|
+ if dist.breed in ["suse", "redhat", "generic_lower_os"]:
|
||||||
|
append_line += " gateway=%s" % my_gw
|
||||||
|
if dist.breed in ["ubuntu", "debian"]:
|
||||||
|
append_line += " netcfg/get_gateway=%s" % my_gw
|
||||||
|
@@ -458,7 +458,7 @@ class BuildIso(object):
|
||||||
|
append_line += " nameserver=%s" % ",".join(my_dns)
|
||||||
|
else:
|
||||||
|
append_line += " nameserver=%s" % my_dns
|
||||||
|
- if dist.breed == "redhat":
|
||||||
|
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
|
||||||
|
if type(my_dns) == list:
|
||||||
|
append_line += " dns=%s" % ",".join(my_dns)
|
||||||
|
else:
|
||||||
|
@@ -548,7 +548,7 @@ class BuildIso(object):
|
||||||
|
cfg.write(" kernel %s\n" % os.path.basename(distro.kernel))
|
||||||
|
|
||||||
|
append_line = " append initrd=%s" % os.path.basename(distro.initrd)
|
||||||
|
- if distro.breed == "redhat":
|
||||||
|
+ if distro.breed == "redhat" or distro.breed == "generic_lower_os":
|
||||||
|
append_line += " ks=cdrom:/isolinux/%s.cfg" % descendant.name
|
||||||
|
if distro.breed == "suse":
|
||||||
|
append_line += " autoyast=file:///isolinux/%s.cfg install=cdrom:///" % descendant.name
|
||||||
|
@@ -566,7 +566,7 @@ class BuildIso(object):
|
||||||
|
elif descendant.COLLECTION_TYPE == 'system':
|
||||||
|
autoinstall_data = self.api.autoinstallgen.generate_autoinstall_for_system(descendant.name)
|
||||||
|
|
||||||
|
- if distro.breed == "redhat":
|
||||||
|
+ if distro.breed == "redhat" or distro.breed == "generic_lower_os":
|
||||||
|
cdregex = re.compile(r"^\s*url .*\n", re.IGNORECASE | re.MULTILINE)
|
||||||
|
autoinstall_data = cdregex.sub("cdrom\n", autoinstall_data, count=1)
|
||||||
|
|
||||||
|
diff --git a/cobbler/actions/check.py b/cobbler/actions/check.py
|
||||||
|
index 319c03f..9ae8831 100644
|
||||||
|
--- a/cobbler/actions/check.py
|
||||||
|
+++ b/cobbler/actions/check.py
|
||||||
|
@@ -139,7 +139,7 @@ class CobblerCheck(object):
|
||||||
|
if notes != "":
|
||||||
|
notes = " (NOTE: %s)" % notes
|
||||||
|
rc = 0
|
||||||
|
- if self.checked_family in ("redhat", "suse"):
|
||||||
|
+ if self.checked_family in ("redhat", "suse", "generic_lower_os"):
|
||||||
|
if os.path.exists("/etc/rc.d/init.d/%s" % which):
|
||||||
|
rc = utils.subprocess_call(self.logger, "/sbin/service %s status > /dev/null 2>/dev/null" % which, shell=True)
|
||||||
|
if rc != 0:
|
||||||
|
diff --git a/cobbler/actions/reposync.py b/cobbler/actions/reposync.py
|
||||||
|
index fb2ac5c..6b4ff70 100644
|
||||||
|
--- a/cobbler/actions/reposync.py
|
||||||
|
+++ b/cobbler/actions/reposync.py
|
||||||
|
@@ -275,7 +275,7 @@ class RepoSync(object):
|
||||||
|
mdoptions.append("-g %s" % groupmdfile)
|
||||||
|
if "prestodelta" in rd:
|
||||||
|
# need createrepo >= 0.9.7 to add deltas
|
||||||
|
- if utils.get_family() in ("redhat", "suse"):
|
||||||
|
+ if utils.get_family() in ("redhat", "suse", "generic_lower_os"):
|
||||||
|
cmd = "/usr/bin/rpmquery --queryformat=%{VERSION} createrepo"
|
||||||
|
createrepo_ver = utils.subprocess_get(self.logger, cmd)
|
||||||
|
if not createrepo_ver[0:1].isdigit():
|
||||||
|
diff --git a/cobbler/autoinstallgen.py b/cobbler/autoinstallgen.py
|
||||||
|
index 2f38a40..ec1aac5 100644
|
||||||
|
--- a/cobbler/autoinstallgen.py
|
||||||
|
+++ b/cobbler/autoinstallgen.py
|
||||||
|
@@ -314,7 +314,7 @@ class AutoInstallationGen(object):
|
||||||
|
meta.update(autoinstall_meta)
|
||||||
|
|
||||||
|
# add package repositories metadata to autoinstall metavariables
|
||||||
|
- if distro.breed == "redhat":
|
||||||
|
+ if distro.breed == "redhat" or distro.breed == "generic_lower_os":
|
||||||
|
meta["yum_repo_stanza"] = self.generate_repo_stanza(obj, (system is None))
|
||||||
|
meta["yum_config_stanza"] = self.generate_config_stanza(obj, (system is None))
|
||||||
|
# FIXME: implement something similar to zypper (SUSE based distros) and apt (Debian based distros)
|
||||||
|
diff --git a/cobbler/tftpgen.py b/cobbler/tftpgen.py
|
||||||
|
index 5c5b1ef..bf0f347 100644
|
||||||
|
--- a/cobbler/tftpgen.py
|
||||||
|
+++ b/cobbler/tftpgen.py
|
||||||
|
@@ -727,7 +727,7 @@ class TFTPGen(object):
|
||||||
|
else:
|
||||||
|
autoinstall_path = "http://%s/cblr/svc/op/autoinstall/profile/%s" % (httpserveraddress, profile.name)
|
||||||
|
|
||||||
|
- if distro.breed is None or distro.breed == "redhat":
|
||||||
|
+ if distro.breed is None or distro.breed == "redhat" or distro.breed == "generic_lower_os":
|
||||||
|
|
||||||
|
append_line += " kssendmac"
|
||||||
|
append_line = "%s ks=%s" % (append_line, autoinstall_path)
|
||||||
|
diff --git a/cobbler/utils.py b/cobbler/utils.py
|
||||||
|
index 44a7016..8e46e47 100644
|
||||||
|
--- a/cobbler/utils.py
|
||||||
|
+++ b/cobbler/utils.py
|
||||||
|
@@ -1056,6 +1056,9 @@ def os_release():
|
||||||
|
make = "unknown"
|
||||||
|
return make, float(distro_version)
|
||||||
|
|
||||||
|
+ elif family == "generic_lower_os":
|
||||||
|
+ return "generic_lower_os", float(distro_version)
|
||||||
|
+
|
||||||
|
|
||||||
|
def is_safe_to_hardlink(src, dst, api):
|
||||||
|
"""
|
||||||
|
diff --git a/config/cobbler/distro_signatures.json b/config/cobbler/distro_signatures.json
|
||||||
|
index b1d073c..773e9f2 100644
|
||||||
|
--- a/config/cobbler/distro_signatures.json
|
||||||
|
+++ b/config/cobbler/distro_signatures.json
|
||||||
|
@@ -1,5 +1,33 @@
|
||||||
|
{
|
||||||
|
"breeds": {
|
||||||
|
+ "generic_lower_os": {
|
||||||
|
+ "generic_lower_os": {
|
||||||
|
+ "signatures": [
|
||||||
|
+ "Packages"
|
||||||
|
+ ],
|
||||||
|
+ "version_file": "generic_os-release-(.*).rpm",
|
||||||
|
+ "version_file_regex": null,
|
||||||
|
+ "kernel_arch": "kernel-(.*).rpm",
|
||||||
|
+ "kernel_arch_regex": null,
|
||||||
|
+ "supported_arches": [
|
||||||
|
+ "aarch64",
|
||||||
|
+ "x86_64"
|
||||||
|
+ ],
|
||||||
|
+ "supported_repo_breeds": [
|
||||||
|
+ "rsync",
|
||||||
|
+ "rhn",
|
||||||
|
+ "yum"
|
||||||
|
+ ],
|
||||||
|
+ "kernel_file": "vmlinuz(.*)",
|
||||||
|
+ "initrd_file": "initrd(.*)\\.img",
|
||||||
|
+ "isolinux_ok": true,
|
||||||
|
+ "default_autoinstall": "sample.ks",
|
||||||
|
+ "kernel_options": "repo=$tree",
|
||||||
|
+ "kernel_options_post": "",
|
||||||
|
+ "boot_files": [],
|
||||||
|
+ "boot_loaders": {}
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
"redhat": {
|
||||||
|
"rhel4": {
|
||||||
|
"signatures": [
|
||||||
|
diff --git a/distro_build_configs.sh b/distro_build_configs.sh
|
||||||
|
index bad43e3..ef48836 100644
|
||||||
|
--- a/distro_build_configs.sh
|
||||||
|
+++ b/distro_build_configs.sh
|
||||||
|
@@ -30,6 +30,9 @@ if [ "$DISTRO" = "" ] && [ -r /etc/os-release ];then
|
||||||
|
ubuntu*|debian*)
|
||||||
|
DISTRO="UBUNTU"
|
||||||
|
;;
|
||||||
|
+ generic_os*)
|
||||||
|
+ DISTRO=`echo 'generic_os'|tr 'a-z' 'A-Z'`
|
||||||
|
+ ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
@@ -42,7 +45,7 @@ elif [ "$DISTRO" = "UBUNTU" ];then
|
||||||
|
export WEBROOT="/var/www";
|
||||||
|
export WEBCONFIG="/etc/apache2/conf-available";
|
||||||
|
export DEFAULTPATH="etc/default"
|
||||||
|
-elif [ "$DISTRO" = "FEDORA" ];then
|
||||||
|
+elif [ "$DISTRO" = "FEDORA" ] || [ "$DISTRO" = `echo 'generic_os'|tr 'a-z' 'A-Z'` ];then
|
||||||
|
export APACHE_USER="apache"
|
||||||
|
export APACHE_GROUP="apache"
|
||||||
|
|
||||||
|
diff --git a/templates/etc/dhcp.template b/templates/etc/dhcp.template
|
||||||
|
index e450419..e8a2b91 100644
|
||||||
|
--- a/templates/etc/dhcp.template
|
||||||
|
+++ b/templates/etc/dhcp.template
|
||||||
|
@@ -33,7 +33,7 @@ subnet 192.168.1.0 netmask 255.255.255.0 {
|
||||||
|
|
||||||
|
# Legacy
|
||||||
|
if option system-arch = 00:00 {
|
||||||
|
- filename "grub/grub.0";
|
||||||
|
+ filename "pxelinux.0";
|
||||||
|
}
|
||||||
|
# UEFI-32-1
|
||||||
|
if option system-arch = 00:06 {
|
||||||
|
@@ -47,15 +47,15 @@ subnet 192.168.1.0 netmask 255.255.255.0 {
|
||||||
|
}
|
||||||
|
# UEFI-64-1
|
||||||
|
else if option system-arch = 00:07 {
|
||||||
|
- filename "grub/grubx64.efi";
|
||||||
|
+ filename "grubx64.efi";
|
||||||
|
}
|
||||||
|
# UEFI-64-2
|
||||||
|
else if option system-arch = 00:08 {
|
||||||
|
- filename "grub/grubx64.efi";
|
||||||
|
+ filename "grubx64.efi";
|
||||||
|
}
|
||||||
|
# UEFI-64-3
|
||||||
|
else if option system-arch = 00:09 {
|
||||||
|
- filename "grub/grubx64.efi";
|
||||||
|
+ filename "grubx64.efi";
|
||||||
|
}
|
||||||
|
# armv7 (aka arm 32 bit)
|
||||||
|
else if option system-arch = 00:0a {
|
||||||
|
@@ -63,7 +63,7 @@ subnet 192.168.1.0 netmask 255.255.255.0 {
|
||||||
|
}
|
||||||
|
# aarch64 (aka arm 64 bit)
|
||||||
|
else if option system-arch = 00:0b {
|
||||||
|
- filename "grub/grubaa64.efi";
|
||||||
|
+ filename "grubaa64.efi";
|
||||||
|
}
|
||||||
|
# RiskV 32 bit
|
||||||
|
else if option system-arch = 00:25 {
|
||||||
|
--
|
||||||
|
2.30.0
|
||||||
|
|
||||||
31
huawei-repair-switch-condition-error.patch
Normal file
31
huawei-repair-switch-condition-error.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From 23087fd58b8f7b62c35dcaaae0e7db7713a8172e Mon Sep 17 00:00:00 2001
|
||||||
|
From: bitcoffee <liuxin264@huawei.com>
|
||||||
|
Date: Tue, 29 Jun 2021 00:44:49 +0800
|
||||||
|
Subject: [PATCH] repair switch condition error
|
||||||
|
|
||||||
|
---
|
||||||
|
templates/etc/dhcp.template | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/templates/etc/dhcp.template b/templates/etc/dhcp.template
|
||||||
|
index e8a2b91..cc3cfb1 100644
|
||||||
|
--- a/templates/etc/dhcp.template
|
||||||
|
+++ b/templates/etc/dhcp.template
|
||||||
|
@@ -36,12 +36,12 @@ subnet 192.168.1.0 netmask 255.255.255.0 {
|
||||||
|
filename "pxelinux.0";
|
||||||
|
}
|
||||||
|
# UEFI-32-1
|
||||||
|
- if option system-arch = 00:06 {
|
||||||
|
+ else if option system-arch = 00:06 {
|
||||||
|
# Not supported, no 32 bit UEFI grub executable
|
||||||
|
filename "unsupported";
|
||||||
|
}
|
||||||
|
# UEFI-32-2
|
||||||
|
- if option system-arch = 00:02 {
|
||||||
|
+ else if option system-arch = 00:02 {
|
||||||
|
# Not supported, no 32 bit UEFI grub executable
|
||||||
|
filename "unsupported";
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.30.0
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user