圣诞节太空漫步

哈Ha!

圣诞节前不久,我们决定在IT部门学习Spacewalk-这是Red Hat系统,它是Satellite的免费模拟产品,用于集中式配置管理,系统更新以及对整个服务器园区的便捷支持。

由于官方网站上提供的文档不足以提供有关各种故障排除的其他注释,因此任务是研究产品,使其首先逐步引入服务器,然后再引入产品。

引入Spacewalk的主要思想不仅是集中化和简化控制,还因为没有先例,所以没有人会用俏皮的笔在新项目的服务器上播放更新。

经过两周的工作,我所获得的所有知识都被输入到Confluence的内部类似物中,并且有一天的休息日促使我撰写有关Habr的文章。

在开始之前,我想简要介绍一下受影响的和不受影响的,以免假装使用Spacewalk的完整手册:

+服务器/客户端的安装和配置
+ GUI中的系统设置
+对安装/更新软件包进行故障排除,使用配置
+勘误表(收集有关关键更新,漏洞等的信息)

-代理(放弃HA后,需求消失了)
-补鞋匠/ kickstart
-OpenSCAP

系统要求


由于整个基础架构都在VMWare上运行,因此该工作是在运行CentOS 7的VM上进行的。开发人员建议的系统要求为:

  • 4GB RAM
  • / var /卫星/ 6 GB可用空间
  • DB 12GB

我用过:

  • 6GB RAM
  • 4个CPU
  • 40GB硬盘

我还建议您禁用SELinux,如果不使用,请禁用firewalld。 或将http服务添加到例外中。

注意:在文章结尾,将有Ansible的剧本,包括客户端和服务器部分以及bash脚本。 在他们的帮助下,几分钟之内就可以部署整个基础架构。

安装方式


在官方文档和多个站点中都对安装本身进行了描述,但是,出于文章的完整性,让我在这里提及这一点。

Spacewalk可与两种DBMS一起使用:PostgreSQL和Oracle RDBMS。 我对第一个有经验,现在将使用它。

有两个安装选项:通过来自Spacewalk的自动安装程序(它们将在同一服务器上安装和配置自身以及数据库)和手动安装(可在其中将数据库和应用程序放在不同的服务器上)进行手动安装。 我将考虑这两个选项,我将从单独安装开始。

PostgreSQL的


yum install -y postgresql-server 

还需要为PG连接PL / Tcl模块:

 yum install -y postgresql-pltcl postgresql-setup initdb systemctl start postgresql 

创建一个数据库,一个用户,并连接模块:

 su - postgres -c 'PGPASSWORD=verystrong; createdb spcwlkdb ; createlang plpgsql spcwlkdb ; createlang pltclu spcwlkdb ; yes $PGPASSWORD | createuser -P -sDR spcwlkuser' 

为了避免连接问题,值得更改/var/lib/pgsql/data/pg_hba.conf ,在所有行之前添加以下行:

 local spcwlkdb spcwlkuser md5 host spcwlkdb spcwlkuser 127.0.0.1/8 md5 local spcwlkdb postgres ident 

重新启动所有内容:

 systemctl restart postgresql 

如果打算将应用程序和数据库安装在不同的服务器上,请确保在数据库服务器上安装了postgresql-contrib软件包。

太空漫步


我们连接存储库:

 rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm 

还要连接epel:

 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 

Java:

 (cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo) 

现在直接安装Spacewalk-postgres的安装程序:

 yum -y install spacewalk-setup-postgresql 

连接到我们的数据库:

 spacewalk-setup-postgresql create --db spcwlkdb --user spcwlkuser --password verystrong 

如果您使用单独的数据库/应用程序方法,则需要添加--standalone标志并指定数据库服务器的IP地址,也不要忘记打开端口5432。

注意:建议您根据硬件调整数据库,以提高整个系统的生产效率。

现在安装Spacewalk本身并运行安装:

 yum -y install spacewalk-postgresql spacewalk-setup --external-postgresql 

接下来,将询问有关SSL证书和数据库的几个问题。 您可以手动输入所有值,也可以使用--answer-file标志并使用答案指定文件的路径,以便将来自动安装:

 admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = HMP ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y 

要直接控制应用程序,应使用:

 /usr/sbin/spacewalk-service [stop|start|restart] 

要显示对应用程序有贡献的所有第三方服务:

 spacewalk-service status 

选项二,自动安装


连接存储库后,设置并运行:

 yum -y install spacewalk-setup-postgresql yum -y install spacewalk-postgresql spacewalk-setup 

再次,将询问有关数据库和SSL的问题,我们使用--answer-file密钥以及包含答案的文件路径。

基本和子渠道,回购


为了管理客户站,Spacewalk使用了一个所谓的渠道系统,该渠道可以是主渠道(子渠道),也可以是子渠道(子渠道),您需要的存储库已附加到每个渠道,以及一个密钥-客户端与之配对服务器。

结果,存储库与通道同步,通道又与客户端连接,Spacewalk通常可以正常工作。 值得一提的是可以与渠道绑定的勘误表,它简化了更新和程序包控制。

可以根据不同的标准对所有客户端进行分组,既可以使用相同的通道,也可以使用不同的通道或存储库,一次可以与大量客户端一起工作,这有助于在100多个服务器上进行更新。

所有已安装软件包的列表均可用,并且在存储库同步之后也可以安装。 有些要点很直观,因此逐行考虑每个项目是没有意义的。

Spacewalk中的所有动作均按时间表进行(时间表),几乎可以在最方便的时间配置任何动作。

安装后,可以转到服务器的地址,通过图形界面进行进一步配置:



输入密码,管理员名称,组织名称(这也是管理客户端的方法之一),然后转到开始面板。

目前,您可以自己浏览可用选项,也可以继续创建频道。

频道-管理软件频道-创建频道:



我建议根据绑定到该通道的操作系统的类型和类型来设置通道名称,例如CentOS_7_x86_64 ,您可以安全地选择sha256作为检查对象,“通道1摘要”字段用于通道的简短说明。 此外,您可以选择提供其他信息。

现在创建一个子频道并将其绑定到主频道。 我们与创建主频道的方式相同,只是在“父频道”字段中,我们将指示先前创建的频道。

将存储库绑定到主渠道和子渠道。
渠道-管理存储库



对于主要渠道,我将基础资源用于次要渠道-更新。

创建存储库后,需要将它们连接到通道。
频道-管理软件频道 ,打开您的主要频道,然后打开“存储库”部分。



将创建所有已创建的存储库,选择所需的存储库,对其进行标记,然后单击“更新资源”。

接下来,打开“同步”子项:



在可以同步存储库和通道的位置,配置同步计划。

注意:就笔而言,我必须从客户端系统中删除标准存储库。

客户端安装,客户端与服务器配对,密钥管理,设置配置通道


如前所述,Spacewalk使用来自Red Hat Network的密钥系统,该系统用于配对和管理。

要创建密钥,请转到系统-激活密钥-创建密钥:



这里的一切都非常简单,值得一提的是,您可以自己设置密钥,其格式始终为1-XXXXXX ,并且每个密钥都附加到通道。 通用默认标记会强制新系统选择关键参数。

客户端安装

连接客户端存储库并安装必要的软件包:

 rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm 


注意:需要rhncfg-actions和deltarpm才能使配置和遥控器正常工作。

Spacewalk使用rhn_check同步客户端服务器,该服务器每4小时运行一次。 这个值可以减少到60分钟,但对我来说,没有一个选项是最佳的,因此有两个选项:使用osad(随Spacewalk一起提供),或为rhn_check添加一个cronjob,例如,当我们测试系统,然后可以根据需要更改该值。

 crontab -e * * * * * /usr/sbin/rhn_check 

同样也不会在Cron中添加/ usr / bin / rhn-actions-control --enable-all,它用于部署配置,有时会变得愚蠢。

我们返回到密钥管理,复制我们创建的密钥ID,然后执行:

 rhnreg_ks --serverUrl=http://your-server-ip/XMLRPC --activationkey=1-YOURKEY --force 

只是不要忘记将IP和密钥值更改为您自己的。 再次,我建议您使用--force标志,因为我注意到没有使用此标志的问题。

我们返回系统-全部 ,我们很高兴注意到我们的系统。 现在,您可以打开它并探索其中的内容和方式,但是,我现在强烈建议创建一个组,以更方便地进行系统管理。

系统-系统组-创建组 ,填写名称和描述,保存,打开新创建的组,转到“ 系统”部分,然后将系统添加到该组。

现在,将系统订阅频道, 系统-您的系统-软件文件夹-软件频道子文件夹:



选择您的频道,然后单击确认。 为了娱乐,您可以尝试安装软件包Software-Packages-Install

配置通道

为了管理客户端服务器/本地计算机以及远程控制之间的配置,值得设置配置通道并将系统链接到该通道。
我们转到“ 配置”“配置通道”“创建配置通道” ,设置名称,描述,保存,然后在“ 配置”“管理配置通道”“订阅通道”中进行签名,并将配置通道签名到软件通道和系统。



现在,我们可以从服务器和本地计算机上部署配置,并创建分区。

配置-添加文件-创建文件/上传文件:



同样,我们可以以bash脚本的形式发送远程命令:



提醒您,所有操作都经过时间表,可以在“事件”部分找到应用于该系统的所有操作的列表:



勘误

Spacewalk最重要的功能之一是勘误支持,它很方便地绑定到频道并允许您监视最新更新的重要性级别。 这是直接在服务器上配置的,除了脚本外,您还需要下载Pearl所需的软件包:

 yum -y install perl-Frontier-RPC perl-Text-Unidecode wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl chmod +x errata-import.pl 

然后创建主要的更新和收集脚本勘误表,该勘误表将存储在/ etc / rhn /中:

 #!/bin/bash cd /etc/rhn/ wget -N http://cefs.steve-meier.de/errata.latest.xml wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml export SPACEWALK_USER='root' export SPACEWALK_PASS='verystrong' ./errata-import.pl --server YourServerIPAddress --errata errata.latest.xml --rhsa-oval com.redhat.rhsa-all.xml --publish unset SPACEWALK_USER unset SPACEWALK_PASS 

在导出中,指定您在开始时指定的Spacewalk管理员的名称和密码。

让我们使脚本可执行,并将其添加到Cron中:

 chmod +x spcwlk_errata.sh crontab -e 0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata.sh 

让我们立即执行它,以查看图形界面中的更改。 执行将需要一些时间。



总结


我个人认为很重要的一点是,设置和安装代理,以及将整个系统升级为HA。 我有一个想法,可以通过起搏器配置应用程序,并在数据库上进行同步。 结果,鉴于客户端站的服务器数量不是很大,因此决定放弃此想法。 但是,如果事实证明该系统在接下来的六个月中非常有用,则可能必须扩展原始服务器。

自动化技术


伺服器:

服务器部署的Bash脚本(DISABLES firewalld):

 #!/bin/sh # rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm (cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo) yum -y install spacewalk-setup-postgresql spacewalk-postgresql wget perl-Frontier-RPC perl-Text-Unidecode perl-XML-Simple # mkdir /usr/share/spcwlk-tmp/ echo 'admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = SCK ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y' > /usr/share/spcwlk-tmp/spcwlk_answer spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer # systemctl stop firewalld systemctl disable firewalld # 


Bash脚本来安装勘误(首先为Spacewalk管理员设置名称和密码):
 #!/bin/sh # wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl -P /etc/rhn/ echo '#!/bin/bash cd /etc/rhn/ wget -N http://cefs.steve-meier.de/errata.latest.xml wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml export SPACEWALK_USER='gui username' export SPACEWALK_PASS='Password to your gui account' ./errata-import.pl --server YourServerIPAddress --errata errata.latest.xml --rhsa-oval com.redhat.rhsa-all.xml --publish unset SPACEWALK_USER unset SPACEWALK_PASS' > /etc/rhn/spcwlk_errata.sh # chmod +x /etc/rhn/errata-import.pl chmod +x /etc/rhn/spcwlk_errata.sh # echo '#!/bin/bash # /etc/rhn/./spcwlk_errata.sh' > /etc/rhn/spcwlk_errata_cron.sh chmod +x /etc/rhn/spcwlk_errata_cron.sh echo '0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata_cron.sh' >> /var/spool/cron/root /etc/rhn/./spcwlk_errata.sh # 


用于服务器部署的Ansible手册(请不要忘记添加答案文件):
 - hosts: spcwlk-server tasks: - name: Install Spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install epel repo yum: name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state: present - name: Install PostgreSQL packages yum: name: - spacewalk-setup-postgresql - spacewalk-postgresql - wget - perl-Frontier-RPC - perl-Text-Unidecode - perl-XML-Simple - name: Creates directory for Spacewalk answer file file: path: /usr/share/spcwlk-tmp/ state: directory mode: 0755 - name: Deploy answer file copy: src: /etc/ansible/spcwlk_answer dest: /usr/share/spcwlk-tmp/spcwlk_answer - name: Spacewalk Server Deploy shell: spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer - name: Stop firewalld systemd: name: firewalld state: stopped enabled: no 


客户:

用于客户端部署的Bash脚本(不要忘记IP和密钥):
 #!/bin/sh # rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm wget echo '#!/bin/bash # /usr/sbin/rhn_check' > rhn_check.sh mv rhn_check.sh /etc/cron.hourly/ chmod +x /etc/cron.hourly/rhn_check.sh echo '* * * * * /usr/bin/sh /etc/cron.hourly/rhn_check.sh' >> /var/spool/cron/root /usr/bin/rhn-actions-control --enable-all cd /usr/share/rhn/ wget http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT rhnreg_ks --serverUrl=http://172.22.64.41/XMLRPC --activationkey=1-xxxxxxxxxxxxxxxxxxxxxxxxxxxx --force 


用于客户端部署的Anisble手册:
 - hosts: spcwlk-clients tasks: - name: Install spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install client packages yum: name: - rhn-client-tools - rhn-check - rhn-setup - rhnsd - m2crypto - yum-rhn-plugin - rhncfg-actions - deltarpm - wget - name: Create cronjob for rhn_check cron: name: "rhn_check" minute: "*" hour: "*" day: "*" month: "*" weekday: "*" job: "/usr/sbin/rhn_check" - name: Enable controls for config and remote control deployment shell: /usr/bin/rhn-actions-control --enable-all - name: Get certificate from server to client get_url: url: http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT dest: /usr/share/rhn/ - name: Register client to server rhn_register: state: present server_url: http://YourServerIPAddress/XMLRPC activationkey: "{{ activation_key }}" 


谢谢大家阅读本文。 祝你好运

Source: https://habr.com/ru/post/zh-CN435578/


All Articles