Fat*_*ari 7 regex apache ansible
我正在尝试使用Ansible编辑apache.conf.这是我的conf的一部分:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
AllowOverride All
# Require all granted
#</Directory>
Run Code Online (Sandbox Code Playgroud)
我想改变这个块
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
成
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
将AllowOverride从None设置为All.我正在使用这个安塞的任务
- name: change htaccess support
lineinfile:
dest: /etc/apache2/apache2.conf
regexp: '\s<Directory /var/www/>\n\sOptions Indexes FollowSymLinks\n\sAllowOverride'
line: "AllowOverride All"
tags:
- test
Run Code Online (Sandbox Code Playgroud)
但是,AllowOverride All始终添加到文件末尾.什么是正确的正则表达式模式来完成这项工作.我不使用ansible模板因为我只改变了一行.
我设法通过略微提高@ mattyoung-redhatmatt的答案来做到这一点.事实证明,replace模块处理多行正则表达式和反向引用就好了:
- name: AllowOverride all
replace:
dest=/etc/apache2/apache2.conf
regexp='(<[dD]irectory /var/www/>[^<]*)AllowOverride None'
replace='\1AllowOverride All'
backup=yes
sudo: yes
notify:
- restart apache
Run Code Online (Sandbox Code Playgroud)
Ansible 的lineinfile模块正是这样做的,它处理文件中的单行,并且不支持多行。
这给您留下了几个选项来解决这个问题。
与 lineinfile 周围最棘手的事情一样,您最好用模板替换它。
或者,您可以尝试使用blockinfile角色首先删除 ( state=absent) 以下块:
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Run Code Online (Sandbox Code Playgroud)
之后<Directory /var/www/>插入 ( state=present) 以下块:
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Run Code Online (Sandbox Code Playgroud)
后<Directory /var/www/>。
| 归档时间: |
|
| 查看次数: |
10747 次 |
| 最近记录: |