Ansible模块lineinfile替换指定行内容、多行replace及j2的shell/yaml

案例一般在ansible当中去修改某个文件的单行进行替换的时候需要使用lineinfile模式
  • name: 关闭SElinux
    lineinfile:
    dest: /etc/selinux/config
    regexp: "^SELINUX="
    line: "SELINUX=disabled"

比如替换selinux当中的以SELINUX开头的行,替换为disabled
line参数 : 使用此参数指定文本内容。

regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。

如果想进行多行匹配进行替换需要使用replace模块

  • name: 注释默认ntp服务器
    replace:
    path: /etc/chrony.conf
    regexp: "^server"
    replace: "#server"

templates目录:templates模块会自动在此目录中寻找Jinja2模板文件;
src 源目录
dest 目的目录,引用with_items变量,下面可以写多个
force:yes file模块的用法,– force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no

command用于执行远程命令,但不执行复杂的命令

  • name: 添加外网yum源
    template:
    src: "templates/{{ item }}.j2"
    dest: "/opt/{{item}}"
    force: yes
    with_items:

    • yum.sh
  • name: 配置外网yum源
    command: bash /opt/"{{item}}"
    with_items:
    • yum.sh

注册变量输出debug命令,查看相关详细信息的输出

  • name: 验证查看当前时间
    shell: timedatectl && chronyc sources
    register: time
  • name: 列出本地服务器的实际同步详细信息
    debug:
    msg: "{{time.stdout_lines}}"

相关推荐