web-dev-qa-db-ja.com

UbuntuでのMySQLのスクリプトによるインストール

Ubuntuサーバーの新規インストールからサーバーを構築するスクリプトを作成する必要があります。 ApacheやPHP= MySQLをインストールする必要があります。ここでの唯一の問題は、apt-getを使用してMySQLをインストールするときに、ある時点で、インストールによって次のことを可能にするダイアログが表示されることです。ルートパスワードを入力します。つまり、人間の操作が必要です。

インストール中にこの画面をバイパスし、apt-getを使用してMySQLをインストールしているときに、人間の操作を回避するにはどうすればよいですか?

23
Luke

Debconfデータベースをpreseedする必要があります。これを試す前に、debconfを最初にインストールする必要があります。

Mysqlおよびubuntuのバージョンにより、次の行が変更される可能性があります。

echo mysql-server mysql-server/root_password select PASSWORD | debconf-set-selections
echo mysql-server mysql-server/root_password_again select PASSWORD | debconf-set-selections

たとえば、代わりにこれが必要になった場合:

echo mysql-server-5.0 mysql-server/root_password password PASSWORD | debconf-set-selections
echo mysql-server-5.0 mysql-server/root_password_again password PASSWORD | debconf-set-selections
31
Steven

FAIや類似のシステムは企業環境で役立ちます(そして彼はそれらについて知っておくべきです)、残念ながらそれらは万能薬ではありません。

たとえば、ホストされているレンタルサーバー、信頼できるネットワークや専用ネットワークのない同じ場所に配置されているサーバー、またはEC2のようなクラウド環境などのリモートマシンで作業している場合はどうでしょうかPXEネットブートはそこで機能しません。しかし、人形とシェフは彼を助けることができるより汎用的なツールのようです。

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get install somepackage

Name: ...
Template: ...
Value: ...
Owners: ...
Variables:
   ....
   ....
EOF

すでに設定されているシステムのdebconf DBから正しい値を取得できます。この手法では、すべてを1つのシェルスクリプトに貼り付けることができます。たとえば、/ var/cache/debconf/passwords.datから(Debianの5.0とUbuntuおよびUbuntuの両方で機能することに注意してください。追加のエントリは何も害しません):

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get -qq -y install mysql-server
Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

EOF

別の方法、おそらくより簡単:(debconf-get-selectionsまたはdebconf-showから回答を集め、debconf-utilsパッケージから):

echo "Installing MySQL 5.0.."
Sudo apt-get install -qqy debconf-utils
cat << EOF | debconf-set-selections
mysql-server-5.0 mysql-server/root_password password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password_again password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password seen true
mysql-server-5.0 mysql-server/root_password_again seen true
EOF
/usr/bin/apt-get -y install mysql-server-5.0 mysql-server

Debconf-set-selectionsを実行した後、答えを確認してください:cat /var/cache/debconf/passwords.dat

また、テスト中は、すべてのデータベース(特に、これが保存されているmysqlデータベース)を削除してパージし、破損した場合に備えて構成DBを修正してください。

apt-get --purge remove mysql-server*; /usr/share/debconf/fix_db.pl 

これに関するいくつかのヒント:1)seenフラグと_againパスワードが必要です。 2)パスワードを引用符で囲まないでください。引用されていないMySQLクエリに入るので、必要に応じて自分で引用する必要があります。これはまた、スペースがないことを意味します(私は思う)3)問題が発生した場合は、手動でpreseedを実行してから、MySQLのインストールを直接(通常の端末/ ttyで)実行し、debconfの指示を確認します。そこに警告とエラーが表示されます。

5
Jamieson Becker

再構築が必要なサーバーが複数ある場合は、シェルスクリプトを作成するのではなく、 Puppet のようなものを確認することを強くお勧めします。 Puppetには記述言語があるため、システムをどのように取得するかではなく、システムの外観を定義します。パッケージタイプには、スティーブンの回答でdebconf回答を定義できるresponsefileオプションがあります。

3
David Pashley
1
Jamieson Becker

生の鉄からサーバーのステージングプロセスを自動化することもできますか?

[〜#〜] fai [〜#〜] 現在、Ubuntuを含むほとんどの主要なDebianベースのシステムをネットワークからインストールするためのプロファイルがあります。もちろん、これは単なる人形の答えの拡張であり、debconfの答えの拡張です。

FAIからのステージングとその後のパペットによるサーバーロールへのカスタマイズ(パペットはシステムの適切なツール(Debianのdebconfなど)を自動的に使用します)の組み合わせは、最近ではかなり人気があり、多すぎてはなりませんやりたいことにかなり一致する例を見つけるのは難しい。

ステージング/構成サーバーを使用する主な追加の利点は、構成のバージョン管理を維持するための論理的な場所でもあることです。 git (正しいチェックサムを記録している限り、破損に対して安全であるため、チェックサムによってリポジトリの状態に名前を付けるという利点があります)を使用すると、本当にクリーンで再現可能なプロセスになります。

1
Bernd Haug