4

現在、サーバーのデプロイ後にアプリケーションの依存関係をインストールするために、いくつかの基本的な Puppet マニフェストとモジュールを開発しています。それは基本的なもののスイートです: -

  • OS -> Ubuntu 14.04 LTS
  • ニンクス
  • PHP5-FPM
  • MySQL

シンプルですね。

ほとんどの場合、すべてがうまくいっています。Augeas を使用して設定ファイルをカスタム設定項目で更新する機能に出くわすまで。次のように、PHP構成アイテムを問題なく設定しました。

augeas { 'php.ini':
    require => [
        Package['php5-fpm'],
        Package['libaugeas-ruby'],
    ],
    notify => Service['php5-fpm'],
    context => '/files/etc/php5/fpm/php.ini',
    changes => [
        'set PHP/cgi.fix_pathinfo 0',
    ],
}

これはうまくいきます。まったく問題ありません。

ただし、MySQL構成ファイルにたどり着きました。次を使用しています(ほとんどコピーアンドペーストの仕事でした)

augeas { 'my.cnf':
    require => [
        Package['mysql-server'],
        Package['libaugeas-ruby'],
    ],
    notify => Service['mysql'],
    context => '/files/etc/mysql/my.cnf',
    changes => [
        'set mysqld/bind-address 0.0.0.0',
    ],
}

残念ながら、これはうまくいきません。同梱のレンズに関する augeas のドキュメントを確認しましたが、問題はありませんでした。以下は、Puppet apply コマンドからの最初の出力です。

Error: /Stage[main]/Mysql/Augeas[my.cnf]: Could not evaluate: Save failed with return code false, see debug

もちろん、次の論理的なステップは、デバッグ情報を確認することでした。その中には次の情報がありました。

Debug: Augeas[my.cnf](provider=augeas): sending command 'set' with params ["/files/etc/mysql/my.cnf/mysqld/bind-address", "0.0.0.0"]
Debug: Augeas[my.cnf](provider=augeas): Put failed on one or more files, output from /augeas//error:
Debug: Augeas[my.cnf](provider=augeas): /augeas/files/etc/mysql/my.cnf/error = put_failed
Debug: Augeas[my.cnf](provider=augeas): /augeas/files/etc/mysql/my.cnf/error/path = /files/etc/mysql/my.cnf
Debug: Augeas[my.cnf](provider=augeas): /augeas/files/etc/mysql/my.cnf/error/lens = /usr/share/augeas/lenses/dist/mysql.aug:39.13-.60:
Debug: Augeas[my.cnf](provider=augeas): /augeas/files/etc/mysql/my.cnf/error/message = Failed to match
4

1 に答える 1

1

よし、なんとか何かを起こせた。しかし、おそらく何が起こっているのかを完全には理解していません。

上記の質問をする前に、利用可能なストック レンズを確認したところ、http://augeas.net/stock_lenses.htmlのリストに PHP レンズと MySQL レンズの両方が表示されていました。

どちらのリンクも機能せず、ドキュメントに移動する必要があります。したがって、PHP レンズ'set section/setting value'が何らかの方法で機能することを知っていたので、MySQL レンズでも同じであると想定していました。

正確にはそうではありません。次の構文は私にとってはうまくいきました。

augeas { 'my.cnf':
    require => [
        Package['mysql-server'],
        Package['libaugeas-ruby'],
    ],
    notify => Service['mysql'],
    context => '/files/etc/mysql/my.cnf',
    changes => [
        "set target[.='mysqld']/bind-address 0.0.0.0",
    ],
}

次の 2 つのリソースは、私が情報を見つけた場所です。誰かが私に指摘できる他のドキュメントを持っているなら、私は感謝しています。

これにより、構文がおそらくどうあるべきかについてのアイデアが得られました:

そして、このスクリプトの 62 ~ 65 行目でそれが再確認されました

于 2015-06-04T08:15:48.653 に答える