クリスマスの宇宙遊泳

こんにちは、Habr

クリスマスの少し前に、IT郚門でSpacewalkを研究するこずが決定されたした。これは、䞀元化された構成管理、システム曎新、およびサヌバヌパヌク党䜓の䟿利なサポヌトのための、Satelliteの無料アナログであるRed Hatシステムです。

公匏Webサむトで入手できるドキュメントでは、さたざたな皮類のトラブルシュヌティングの远加コメントが䞍足しおいるため、タスクは最初にテストサヌバヌに、次に補品に段階的に導入するために補品を調査するこずでした。

Spacewalkを導入する䞻なアむデアは、制埡の集䞭化ず単玔化だけでなく、先䟋がすでに発生しおいるため、誰も新しいプロゞェクトのサヌバヌの曎新を遊び心のあるペンで再生しないようにするこずでした。

2週間の仕事の埌、私が受け取ったすべおの知識はConfluenceの内郚アナログに入力され、䌑日の䌑みでHabrに関する蚘事を曞くようになりたした。

始める前に、Spacewalkを操䜜するための完党なマニュアルのふりをしないように、圱響を受けたものず受けなかったものを簡単に匷調したいず思いたす。

+サヌバヌ/クラむアントのむンストヌルず構成
+ GUIでのシステムセットアップ
+むンストヌル/パッケヌゞの曎新のトラブルシュヌティング、構成の操䜜
+正誀衚重芁な曎新、脆匱性などに関する情報の収集

-プロキシHAの拒吊埌に消滅する必芁がありたす
-コブラヌ/キックスタヌト
-OpenSCAP

システム芁件


むンフラストラクチャ党䜓がVMWare䞊で実行されるずいう事実により、䜜業はCentOS 7を実行するVM䞊で実行されたした。開発者からの掚奚システム芁件は次のずおりです。


私が䜿甚した


たた、SELinuxを無効にし、䜿甚しない堎合はfirewalldを無効にするこずをお勧めしたす。 たたは、httpサヌビスを䟋倖に远加したす。

泚蚘事の最埌に、クラむアントずサヌバヌの䞡方の郚分、およびbashスクリプトのAnsibleのプレむブックがありたす。 圌らの助けを借りお、むンフラストラクチャ党䜓を数分で展開できたす。

蚭眮


むンストヌル自䜓は公匏ドキュメントずいく぀かのサむトの䞡方で説明されおいたすが、蚘事の敎合性のために、ここでこの点に぀いお蚀及したす。

Spacewalkは、PostgreSQLずOracle RDBMSの2぀のDBMSで動䜜したす。 私は最初の経隓があり、今すぐ䜿甚したす。

2぀のむンストヌルオプションがありたす。スペヌスりォヌクの自動むンストヌラヌどちらも同じサヌバヌに自身ずデヌタベヌスをむンストヌルおよび構成したすず、DBずアプリケヌションを異なるサヌバヌに配眮できる手動むンストヌルの䞡方です。 䞡方のオプションを怜蚎し、個別のむンストヌルから始めたす。

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 

オプション2、自動むンストヌル


リポゞトリを接続したら、次を蚭定しお実行したす。

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

繰り返したすが、デヌタベヌスずSSLに関する質問がありたす。--answer-fileキヌず、回答のあるファむルぞのパスを䜿甚したす。

ベヌスおよび子チャンネル、リポゞトリ


クラむアントステヌションを管理するために、Spacewalkはいわゆるチャネルのシステムを䜿甚したす。これはメむン子たたは子子のいずれかで、必芁なリポゞトリは各チャネルに接続され、キヌはクラむアントずペアになりたすサヌバヌ。

その結果、リポゞトリはチャネルず同期され、チャネルはクラむアントず接続され、Spacewalkは䞀般的な方法で動䜜したす。 チャンネルに結び付けるこずができる゚ラヌタも蚀及する䟡倀があり、曎新ずパッケヌゞ制埡を簡玠化したす。

すべおのクラむアントは、同じチャネルでも、異なるチャネルたたはリポゞトリでも、さたざたな基準に埓っおグルヌプ化するこずができたす。䞀床に倚数のクラむアントず連携するこずができ、100以䞊のサヌバヌで曎新を行うこずができたす。

すべおのむンストヌル枈みパッケヌゞのリストが利甚可胜であり、リポゞトリの同期埌、むンストヌルが可胜です。 䞀郚のポむントは盎感的であり、各アむテムを行ごずに怜蚎しおも意味がありたせん。

Spacewalkのすべおのアクションはスケゞュヌルスケゞュヌルで実行されたす。ほずんどすべおのアクションは、最も郜合の良い時間に蚭定できたす。

むンストヌル埌、サヌバヌのアドレスに移動し、グラフィカルむンタヌフェむスを介しおさらに蚭定を実行できたす。



パスワヌド、管理者名、組織名クラむアントを管理する方法の1぀でもありたすを入力し、スタヌトパネルに移動したす。

今のずころ、利甚可胜なオプションを自分で調べるか、チャンネルの䜜成に進むこずができたす。

チャネル-゜フトりェアチャネルの管理-チャネルの䜜成



CentOS_7_x86_64など、このチャネルにバむンドされるOSのタむプずタむプに埓っおチャネル名を蚭定するこずをお勧めしたす。チェックずしおsha256を安党に遞択できたす。ChannellSummaryフィヌルドはチャネルの簡単な説明甚です。 たた、オプションで远加情報を提䟛できたす。

次に、子チャネルを䜜成しお、メむンチャネルにバむンドしたす。 メむンチャンネルを䜜成するのず同じ方法で、芪チャンネルフィヌルドでのみ、以前に䜜成されたチャンネルを瀺したす。

リポゞトリをメむンおよびサブチャネルにバむンドしたす。
チャンネル-リポゞトリの管理



メむンチャネルに぀いおは、ベヌスリ゜ヌスを䜿甚し、サブチャネルに぀いおは曎新を䜿甚したす。

リポゞトリを䜜成したら、それらをチャネルに接続する必芁がありたす。
チャンネル-゜フトりェアチャンネルの管理 、メむンチャンネルを開き、リポゞトリセクションを開きたす。



䜜成されたすべおのリポゞトリがあり、必芁なリポゞトリを遞択しおマヌクし、[リ゜ヌスの曎新]をクリックしたす。

次に、同期サブキヌを開きたす。



リポゞトリずチャネルを同期できる堎所で、同期のスケゞュヌルを構成したす。

泚遊び心のあるペンの堎合、クラむアントシステムから暙準リポゞトリを削陀する必芁がありたした。

クラむアントのむンストヌル、クラむアントずサヌバヌのペアリング、キヌ管理、構成チャネルのセットアップ


前述したように、SpacewalkはRed Hat Networkのキヌシステムを䜿甚したす。これは、ペアリングず管理に䜿甚されたす。

キヌを䜜成するには、[ システム]-[アクティベヌションキヌ]-[キヌの䜜成]に移動したす。



ここではすべおが非垞に簡単です。自分でキヌを蚭定でき、その圢匏は垞に1-XXXXXXであり、各キヌはチャネルにアタッチされおいるこずを蚀及する䟡倀がありたす。 Universal Defaultフラグは、新しいシステムにキヌパラメヌタヌを匷制的に遞択させたす。

クラむアントのむンストヌル

クラむアントリポゞトリを接続し、必芁なパッケヌゞをむンストヌルしたす。

 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分たで短瞮できたすが、私にずっお最適なオプションはありたせんでした。そのため、Spacewalkに付属するosadを䜿甚するか、rhn_checkにcronjobを远加するなど、1分ごずにシステムをテストしおから、必芁に応じお倀を倉曎できたす。

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

たた、/ usr / bin / rhn-actions-control --enable-allをCronに远加するこずも䞍必芁ではなく、構成の展開に䜿甚され、堎合によっおは鈍くなるこずがありたす。

キヌ管理に戻り、䜜成したキヌIDをコピヌしお実行したす。

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

IPずキヌの倀を自分のものに倉曎するこずを忘れないでください。 繰り返したすが、このフラグを䜿甚せずに問題に気づいたため、 -forceフラグを䜿甚するこずをお勧めしたす。

システムに戻りたす-すべお 、システムに泚目したす。 これを開いお、䜕をどのように探玢するこずができたすが、今のずころは、システム管理をより䟿利にするグルヌプを䜜成するこずを匷くお勧めしたす。

Systems-System Goups-Create Group 、名前ず説明を入力し、保存し、新しく䜜成したグルヌプを開き、 Systemsセクションに移動しおシステムをグルヌプに远加したす。

システムをチャンネルにサブスクラむブしたす。Systems-Your system-Software folder-Software Channelsサブフォルダヌ



チャンネルを遞択しお、確認をクリックしたす。 楜しみのために、パッケヌゞSoftware-Packages-Installをむンストヌルしおみおください。

蚭定チャンネル

クラむアントサヌバヌ/ロヌカルマシン間の構成、およびリモヌトコントロヌルを管理するには、構成チャネルを蚭定し、システムをそれにリンクする䟡倀がありたす。
構成-構成チャネル-構成チャネルの䜜成 、名前、説明の蚭定、保存に進み、 構成-構成チャネルの管理-チャネルのサブスクラむブを行い、構成チャネルに゜フトりェアチャネルずシステムに眲名したす。



これで、サヌバヌずロヌカルマシンの䞡方から構成を展開し、パヌティションを䜜成できたす。

蚭定-ファむルの远加-ファむルの䜜成/ファむルのアップロヌド



たた、bashスクリプトの圢匏でリモヌトコマンドを送信できたす。



すべおのアクションはスケゞュヌルを通過するこずを思い出しおください。このシステムに適甚されるすべおのアクションのリストは、むベントセクションにありたす。



正誀衚

Spacewalkの最も重芁な機胜の1぀ぱラヌタサポヌトです。これは、チャネルに簡単にバむンドし、最近の曎新の重芁床を監芖できるようにしたす。 これは、スクリプトに加えお、サヌバヌ䞊で盎接構成されたす。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ずしお䞊げるこずです。 ペヌスメヌカヌを介しおアプリケヌションを構成し、デヌタベヌスで同期するこずを考えおいたした。 その結果、クラむアントステヌションのサヌバヌ矀がそれほど倧きくないこずを考慮しお、このアむデアを攟棄するこずが決定されたした。 ただし、システムが今埌6か月で非垞に有甚であるこずが刀明した堎合は、元のサヌバヌを拡匵する必芁がありたす。

自動化


サヌバヌ

サヌバヌ展開甚のBashスクリプト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/J435578/


All Articles