私はchef
に新しく、ロープを学び始め、以下のことが可能かどうか、また達成する方法を知りたい。私は過去2年間、ansible
を使ってきた人から来ています。あなたはその私を見ることができ、vhosts.conf.j2
(jinja template
)上記のコードからシェフテンプレート(ERB)のループスルー配列
{% for vhost in apache_vhosts %}
<VirtualHost *:{{ apache_listen_port_http }}>
ServerName {{ vhost.servername }}
{% if vhost.redirect_https is defined and vhost.redirect_https == true %}
Redirect 301/https://{{ vhost.servername }}/
{% else %}
DocumentRoot {{ vhost.documentroot }}
{% if vhost.serveradmin is defined %}
ServerAdmin {{ vhost.serveradmin }}
{% endif %}
{% if vhost.symfony_dev is defined %}
DirectoryIndex app_dev.php
<Directory "{{ vhost.documentroot }}">
AllowOverride None
Options -Indexes +FollowSymLinks
Order allow,deny
Allow from all
# Symfony2 rewriting rules
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app_dev.php [L]
</Directory>
{% elif vhost.symfony_prod is defined %}
DirectoryIndex app.php
<Directory "{{ vhost.documentroot }}">
AllowOverride None
Options -Indexes +FollowSymLinks
Order allow,deny
Allow from all
# Symfony2 rewriting rules
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app.php [L]
</Directory>
{% else %}
<Directory "{{ vhost.documentroot }}">
AllowOverride All
Options -Indexes +FollowSymLinks
Order allow,deny
Allow from all
</Directory>
{% endif %}
{% if vhost.extra_parameters is defined %}
{{ vhost.extra_parameters }}
{% endif %}
{% endif %}
</VirtualHost>
{% endfor %}
からvarible.yml
apache_vhosts:
- servername: "{{ enterprise }}.test.io"
serveralias: "{{ inventory_hostname }}"
documentroot: "/var/www/test/current/web"
symfony_prod: true
redirect_https: true
- servername: "{{ enterprise }}forms.test.io"
documentroot: "/var/www/test/current/web"
symfony_form: true
redirect_https: true
- servername: "{{ enterprise }}trk.test.io"
documentroot: "/var/www/test/current/web"
symfony_track: true
redirect_https: true
ansible code
-
は私が.erb
テンプレート
ansible code
を操作する方法を知りたいですのapache_vhosts
をループしていますファイルを作成し、内部オブジェクトを使用してテンプレートを作成します。これは.erb
で可能ですか?.rb
属性ファイルでこれをどのように複製するのですか?
現在、私には以下のものがあります。
chef code
からdefault.rb
# Apache attributes
default["altostack"]["apache_conf_path"] = "/etc/apache2/sites-enabled"
default["altostack"]["apache_redirect_https"] = false
default["altostack"]["apache_servername"] = "test.test.io"
default["altostack"]["apache_documentroot"] = "/var/www/test/current/web"
default["altostack"]["apache_ssl_crt_dir"] = case node.environment
when '_default'
default["altostack"]["apache_ssl_crt_dir"] = "/etc/apache2/ssl/"
end
ありがとう、私は彼らが非常に圧倒的であると信じているので、コミュニティの料理本に重点を置いて避けています。私は彼らのパターンと構造を見なければなりません。私の目標は、構文を理解し、テンプレートを作成して属性を操作できるようにすることで、自分の料理本を作ったときに私は驚くことはありません。 –
@ shadyこのケースでは、http://learn.chef.ioにアクセスすることを強くお勧めします;) – Tensibai
これは 'ruby'言語と' erb'エンジンを知ることともっと関係していると思います。同じテンプレートエンジンのドキュメントに加えて、 'python'の知識だけでなく、' jinja2'テンプレートの使い方を教えてくれません –