当前位置: 首页 > wzjs >正文

邀约网站怎么做请柬详情页设计思路怎么写

邀约网站怎么做请柬,详情页设计思路怎么写,网站建设代码模板,xampp的Wordpress公网修改文件单行内容 ansible.builtin.lineinfile 可以按行修改文件内容,一次修改一行,支持正则表达式。 选项名 类型 默认值 描述 attributesstrnull 设置目标文件的 Linux 文件系统属性(attribute bits),作用类似于…

修改文件单行内容

ansible.builtin.lineinfile 可以按行修改文件内容,一次修改一行,支持正则表达式。

选项名

类型

默认值

描述

attributesstrnull

设置目标文件的 Linux 文件系统属性(attribute bits),作用类似于 chattr 命令。例如:+i 设置为不可变,+a 设置为只能追加写入等。

backrefsboolfalse

使用 regexp 和 line 时,是否启用后向引用替换。(使用正则分组时需要设置为 true)。

backupboolfalse

修改文件前是否创建备份。备份文件将带有时间戳后缀。

createboolfalse

文件不存在时是否创建新文件。

firstmatchboolfalse

如果为 true,当 regexp 匹配多行时,只对第一行执行操作。

groupstrnull

设置文件的属组。

insertafterstrEOF

在匹配到的行之后插入。如果为 EOF,则追加到末尾。

insertbeforestrnull

在匹配到的行之前插入。如果为 BOF,则追加到开头。

linestrnull

要插入或替换的行内容。

moderawnull

设置文件权限(八进制形式,或 preserve 保留现有)。

others

ansible.builtin.file

 模块接受的所有参数在这里也同样有效。

ownerstrnull

设置文件的属主。

pathpath

必需项

,目标文件的完整路径。

regexpstrnull

匹配要替换行的正则表达式。

search_stringstrnull

替代 regexp 的简易字符串匹配(不支持正则)。

selevelstrnull

SELinux context 中的 level。

serolestrnull

SELinux context 中的 role。

setypestrnull

SELinux context 中的 type。

seuserstrnull

SELinux context 中的 user。

statestrpresent

设置为 present 插入或修改行,或 absent 删除匹配行。

unsafe_writesboolfalse

是否禁用临时文件写入机制(兼容某些挂载类型如 NFS)。

validatestrnull

在写入前校验文件内容的命令(如 nginx -t -c %s)。

常用选项:

选项名

类型

默认值

描述

backrefsboolfalse

使用 regexp 和 line 时,是否启用后向引用替换。(使用正则分组时需要设置为 true)。

backupboolfalse

修改文件前是否创建备份。备份文件将带有时间戳后缀。

createboolfalse

文件不存在时是否创建新文件。

ownerstrnull

设置文件的属主。

groupstrnull

设置文件的属组。

insertafterstrEOF

在匹配到的行之后插入。如果为 EOF,则追加到末尾。

insertbeforestrnull

在匹配到的行之前插入。如果为 BOF,则追加到开头。

linestrnull

要插入或替换的行内容。

moderawnull

设置文件权限(八进制形式,或 preserve 保留现有)。

others

ansible.builtin.file

 模块接受的所有参数在这里也同样有效。

pathpath

必需项

,目标文件的完整路径。

regexpstrnull

匹配要替换行的正则表达式。

search_stringstrnull

替代 regexp 的简易字符串匹配(不支持正则)。

statestrpresent

设置为 present 插入或修改行,或 absent 删除匹配行。

validatestrnull

在写入前校验文件内容的命令(如 nginx -t -c %s)。

- name: Ensure SELinux is set to enforcing modeansible.builtin.lineinfile:path: /etc/selinux/configregexp: '^SELINUX='line: SELINUX=enforcing- name: Make sure group wheel is not in the sudoers configurationansible.builtin.lineinfile:path: /etc/sudoersstate: absentregexp: '^%wheel'- name: Replace a localhost entry with our ownansible.builtin.lineinfile:path: /etc/hostsregexp: '^127\.0\.0\.1'line: 127.0.0.1 localhostowner: rootgroup: rootmode: '0644'- name: Ensure the default Apache port is 8080ansible.builtin.lineinfile:path: /etc/httpd/conf/httpd.confregexp: '^Listen 'insertafter: '^#Listen 'line: Listen 8080- name: Add a line to a file if the file does not exist, without passing regexpansible.builtin.lineinfile:path: /tmp/testfileline: 192.168.1.99 foo.lab.net foocreate: yes- name: Ensure the JBoss memory settings are exactly as neededansible.builtin.lineinfile:path: /opt/jboss-as/bin/standalone.confregexp: '^(.*)Xms(\d+)m(.*)$'line: '\1Xms${xms}m\3'backrefs: yes- name: Validate the sudoers file before savingansible.builtin.lineinfile:path: /etc/sudoersstate: presentregexp: '^%ADMIN ALL='line: '%ADMIN ALL=(ALL) NOPASSWD: ALL'validate: /usr/sbin/visudo -cf %s

其他的选项都好理解,一眼就能看出来,insertafter 和 insertbefore 我解释一下,上边有个例子用了 insertafter,可以看到同时也使用了 regexp,加了这个和不加是有区别的,可以看下边的例子。

有个文件,内容如下:

[root@awx-1 ansible]# cat /tmp/test
#test
#test
Listen=80
#test
#test
#test

playbook 内容如下:

---
- name: testhosts: localhosttasks:- name: Lineinfile testansible.builtin.lineinfile:line: "Listen=8080"#regexp: "^Listen="insertafter: "^#Listen="path: /tmp/test

playbook 想实现的是在 #Listen= 后添加 Listen=8080,但是有个特殊情况,文件可能不包含 #Listen=regexp 被我注释了,我们看下没有 regexp 的结果:

[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
Listen=80
#test
#test
#test
Listen=8080

可以看到,结果是在最后一行添加了 Listen=8080,恢复 /tmp/test,在演示下加了 regexp 的结果:

[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
Listen=8080
#test
#test
#test

可以看到这回是将已有的 Listen=80 修改为 Listen=8080

也就是说 regexp 和 insertafter 或 insertbefore组合使用时,能够保证文件最后只有一个 Listen 存在。

最后做两个测试:

第一个

[root@awx-1 ansible]# cat /tmp/test
#test
#test
Listen=80
#Listen=80
#test
#test
#test
[root@awx-1 ansible]# cat test.yml
---
- name: testhosts: localhosttasks:- name: Lineinfile testansible.builtin.lineinfile:line: "Listen=8080"#regexp: "^Listen="insertafter: "^#Listen="path: /tmp/test
[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
Listen=80
#Listen=80
Listen=8080
#test
#test
#test

第二个:

[root@awx-1 ansible]# cat /tmp/test
#test
#test
#test
#test
#test
[root@awx-1 ansible]# cat test.yml
---
- name: testhosts: localhosttasks:- name: Lineinfile testansible.builtin.lineinfile:line: "Listen=8080"regexp: "^Listen="insertbefore: "^#Listen="path: /tmp/test
[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
#test
#test
#test
Listen=8080

第二个例子里,我特意使用了 insertbefore 可以看到在没有任何匹配时,只会在文件的最后进行追加。

最后总结下,regexp 跟 insertafter 或 insertbefore 进行匹配时,情况如下:

  • regexp 优先匹配,会修改 regexp 匹配的行

  • regexp 没有匹配到时,按照 insertafter 或 insertbefore 的逻辑进行匹配和修改

  • 都没有匹配到时,在文件的最后一行追加

修改文件多行内容

ansible.builtin.blockinfile 用于修改文件的多行内容。

说是修改,多数时候还是添加新的多行内容,这里强调一点,ansible.builtin.blockinfile 通过标记来查找文件中已添加的多行内容。

参数名

类型

默认值

描述

append_newlineboolfalse

如果插入 block 后,新末行没有换行符,则自动加一行换行,保持标准文本格式

attributesstrnull

用于设置文件的高级属性(extended attributes),如 i(不可变)、a(只能追加)。相当于执行 chattr,仅在支持该功能的文件系统(如 ext4)中有效

backupboolfalse

在修改文件前创建备份。

blockstrnull

要插入的文本块内容(多行字符串)

createboolfalse

如果文件不存在则创建

groupstrnull

设置文件的所属组

insertafterstrEOF

插入内容到匹配行之后,或 EOF 表示文件结尾

insertbeforestrnull

插入内容到匹配行之前,或 BOF 表示文件开头

markerstr# {mark} ANSIBLE MANAGED BLOCK

控制 block 标记的格式,{mark} 会被替换为 BEGIN 或 END

marker_beginstrBEGIN

自定义起始标记,用于替代 {mark}

marker_endstrEND

自定义结束标记,用于替代 {mark}

modestrnull

设置文件权限(如 0644

ownerstrnull

设置文件所有者

pathstrnull

目标文件路径

prepend_newlineboolfalse

是否在 block 前添加换行,防止与上一行粘连

selevelstrnull

SELinux 安全级别

serolestrnull

SELinux 角色

setypestrnull

SELinux 类型

seuserstrnull

SELinux 用户

statestrpresent

是否确保 block 存在或被删除(present/absent

unsafe_writesboolfalse

绕过临时文件机制直接写入文件(有风险)

validatestrnull

应用更改前对文件进行语法验证(如 nginx -t -c %s

常用选项:

参数名

类型

默认值

描述

append_newlineboolfalse

如果插入 block 后,新末行没有换行符,则自动加一行换行,保持标准文本格式

backupboolfalse

在修改文件前创建备份。

blockstrnull

要插入的文本块内容(多行字符串)

createboolfalse

如果文件不存在则创建

groupstrnull

设置文件的所属组

insertafterstrEOF

插入内容到匹配行之后,或 EOF 表示文件结尾

insertbeforestrnull

插入内容到匹配行之前,或 BOF 表示文件开头

markerstr# {mark} ANSIBLE MANAGED BLOCK

控制 block 标记的格式,{mark} 会被替换为 BEGIN 或 END(注意标记里必须含有 {mark} 字段)

marker_beginstrBEGIN

自定义起始标记,用于替代 {mark}

marker_endstrEND

自定义结束标记,用于替代 {mark}

modestrnull

设置文件权限(如 0644

ownerstrnull

设置文件所有者

pathstrnull

目标文件路径

prepend_newlineboolfalse

是否在 block 前添加换行,防止与上一行粘连

statestrpresent

是否确保 block 存在或被删除(present/absent

validatestrnull

应用更改前对文件进行语法验证(如 nginx -t -c %s

- name: Insert/Update "Match User" configuration block in /etc/ssh/sshd_config prepending and appending a new lineansible.builtin.blockinfile:path: /etc/ssh/sshd_configappend_newline: trueprepend_newline: trueblock: |Match User ansible-agentPasswordAuthentication no- name: Insert/Update eth0 configuration stanza in /etc/network/interfaces(it might be better to copy files into /etc/network/interfaces.d/)ansible.builtin.blockinfile:path: /etc/network/interfacesblock: |iface eth0 inet staticaddress 192.0.2.23netmask 255.255.255.0- name: Insert/Update configuration using a local file and validate itansible.builtin.blockinfile:block: "{{ lookup('ansible.builtin.file', './local/sshd_config') }}"path: /etc/ssh/sshd_configbackup: yesvalidate: /usr/sbin/sshd -T -f %s- name: Insert/Update HTML surrounded by custom markers after <body> lineansible.builtin.blockinfile:path: /var/www/html/index.htmlmarker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"insertafter: "<body>"block: |<h1>Welcome to {{ ansible_hostname }}</h1><p>Last updated on {{ ansible_date_time.iso8601 }}</p>- name: Remove HTML as well as surrounding markersansible.builtin.blockinfile:path: /var/www/html/index.htmlmarker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"block: ""- name: Add mappings to /etc/hostsansible.builtin.blockinfile:path: /etc/hostsblock: |{{ item.ip }} {{ item.name }}marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item.name }}"loop:- { name: host1, ip: 10.10.1.10 }- { name: host2, ip: 10.10.1.11 }- { name: host3, ip: 10.10.1.12 }

这里举个例子来验证 ansible.builtin.blockinfile 是如何确认文本块的:

[root@awx-1 ansible]# cat /tmp/test
#test
#test
#block test
#test
#test
[root@awx-1 ansible]# cat test.yml
---
- name: testhosts: localhosttasks:- name: Lineinfile testansible.builtin.blockinfile:path: /tmp/testappend_newline: trueprepend_newline: trueblock: |address 192.168.1.1netmask 255.255.255.0gateway 192.168.1.254insertafter: "^#block"marker: "# {mark} block test"marker_begin: "one"marker_end: "two"#state: absent
[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
#block test# one block test
address 192.168.1.1netmask 255.255.255.0
gateway 192.168.1.254
# two block test#test
#test[root@awx-1 ansible]# cat test.yml
---
- name: testhosts: localhosttasks:- name: Lineinfile testansible.builtin.blockinfile:path: /tmp/testappend_newline: trueprepend_newline: trueblock: |address 192.168.1.1netmask 255.255.255.0gateway 192.168.1.254insertafter: "^#block"marker: "# {mark} block test"#marker_begin: "one"#marker_end: "two"#state: absent[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
#block test# BEGIN block test
address 192.168.1.1netmask 255.255.255.0
gateway 192.168.1.254
# END block test# one block test
address 192.168.1.1netmask 255.255.255.0
gateway 192.168.1.254
# two block test#test
#test

可以看到添加 block 的时候会在 block 的开头和结尾添加一个标记(标记一般是 # 开头,表示注释),通过 marker_begin 和 marker_end 修改标记的之后,会重新添加 block,由此可见 block 的管理依赖标记,所以在添加新的 block 的时候记得保证标记的唯一性。

还有个小问题,append_newline 可以在 block 的末尾添加一个换行符来和旧内容分隔,但是每次删除重新添加时都会多一个换行符:

[root@awx-1 ansible]# cat /tmp/test
#test
#test
#block test
#test
#test
[root@awx-1 ansible]# cat test.yml
---
- name: testhosts: localhosttasks:- name: Lineinfile testansible.builtin.blockinfile:path: /tmp/testappend_newline: trueprepend_newline: trueblock: |address 192.168.1.1netmask 255.255.255.0insertafter: "^#block"#state: absent
[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
#block test# BEGIN ANSIBLE MANAGED BLOCK
address 192.168.1.1netmask 255.255.255.0
# END ANSIBLE MANAGED BLOCK#test
#test
[root@awx-1 ansible]# cat test.yml
---
- name: testhosts: localhosttasks:- name: Lineinfile testansible.builtin.blockinfile:path: /tmp/testappend_newline: trueprepend_newline: trueblock: |address 192.168.1.1netmask 255.255.255.0insertafter: "^#block"state: absent
[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
#block test#test
#test
[root@awx-1 ansible]# ansible-playbook test.yml
...output omitted...[root@awx-1 ansible]# cat /tmp/test
#test
#test
#block test# BEGIN ANSIBLE MANAGED BLOCK
address 192.168.1.1netmask 255.255.255.0
# END ANSIBLE MANAGED BLOCK#test
#test
http://www.dtcms.com/wzjs/562094.html

相关文章:

  • 做网站记者好吗模板免费下载官网
  • 晋江做网站的公司哪家好品牌查询网站
  • 网站ui案例自助建站信息网
  • 花卉网站建设规划书温州网站建设专业的公司
  • 靖江网站建设制作附近旧模板出售市场
  • 泰州网站快速排名优化太仓网站开发建设服务
  • 购物网站建设包括哪些上海比较好的seo公司
  • 免费的网站建设一般多少钱徐州市小程序制作
  • 网站推广公司就去柚米上海 网站建设 500强
  • 网站建设考察试卷唐山做网站建设公司
  • 男女做污污的网站设计公司室内设计
  • 织梦网站后台如何做百度优化电子商务网站的建设论文
  • 网页设计的三大基本技术搜索网站建设推广优化
  • 长沙便宜做网站深圳网站优化怎么做
  • 设计师常备设计网站大全郑州软件开发培训
  • 金华网站如何制作飞机选做网站
  • 都匀网站简速做网站工作室
  • 专门查企业信息的网站微信里的小程序怎么开店
  • 做百度网站优化多少钱网站建设公司的组织架构
  • 网站备案信息变更如何在本地搭建wordpress
  • 手机网站js电话悬浮如何开通免费网站
  • 音乐资源网站开发网站我优化
  • 国外游戏网站欣赏百度权重站长工具
  • 如何制作公司网站品牌推广网站策划设计
  • 做网站必须租服务器吗网站开发地图
  • 素材天下网站安徽城乡建设 厅网站
  • 微网站站点名称muse转换wordpress
  • 公司官网网站搭建海关数据查询平台官网
  • wordpress tag 数据库宁波seo外包快速推广
  • 网站没建好可以备案吗建筑培训课程有哪些