在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 {
开始标记之后插入您的包含。
如果你有很多相同的块,它就没有用了。但是对于独特的标记来说已经足够了。
我需要将 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 {
开始标记之后插入您的包含。
如果你有很多相同的块,它就没有用了。但是对于独特的标记来说已经足够了。