Eu tenho um manual que executa uma tarefa personalizada para configurar um nginx vhost:
tasks:
- include: tasks/tweaks.yml
Neste manual, var_files
são usados os seguintes:
vars_files:
- ../config.yml
Em config.yml
Eu tenho a seguinte lista que contém as informações do vhost:
nginx_hosts_custom:
- server_name: "mytest.dev"
root: /drupal/www/mytest
is_php: true
common_config: true
remote_host: "12.34.56.78"
remote_root: "/web/ubuntu/www/mytest/public"
pem: "mytest.pem"
Dentro tweaks.yml
tenho o seguinte:
- name: "Extra Nginx hosts for the Drupal sites"
template:
src: ../templates/nginx-vhost.conf.j2
dest: "{{ nginx_vhost_path }}/{{ item.server_name.split(' ')[0] }}.conf"
force: yes
owner: root
group: root
mode: 0644
with_items: nginx_hosts_custom
notify: restart nginx
when: drupalvm_webserver == 'nginx'
Isso costumava funcionar perfeitamente, mas agora recebo o seguinte erro ao executar a provisão:
fatal: [owenvm]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'unicode object' has no attribute 'server_name'\n\nThe error appears to have been in /tasks/tweaks.yml': line 20, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: \"Extra Nginx hosts for the Drupal sites\"\n ^ here\n"}
Portanto, parece que a variável server_name
não está sendo selecionada - alguém pode sugerir uma correção?
Variáveis vazias em
with_items
, comowith_items: nginx_hosts_custom
estão obsoletas desde o Ansible 2.0 e não são totalmente suportadas desde 2.2.Você deveria usar
with_items: "{{ nginx_hosts_custom }}"
Dentro
tweaks.yml
Além disso, o modelo geralmente sabe procurar
../templates
(pelo menos ao usar funções). Tem certeza de que precisa fornecer um caminho relativo? Manter o nome do arquivo do modelo pode ser suficiente.Dependendo da versão do Ansible,
with_items
pode ser necessário definir como'{{ nginx_host_custom }}'
. Embora de acordo com sua mensagem de erro, este não seja o nosso caso.Também recomendo garantir que
nginx_hosts_custom
esteja definido em suawhen
cláusula, como: