远程修改服务器上的配置文件(自动化运维)

一、介绍

  1. 利用ansible的远程操作功能,实现修改服务器上的配置文件;
  2. 由于ansible操作服务器,一次需要2秒左右(16G8核),所以我压缩了执行步骤,一次执行完成(包括:目录创建、备份、覆盖文件);
  3. 只是用ansible的shell功能,操作是在内网完成(外网也不可能让你直接用命令修改文件!);

二、实现逻辑

2.1 创建目录路径的命令 

mkdir -p /data/backup/temp/etc/nginx;

2.2 备份文件命令

cp /etc/nginx/yz_test.txt /data/backup/temp/etc/nginx/0011yz_test.txt;

2.3 覆盖文件命令(此地有坑,下面会讲!

cat > /etc/nginx/yz_test.txt << "EOF"
    文件内容
EOF;

2.4 整合命令

ansible '192.168.50.213' -m shell -a '
mkdir -p /data/backup/temp/etc/nginx;
cp /etc/nginx/yz_test.txt /data/backup/temp/etc/nginx/0024yz_test.txt;
cat > /etc/nginx/yz_test.txt << "EOF"

**省略**

log_format  main  '"'"'$remote_addr - $remote_user [$time_local] "$request" '"'"'

**省略**

EOF
'
  1. 整合后如上,ansible会把3条shell语句扔到目标服务器上去运行;
  2. 运送命令一定要用单引号,单引号会把命令原封不动的送过去;
  3. 覆盖文件的命令使用cat生成模拟文件,然后覆盖到远程服务器的目标文件上。注意1:此地用EOF作为结束标识,开始位置的EOF需要添加双引号,这样带$*的标识符才会原封不动的写入目标文件(带有$符号的是shell的变量,如果EOF不加双引号,带有$符号的字符串会被替换为空值)。注意2:由于EOF中的内容已经被单引号包围,所以EOF中的内容想要出现单引号就需要点手段,需要把 转成 '"'"' 单引号被双引号包围,然后被单引号包围,这样就可以输出单引号了,有点绕是吧,必须要这样😔);

 

--------------------------------题外话:覆盖文件想到用过echo,未成功!!!---------------------------

echo 'log_format  main  '"'"'$remote_addr - $remote_user [$time_local] "$request" '"'"';'

1. 试了好久,直接执行是能成功的,但是放入ansible就会出错,要是用双引号带有$符号的字符就会替换为空或不执行!

2. 还有,echo用单引号包围内容会原封不动的输出,但是用双引号就会替换!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值