在http {}内的nginx配置文件ansible中插入行

时间:2016-05-09 07:12:31

标签: nginx centos ansible

我正在写一个ansible脚本来在centos 7中部署django。我的问题在于nginx。

我创建了/ etc / nginx / sites-available和/ etc / nginx / sites-enabled目录,如果http {}阻止,则必须在底部的/etc/nginx/nginx.conf文件中包含站点。

在创建相应目录并复制配置文件后,如何在ansible脚本中的http {}块内插入行include /etc/nginx/sites-available/*.conf

输出应为

http {
    .....
    .....

    server {
        .......
    }

    include /etc/nginx/sites-available/*.conf;
}

2 个答案:

答案 0 :(得分:2)

不要使用lineinfile你会在某些时候后悔。每个人都这样。

您应该创建一个模板,然后使用ansible加载它。

#file: templates/nginx.conf.j2
http {
    .....
    .....

    server {
        .......
    }

    include /etc/nginx/sites-available/*.conf;
}

#file: main.yml
- name: "Load nginx config"
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf

如果您需要更改配置文件中的任何内容,这将使您的配置管理变得更加容易。

文档:Template Module

答案 1 :(得分:1)

您可以使用lineinfile module。这样的事情应该有效:

- lineinfile: dest=/etc/nginx/nginx.conf regexp="^include /etc/nginx/sites-available/*.conf;" insertbefore="server {" line="include /etc/nginx/sites-available/*.conf;"

这将在服务器块之前插入行。你可以使用insertbefore和insert after以及不同的正则表达式。