2014-01-16 87 views
10

我正在使用Ansible爲Web服務器設置自動配置過程。對於這一點,我有一個包含有虛擬主機字典設置一個數組:如何使用ansible循環包含模板變量的數組?

vhosts: 
    - 
    name: 'vhost1' 
    server_name: 'domain1.com' 
    - 
    name: 'vhost2' 
    server_name: 'domain2.com' 

我準備了一些通用的nginx的虛擬主機配置的模板:

server { 
    listen 80; 
    server_name {{ item.server_name }}; 

    root /home/www/{{ item.name }}/htdocs; 
    index index.php; 

    location/{ 
     try_files $uri $uri/ /index.php?$args; 
    } 
} 

最後,我用下面的任務複製準備模板到目標主機:

- name: Setup vhosts 
    template: src=vhost.j2 dest=/etc/nginx/sites-available/{{ item.name }} 
    with_items: vhosts 

任務按預期重複遍歷vhost變量。不幸的是,Ansible不會將迭代器中的當前項目傳遞給模板,而是模板可以訪問所有當前有效的變量。

有沒有辦法將當前項目從迭代器傳遞到模板?

回答

7

事實證明,上面的代碼工作絕對完美。在我的變量YAML文件中還有另一個問題。