ansible常用模块之 -- blockinfile模块 -- 插入/更新/删除由标记线包围的文本块

ansible常用模块之 -- blockinfile模块 -- 插入/更新/删除由标记线包围的文本块

blockinfile模块 – 插入/更新/删除由标记线包围的文本块

一、摘要

  • 这个模块将插入/更新/删除由可定制标记行包围的多行文本块。

二、参数

参数选项/默认值描述
attributes
string
生成的文件或目录应该具有的属性。
要获得支持的标志,请查看目标系统上的chatr手册页。
该字符串应该包含与lsattr显示的相同顺序的属性。
= 操作符为默认值,否则需要在字符串中包含 + 或 - 操作符
backup
boolean
· no ←
· yes
创建一个包含时间戳信息的备份文件,以便在不正确地损坏原始文件时可以恢复原始文件。
block
string
Default:“”要插入标记线内的文本。
如果它缺失或为空字符串,块将被删除,就像 state 被指定为 absent 一样。
create
boolean
· no ←
· yes
如果文件不存在,则创建一个新文件。
group
string
应该拥有该文件/目录的组的名称,将提供给chown。
insertafter
string
· EOF ←
· *regex*
如果指定了,则块将在指定正则表达式的最后一次匹配之后插入。
一个特殊值可用; EOF 用于在文件末尾插入块。
如果指定的正则表达式没有匹配项,则将使用 EOF 代替。
insertbefore
string
· BOF ←
· *regex*
如果指定了,则块将插入到指定正则表达式的最后一个匹配之前。
一个特殊值可用; BOF用于在文件的开头插入块。
如果指定的正则表达式没有匹配项,则块将插入到文件末尾。
marker
string
Default:“#{mark} ANSIBLE MANAGED BLOCK”标记线模板。
{mark}将被替换为marker_begin (default=“BEGIN”)和marker_end (default=“END”)中的值。
使用不带{mark}变量的自定义标记可能会导致在后续的剧本运行中重复插入块。
marker_begin
string
Default:“BEGIN”这将被插入到开始的ansible块标记的{mark}处。
marker_end
string
Default:“END”这将被插入到结束ansible块标记的{mark}处。
mode
string
生成的文件或目录应该具有的权限。
对于那些习惯了/usr/bin/chmod的人来说,记住模式实际上是八进制数。你必须添加一个前导零,这样Ansible的YAML解析器就知道这是一个八进制数(比如0644或01777),或者引用它(比如’644’或’1777’),这样Ansible就可以接收到一个字符串,并可以进行自己的从字符串到数字的转换。
给Ansible一个不遵循这些规则的数字将会得到一个十进制数,这将会产生意想不到的结果。
在Ansible 1.8中,模式可以指定为符号模式(例如,u+rwx或u=rw)
owner
string
应该拥有该文件/目录的用户名,将提供给chown。
path
path
required
要修改的文件。
selevel
string
Default:“s0”SELinux文件上下文的 level 部分。
这是MLS/MCS属性,有时称为范围。
当设置为_default时,它将使用策略的级别部分(如果可用的话)。
serole
string
SELinux文件上下文的角色部分。
当设置为_default时,它将使用策略的角色部分(如果可用的话)。
setype
string
SELinux文件上下文的类型部分。
当设置为_default时,它将使用策略的类型部分(如果可用的话)。
seuser
string
SELinux文件上下文的用户部分。
默认情况下,它使用系统策略。
当设置为_default时,它将使用策略的用户部分(如果可用的话)。
state
string
· present ←
· absent
块是否应该在那里。
unsafe_writes
boolean
· no ←
· yes
影响何时使用原子操作以防止数据损坏或从目标文件读取不一致。
默认情况下,该模块使用原子操作来防止数据损坏或从目标文件读取不一致,但有时系统的配置或破坏会防止这种情况发生。一个例子是docker装载的文件,它不能从容器内部原子地更新,只能以不安全的方式写入。
这个选项允许Ansible在原子操作失败时退回到不安全的方法来更新文件(然而,它并不强制Ansible执行
validate
string
复制到位之前要运行的验证命令。
要验证的文件的路径是通过’%s '传入的,它必须像下面的示例中一样显示。
该命令是安全传递的,因此shell功能如扩展和管道将不起作用

三、示例

# 在/etc/ssh/sshd_config中插入/更新“Match User”配置块
- name: Insert/Update "Match User" configuration block in /etc/ssh/sshd_config
  blockinfile:
    path: /etc/ssh/sshd_config
    block: |
      Match User ansible-agent
      PasswordAuthentication no

# 在/etc/network/interfaces中插入/更新eth0配置节
# (最好将文件复制到/etc/network/interfaces.d/)
- name: Insert/Update eth0 configuration stanza in /etc/network/interfaces
        (it might be better to copy files into /etc/network/interfaces.d/)
  blockinfile:
    path: /etc/network/interfaces
    block: |
      iface eth0 inet static
          address 192.0.2.23
          netmask 255.255.255.0

# 使用本地文件插入/更新配置并验证它
- name: Insert/Update configuration using a local file and validate it
  blockinfile:
    block: "{{ lookup('file', './local/sshd_config') }}"
    dest: /etc/ssh/sshd_config
    backup: yes
    validate: /usr/sbin/sshd -T -f %s

# 在<body>行后插入/更新自定义标记包围的HTML
- name: Insert/Update HTML surrounded by custom markers after <body> line
  blockinfile:
    path: /var/www/html/index.html
    marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"
    insertafter: "<body>"
    block: |
      <h1>Welcome to {{ ansible_hostname }}</h1>
      <p>Last updated on {{ ansible_date_time.iso8601 }}</p>

# 删除HTML和周围的标记
- name: Remove HTML as well as surrounding markers
  blockinfile:
    path: /var/www/html/index.html
    marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"
    block: ""

# 添加映射到/etc/hosts
- name: Add mappings to /etc/hosts
  blockinfile:
    path: /etc/hosts
    block: |
      {{ 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 }

官方文档:https://docs.ansible.com/ansible/2.9/modules/blockinfile_module.html#blockinfile-module

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值