Я новичок в chef
и начинаю изучать канаты и хочу знать, возможно ли ниже и как его достичь. Я иду от кого-то, кто использовал ansible
последние 2 года.Loop through array in Chef Template (ERB)
Я хочу знать, как манипулировать .erb
шаблоны
ansible code
- 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
- vhosts.conf.j2
(jinja template
)
{% 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 %}
Из приведенного выше кода, вы можете увидеть, что я Промежут через apache_vhosts
в .yml
и используя внутренние объекты при создании шаблона. Возможно ли это с .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'. То же самое способ обучения 'ansible' не научит вас, как использовать шаблоны' jinja2', а не ваши знания о 'python' в дополнение к документам механизма шаблонов –