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}}"
文章来自:https://blog.51cto.com/14143894/2498772