小编ref*_*llo的帖子

Ansible:使用正则表达式和反向引用的 lineinfile 模块

我试图确保一行以 'audit=1"' 结尾。之前的状态是:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg00/lv_root rhgb 安静"

之后的状态应该是:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg00/lv_root rhgb 安静审核=1"

使用 Ansible lineinfile 模块,如果缺少该语句,我可以添加该语句,但即使存在,重复运行也会继续附加“audit=1”。我一直在使用正则表达式和否定前瞻断言,只是无法获得语法正确。

这是我的示例游戏:

  - name: grub - adjust
    lineinfile:
      path: /home/vwadmin/grub-test
      regexp: '(GRUB_CMDLINE_LINUX=.*)"(?!audit=1")'
      line: '\1 audit=1"'
      backrefs: yes
      state: present
Run Code Online (Sandbox Code Playgroud)

编辑:使用和平主义者的建议我有一个可行的解决方案。确认添加我的audit=1语句(如果丢失),如果存在则不执行任何操作。

  - name: grub - check
    shell: grep -c 'audit' /etc/default/grub
    register: grub_file
    ignore_errors: true

  - name: grub - adjust
    lineinfile:
      path: /etc/default/grub
      regexp: '(GRUB_CMDLINE_LINUX=.*)"'
      line: '\1 audit=1"'
      backrefs: yes
      state: present
    when: grub_file.stdout == "0"
Run Code Online (Sandbox Code Playgroud)

注意:我情不自禁地感觉到,如果没有预先步骤,我就无法让它工作,并且它不能与 check_mode 一起正常工作的原因是,在这种情况下,负前瞻没有正确定义。据我了解,当否定前瞻成功时,正则表达式匹配应该失败,这应该导致模块不采取行动。看看GG上的另一个例子,我想知道根本问题是否是第一组比赛中 .* 通配符的贪婪本质。/耸肩

ansible

5
推荐指数
1
解决办法
4299
查看次数

如何控制plpython3使用哪个Python版本?

我有一个在 CentOS 7 上运行的 postgres 11 数据库,并尝试使用 PL/python,但需要指向 python 解释器的特定版本。我需要使用python3.9,而它正在使用python3.6。我目前无法卸载 python3.6,因此希望以某种方式将 plpython3 指向我的 python3.9 解释器。

我已经安装了包 postgresql-plpython3:

sudo yum install -y postgresql-plpython3

我在 PG 中创建了一个扩展,可以运行一个简单的 PL/python 函数来报告所使用的版本:

CREATE OR REPLACE FUNCTION pyver ()
RETURNS TEXT
AS $$
    import sys
    pyversion = sys.version
    return pyversion
$$ LANGUAGE 'plpython3u';
Run Code Online (Sandbox Code Playgroud)

执行它会返回:

# select pyver();
                  pyver
-----------------------------------------
 3.6.8 (default, Nov 16 2020, 16:55:22) +
 [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
(1 row)
Run Code Online (Sandbox Code Playgroud)

在我的操作系统上,我有以下 python 解释器文件及其使用的版本:

$ /usr/bin/python3 --version
Python 3.9.6

$ python3 --version
Python …
Run Code Online (Sandbox Code Playgroud)

plpython python-3.9

5
推荐指数
1
解决办法
1373
查看次数

标签 统计

ansible ×1

plpython ×1

python-3.9 ×1