在ansible任务中向文件添加行

Adding line to file in ansible task

我需要将 ansible 任务添加到 /etc/nginx/nginx.conf 两行(用于部署):

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/passenger_free_ruby;

我添加到文件末尾的这一行("include /etc/nginx/passenger.conf;"):

- name: Include passenger in nginx.conf
  become: yes
  lineinfile: dest=/etc/nginx/nginx.conf regexp="^\s*# include \/etc\/nginx\/passenger.conf;" line="        include /etc/nginx/passenger.conf;"

但是这一行必须在 html{...} 块中,而不是在文件末尾。 我该怎么做?

lineinfile 模块有 insertafter 选项。

你可以这样做:

- lineinfile:
    dest: /etc/nginx/nginx.conf
    line: "        include /etc/nginx/passenger.conf;"
    insertafter: '^\s*include /etc/nginx/conf-components.d/\*.conf;\s*$'
    # insertafter: '^http {$'

要在 *.conf 包含之后或 http { 开始标记之后插入您的包含。

如果你有很多相同的块,它就没有用了。但是对于独特的标记来说已经足够了。