Ubuntu 12.04のCobbler + puppetまたはネットワークインストール

はじめに


遅かれ早かれ、すべての真剣な企業は、ITインフラストラクチャの合法化について考える必要があります。 中規模の会社N.セントラルオフィス、30の小さな支店を取り上げます。 どこでも、主にXPのWindowsの下にワークステーションがあります。 最近のラップトップコンピューターでは、2k3、2k8、ubuntu-serverサーバーにWindows 7と8があります。
同社はゆっくりとしたペースで拡大しており、小規模のIT部門は事前に作成されたAcronisイメージから新しいマシンを展開しています。 しかし、コストを削減し、インフラストラクチャを合法化し、良心を一掃するために、オープンソースへの切り替えが決定されます。 悲劇にはすでに別の規模があり、多くのワークステーションを手で再インストールすることは長くて恩知らずのプロセスです。 アンダーカット-この問題の解決策の1つ。

1.必要なパッケージのツールとインストール。


PXEを使用してUbuntu 12.04.3 LTSをインストールすることが決定されました。 実装ツールとして、コブラーとパペットが選択されました。
CobblerはLinux用のネットワークインストールサーバーであり、新しいコンピューターまたは仮想マシン(Xen、qemu、KVMまたはVMware Server)での必要な展開環境の迅速な構築とOSインストールプロセスの管理、およびその後のシステムの再インストールを提供します。
これはPythonのCobblerによって書かれており、PXE、TFTP、DHCPなどの場合の標準コンポーネントの一部をまとめたものです。

必要なパッケージをインストールします。
sudo apt-get install cobbler cobbler-common cobbler-web dhcp3-server xinetd tftpd tftp debmirror 

デフォルトでは、cobblerバージョン2.2.3を入手しますが、これは完全に良いとは限りません。 なぜ-さらに調べる。

次に、コブラーがすべてに満足しているかどうかを確認します。
 sudo cobbler check 

応答で表示されるもの:
 No configuration problems found. All systems go. 

設定を同期します。
 sudo cobbler sync 

Cobblerは、さらにカスタマイズする準備ができました。

2.コブラーのセットアップ


cobblerがインストールされているサーバーのネットワーク設定を指定して、cobblerの構成を変更します。
 sudo dpkg-reconfigure cobbler 

ネットワーク上のサーバーアドレス、cobbler Webインターフェースのパスワードを指定します。
DHCPを使用するようにcobblerを構成します。
 sudo nano /etc/cobbler/settings 

変わります
 manage_dhcp: 0 

 manage_dhcp: 1 

cobbler設定を再起動して同期します。
 sudo service cobbler restart sudo cobbler sync 

cobblerがisc-dhcp-serverに渡すDHCPパターンを変更します。
 sudo nano /etc/cobbler/dhcp.template 

フォームに持ってきます:
 subnet 192.168.1.0 netmask 255.255.255.0 { # option routers 192.168.1.254; #  option domain-name-servers 192.168.1.254; # DNS  option subnet-mask 255.255.255.0; # range dynamic-bootp 192.168.1.10 192.168.1.20; #  IP 

そして、コブラーを再度再起動します。
 sudo service cobbler restart sudo cobbler sync 

これでcobblerはISOファイルをインポートする準備ができましたが、ここでは約束どおり、cobbler 2.2.3のニュアンスを使って状況を説明します。

実際には、ニュアンス。

自転車に乗った最初のレーキは、デスクトップバージョンのイメージをインポートできなかったことです。 cobblerにインポートした後、インストール可能なディストリビューションのリストに表示されませんでした。 海外の友人のフォーラムをグーグルで検索した結果、Ubuntuディストリビューターの代替、サーバー、ミニバージョンを使用する必要があることが判明しました。デスクトップコブラーは単に表示されません(回避策はありますが、代替をダウンロードする方が簡単でした)。 また、バージョン2.2.3の機能は、イメージからローカルディストリビューションを作成せず、インストール中にカーネルのみをロードし、他のすべてのパッケージをインターネット上のリポジトリからダウンロードすることです。 少なくとも、画像lubuntu-12.04-alternate-i386がそうでした。 バージョン2.4では、ローカルdistribが作成され、パッケージはISOイメージから直接配信されます。

続ける
イメージをマウントし、cobblerディストリビューションのリストにインポートします。
 sudo mount -o loop lubuntu1203.iso /mnt sudo cobbler import --name=lubuntu-12-4 --path=/mnt --breed=ubuntu 

cobbler-webパッケージを何もインストールしませんでした。 192.168.1.2/cobbler_webでWebインターフェイスを参照できます。

ここでは、多くの便利な設定を行い、ディストリビューション、パッケージ、リポジトリ、プロファイルなどを追加できます。 私たちのタスクは、インポートしたプロファイルを構成することです。 lubuntu-12-4が表示されているプロファイルに移動し、[編集]をクリックします。 ここでのタスクはキックスタートを追加することです
画像
クライアントマシンにUbuntuをインストールするときに、すでに最後の段階で、「指定されたアーカイブミラーを使用しようとしているときにエラーが検出されました」というエラーに遭遇しました。
キックスタートファイルをコピーして名前を変更することで解決
 /var/lib/cobbler/kickstarts/ubuntu-server.preseed 

 /etc/cobbler/precise.ubuntu.alternate.lan.preseed 

プロファイルでは、適切な場所でキックスタートへのパスを記述します。
画像

3.パペット


Puppetには、マシンを微調整する機能が与えられました。 調べた例では、クライアントマシンにいくつかのパッケージが存在するかどうかを確認し、存在しない場合はインストールします。
サーバーにpuppetをインストールします。
 sudo apt-get install puppetmaster 

そしてクライアントで:
 sudo apt-get install puppet 

便宜上、/ etc / cobbler / settingsにはpuppet_auto_setupパラメーターがあります。これはpuppetを自動的に設定しますが、サーバー上のEPELのローカルコピーが必要です。 私は完全に理解していなかったか、アイデアは本当に愚かですが、cobbler自体のポストインストールスクリプトを介してすべてを実装することができます。
マシンはDNSから名前を取得することが理解されています。そうでない場合、クライアントとパペットサーバーでそれぞれホストファイルを構成する必要があります。
 192.168.0.1 puppetmaster.example.com puppetmaster puppet 192.168.0.10 puppetclient.example puppetclient 

次の内容でマニフェスト/etc/puppet/manifests/site.ppを作成してみましょう(例としてパッケージが選択されています。人形の詳細な構成については、ドキュメントを参照してください)。
 $base_packages = [ “gnome”, “mc”, “openssh-server”, “vim” ] package { $base_packages: ensure => installed } 

この単純なPuppetサーバーの最終ステップは、サービスを再起動することです。
 sudo /etc/init.d/puppetmaster restart 

これで、クライアントに証明書を要求できます。
 puppet agent --server puppetmaster --waitforcert 60 --test info: Creating a new SSL certificate request for puppetclient 

サーバーで証明書に署名するためのリクエストを確認しましょう。
 puppet cert --list 

クライアントからのリクエストが表示されたら、署名します。
 puppet cert --sign puppetclient 

サーバーへの最初の接続試行で、puppetは、証明書内のサーバー名が要求された名前と一致しないというエラーを返しました/etc/puppet/puppet.conf編集し/etc/puppet/puppet.conf
 [master] certname=puppetmaster 

それだけです。クライアントマシンは、マニフェストで指定されたパッケージを配置します。

おわりに


このプロセスは、ディストリビューションによってわずかに異なる場合があります。 欠落しているフォルダーを作成する必要がある場合がありますが、これはコンソールに明示的に書き込まれます。 また、インストールの開始時にハングを克服することはできませんでした。約15分間、マシンがハングしたように見える場合があります。 私が知る限り、重複排除は実行中です。 また、バグトラッカーで説明されている一般的なバグ。 なぜ、なぜ-誰かがここであなたに言うかもしれません。 批判、アドバイス、訂正は大歓迎です。

Source: https://habr.com/ru/post/J204788/


All Articles