回答:
@nonsenzの発言に加えて、puphpet.comのプロビジョニングスクリプトを使用する場合は、bashファイルを/ puphpet / files / startup-alwaysフォルダーに追加して、そこにすべてのコマンドを配置できます。vagrantが起動またはリロードすると、スクリプトが呼び出されます。
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
if [ 'sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf' ]; then
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
fi
さらに良い(よりきれいな出力を可能にするため)
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
sudo service mysql stop
sudo service mysql start
これにより、自分のIDE(PhpStorm)をvagrant経由でゲストマシンのデータベースに直接接続できました。もちろん、ゲストmysqlユーザーに '%'へのアクセスを許可し、ゲストのポート3306をホストのポート(3309)に転送しました。アクセス許可はこのファイルでも行うことができます。
さらに良い(mysqlはアドインを実行します)
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
echo "Assigning mysql user user1 access on %."
sudo mysql -u user1 -pyourpassword --execute "GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY 'yourpassword' with GRANT OPTION; FLUSH PRIVILEGES;" yourdatabase
echo "Assigned mysql user user1 access on all hosts."
sudo service mysql stop
sudo service mysql start
augtool -s set '/files/etc/mysql/my.cnf/target[ . = "mysqld"]/bind-address 0.0.0.0'
Ubuntuパッケージは「augeas-tools」と呼ばれます
-s
と、「更新を自動保存」です。 set
Augeasがこの行でこれを実行するアクションです。 /files/etc/mysql/my.cnf
Augestが機能する部分/ファイル(/ etcのすべてをロードします)。 /target
デコードされた値の(?array?)です。 [ . = "mysqld"]
「mysqld」という値を持つターゲット番号を選択します。 bind-address
「mysqld」セクションのbind-addressフィールドであり、スペースの後0.0.0.0
の値は、設定される値です。
Augeasを探しているようですね。
プロジェクトページはこちらですと、いくつかのドキュメントと例がここにあります。MySQLはストックレンズページに含まれていますが、残念ながらドキュメントは404ページにリンクしています。
Puppet内での使用例もいくつかあります。
sudo
すると「申し訳ありませんが、ttyが必要です」というエラーが発生し(ステートメントから「sudo」を削除するだけで修正されます)、MySQLサービスが使用して再起動されました/etc/init.d/mysqld stop
と/etc/init.d/mysqld start
。これらはどちらも、スクリプトのエラーではなく、単にCentOSの癖である可能性があります。