1

OpsWorks からの Chef 12 のサポートがごく最近リリースされたことを考えると、私が見つけることができるすべてのドキュメントは Chef 11 に関するものです。したがって、これが私の現在のセットアップです: Chef 12 を使用する OpsWorks でのフラスコ + ガンコーン + nginx :

start on runlevel [2345]
stop on runlevel [!2345]

respawn
setuid <%= node['conf-cookbook']['gunicorn_user'] %>
setgid <%= node['conf-cookbook']['gunicorn_group'] %>

env MAIL_SERVER="email-smtp.us-east-1.amazonaws.com"
env MAIL_USERNAME="[redcacted]"
env MAIL_PASSWORD="[redacted]"

chdir <%= node['conf-cookbook']['app_dir'] %>

exec gunicorn --workers 3 --bind unix:<%= node['conf-cookbook']['gunicorn_socket'] %> -m 007 --log-file <%= node['conf-cookbook']['gunicorn_logfile']%> manage:app

テンプレートに機密の環境変数情報を含める必要があります。OpsWorks Chef 12 では、App Data Bag (aws_opsworks_app) を使用して環境変数を指定し、デプロイ レシピのようなものを使用して取得できます (試したことがない - 正しいですか)。

app = search(:aws_opsworks_app).first
app['environment']['MAIL_SERVER']

アプリ データ バッグ環境変数を使用して、テンプレート ファイルで定義したものを置き換えたいのですが、方法がわかりません。誰でも助けることができますか?

ありがとう!!

4

1 に答える 1

1

任意の変数データを Chef テンプレート リソースに渡すことができます。

template '/etc/init/myapp.conf' do
  source 'myapp.conf.erb'
  variables node['conf-cookbook'].merge(app)
end

次に、テンプレートを次のようにします。

start on runlevel [2345]
stop on runlevel [!2345]

respawn
setuid <%= @gunicorn_user %>
setgid <%= @gunicorn_group %>

<%- @environment.each do |key, value| -%>
env <%= key %>="<%= value %>"
<%- end -%>

chdir <%= @app_dir %>

exec gunicorn --workers 3 --bind unix:<%= @gunicorn_socket %> -m 007 --log-file <%= @gunicorn_logfile %> manage:app

また、それぞれ Upstart 構成ファイルと Gunicorn サービスの両方を作成するためのヘルパーが含まれている poise -serviceapplication_pythonのクックブックも確認してください。

于 2016-02-01T22:54:35.327 に答える