仮想マシンが多数ある場合の管理方法

さらにいくつかのプロジェクトをリリースし、「ユーザーの作成、仮想マシンの展開、アクセス権の付与」というテーマのトラッカーのチケット数が考えられるすべての制限を超えた後、何かを変更する必要がありました。

目的:複数の開発チームとテスター向けにLinux作業環境編成する。 仮想マシンの総数は3〜4ダースです。



画像





この記事は、「現状のまま」の詳細なステップバイステップガイドではなく、実際の経験の説明と使用するツールの簡単な概要にすぎないことをすぐに言います。 読者は、たとえば必要な依存関係、パッケージのインストール、ネットワークの設定など、問題を自分で解決できることが理解されています。 意図的にスクリーンショットと詳細な構成ファイルを添付せず、読者がリストされたツールを個別に調査する機会を残します。



必要です:



ツールの要件:オープンソース、セットアップと使用の容易さ、Webインターフェイス、または構成用の強力なユーティリティパッケージ。



使用したソリューション: ubuntu 10.04およびその他のバージョン、proxmox openvz、chef、openldap、GIT、zabbix



1.認証。



openldapをデプロイします。 最近、openldapパッケージは動的構成スキームに切り替えられたため、すべての構成は特別なldifファイルを使用して実行されます。 私はそれが良いか悪いかを知りません。それは珍しいことであり、少なくとも些細なことではありません。 たとえば、 この記事を使用できます。 同じ記事を使用して、必要に応じてLDAPレプリケーションを構成できます。

LDAPフロントエンドを構成しなかったため、 LAM Webコントロールパネル (v3.4.0)がこれを行いました。 LDAP用のより便利なダッシュボードは見つかりませんでした。 GOSAの機能はもう少し多くありますが、構成がはるかに複雑であり、残りの製品の外観と機能は率直に言えば十分ではありません。



開発者とテスターの認証手順をできる限り簡素化するために、パスワードに加えて公開鍵を収集し、LDAPに配置することが決定されました。

このスキームにより、SSHキーを使用してパスワードなしで認証できます。 キーと一般的なSSH構成に関する記事はここにあります。authorized_keysファイルの代わりに、LDAPからの情報を使用します。



これを行うには、LPKパッチ(以下について)でopensshを収集し、LDAPでopenssh-lpk_openldap.schemaスキームを接続する必要があります

root:/#cat lpk.ldif

dn: cn=openssh-lpk,cn=schema,cn=config

objectClass: olcSchemaConfig

cn: openssh-lpk

olcAttributeTypes: {0}( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' DES

C 'MANDATORY: OpenSSH Public key' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.

1.1466.115.121.1.40 )

olcObjectClasses: {0}( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' DESC

'MANDATORY: OpenSSH LPK objectclass' SUP top AUXILIARY MAY ( sshPublicKey $

uid ) )

root:/#ldapadd -Y EXTERNAL -H ldapi:/// -f lpk.ldif








LAM Webインターフェイスの設定は簡単であり、あまり注意する必要はありません。 インストール後、パネルはLDAPフロントエンド自体を構成できます。 設定パネルで、SSH公開鍵モジュール(ldapPublicKey)も接続する必要があります。



2. SSH



リポジトリから、彼はLDAPから公開鍵を取得する方法を知りません、彼に教えます。

LPKテクノロジーについて読んで、 ここからパッチを入手してください。

root:/#apt-get source ssh

root:/#cd openssh-5.3p1

root:/#patch -p1 < contrib-openssh-lpk-5.4p1-0.3.13.patch






リダイレクトされたすべてのものに、2つのファイルと2つの行があり、手動でパッチを当てました。

debian /ルールでは、.. / configureに2つの場所を追加する必要があります

--with-libs="-lldap" --with-ldflags="-L/usr/lib" --with-cppflags="-I/usr/include -DWITH_LDAP_PUBKEY"







このパッケージが正常に動作しているシステムにアクセスし、リポジトリの動作バージョンと競合しないようにするには、いくつかの方法があります。たとえば:



最も簡単な方法はアップグレードすることです。 パッケージは問題なく立ち上がりますが、将来的には更新に問題が生じるでしょう。 インフラストラクチャは外部から閉じられているため、仮想マシンの寿命は比較的短く、この環境のセキュリティ問題は特に重要ではないため、この方法を選択しました。 実稼働環境では、この方法はもちろん適切ではありません。



変更ログを変更し、パッケージを収集します

root:/#dch -i

root:/#dpkg-buildpackage -b







出力では、特定の「openssh.deb」を取得します。これは、特定の条件下でLDAP「sshPublicKey」を照会できます。

LDAPのユーザーエントリ



LDAPのグループエントリ





/ etc / ssh / sshd_configの必須設定

UseLPK yes

LpkServers ldap://10.10.10.10/ # LDAP

LpkUserDN ou=People,dc=office #

LpkGroupDN ou=group,dc=office #

LpkBindDN cn=admin,dc=office # ,

LpkBindPw secret #

LpkServerGroup developers #

LpkForceTLS no # TLS, .

LpkSearchTimelimit 3 #

LpkBindTimelimit 3 #

LpkPubKeyAttr sshPublicKey # LDAP






LDAP設定に応じて、不要なパラメーターを簡単にコメントアウトできます。



3.構成を展開します。



仮想マシンのフリート全体が実質的に同じであるため、opscodeリポジトリーからchef構成にデプロイメントシステムを使用しました。

このシステムは非常に強力で柔軟性があり、考えられるほとんどすべてのインストールを自動化できます。



Postgres + Postgisを構成するための簡単なレシピの例

# Cookbook Name:: postgres

# Recipe:: default

package "postgresql" do

action:install

options "--force-yes"

end



package "postgresql-contrib" do

action:install

options "--force-yes"

end



package "postgis" do

action:install

options "--force-yes"

end



package "postgresql-9.0-postgis" do

action:install

options "--force-yes"

end



script "install_postgis" do

interpreter "bash"

user "postgres"

cwd "/tmp"

code <<-EOH

createdb template_postgis

createlang plpgsql template_postgis

psql -d template_postgis -f /usr/share/postgresql/9.0/contrib/_int.sql

psql -d template_postgis -f /usr/share/postgresql/9.0/contrib/postgis-1.5/postgis.sql

psql -d template_postgis -f /usr/share/postgresql/9.0/contrib/postgis-1.5/spatial_ref_sys.sql

createuser -s pgsql

EOH

end








クライアントでLDAPを構成します。 ここでは、クライアントがLDAPにログインできるように、設定済みのファイルをクライアントマシンの設定で単純にレイアウトします。

# Cookbook Name:: openldap

# Recipe:: auth



package "nscd" do

action :upgrade

end



package "libnss-ldap" do

action :upgrade

end



package "libpam-ldap" do

action :upgrade

end



service "nscd" do

supports :status => true, :restart => true, :reload => true

action [ :restart ]

end



service "ssh" do

supports :status => true, :restart => true, :reload => true

action [ :restart ]

end



script "prepare dirs" do

interpreter "bash"

user "root"

cwd "/tmp"

code <<-EOH

mkdir -p /etc/ldap

EOH

end



cookbook_file "/etc/libnss-ldap.conf" do

source "libnss-ldap.conf"

mode 0644

owner "root"

group "root"

end



cookbook_file "/etc/pam_ldap.conf" do

source "pam_ldap.conf"

mode 0644

owner "root"

group "root"

end



cookbook_file "/etc/nsswitch.conf" do

source "nsswitch.conf"

mode 0644

owner "root"

group "root"

notifies :restart, resources(:service => "nscd"), :immediately

end



%w{ account auth password session }.each do |pam|

cookbook_file "/etc/pam.d/common-#{pam}" do

source "common-#{pam}"

mode 0644

owner "root"

group "root"

notifies :restart, resources(:service => "ssh"), :delayed

end

end







chefを使用して、すでに構成されているzabbix-agentdとそれに設定されたZTCスクリプトのセットも各仮想マシンにインストールします。 自動検出によってzabbix仮想マシンを起動した後、それをプールに追加し、必要なテンプレートをすぐに添付します。 zabbixコントロールパネルもLDAPに接続されています。 ここで行わなければならなかった唯一のことは、LDAPとzabbixユーザーの自動同期のためのスクリプトでした。監視はユーザー自身を作成することはできません。



現在、公開sshキーは中央リポジトリに保存されているため、このスキームにより、GITをGITプロセスに簡単かつ透過的にユーザーに統合することも可能になりました。



Provmoxコントロールパネル、openvz、LVMストレージ用に事前構成されたテンプレートにより、新しい仮想マシンの展開を簡素化および高速化できました。 割り当てられたすべてのリソースを制御し、負荷がかかったときにすべてが予測可能かつ安定して動作します。 このような仮想マシンを実装および保守するコストは、他の仮想化システムと比較して非常に低いです。



これはテストと開発の環境であり、重要なデータやバックアップの必要がない、完全に外部の環境に閉じられていることを思い出させてください。 したがって、このスキームでは、安全性とフォールトトレランスの点で多くの非常に重要なポイントが失われました。 このスキームでの運用では、証明書、TLS、SSL、パスワードポリシー、さまざまなPAM保護メカニズム、sudo、およびファイアウォールルールとグループポリシーについて考慮する必要があります。



その他のリンク:

インターネットプロジェクトのLDAP

Chefまたは1000台のサーバーを管理する方法

OpenVZを使用したLinux仮想化

Zabbixユニバーサル監視システム-はじめに



All Articles