如何给国外网站做seo,centos7删除wordpress,阿里云用ip做网站,菏泽网站开发前言
相较于使用playbook#xff0c;个人更习惯于编写shell脚本。如果需要多台服务器执行某一任务#xff0c;可以将脚本放在某个http服务目录下#xff0c;比如nginx#xff0c;然后通过ansible的shell模块让服务器通过wget执行远程脚本。
本文以 ansible nginx shell…前言
相较于使用playbook个人更习惯于编写shell脚本。如果需要多台服务器执行某一任务可以将脚本放在某个http服务目录下比如nginx然后通过ansible的shell模块让服务器通过wget执行远程脚本。
本文以 ansible nginx shell脚本为例。
IP服务说明192.168.0.20nginx提供http服务192.168.0.20ansibleansible控制节点192.168.0.21目标主机
nginx配置
nginx的配置比较简单大致如下根据自身所需修改配置。
server {listen 80;server_name 192.168.0.20;charset utf-8;location /res {alias /home/res;autoindex on;autoindex_format html;autoindex_exact_size off;autoindex_localtime on;}}
shell脚本
在/home/res目录下随便写个shell脚本。为了避免有些服务器的bash路径不是/bin/bash这里通过环境变量引用bash解释器。
#!/usr/bin/env bash
df -h
测试
# q后面是大写字母O, 不是数字0
sh -c $(wget http://192.168.0.20/res/test.sh -qO -)
正常情况下会输出当前服务器的分区存储情况。
ansible调用
ansible all -m shell -a sh -c $(wget http://192.168.0.20/res/test.sh -qO -)
其它
如果没有nginx也可以用python的标准库临时创建一个http服务毕竟绝大部分linux发行版都内置python。比如
# 在脚本文件所在目录创建http服务, 指定12345端口
# 如果使用python 2, 命令为 python -m SimpleHTTPServer 12345
python3 -m http.server 12345
ansible all -m shell -a sh -c $(wget http://192.168.0.20:12345/test.sh -qO -)
才发现ansible还有个执行脚本的script模块主要作用就是把管理节点的脚本分发到被管理节点然后执行。具体帮助文档可见ansible-doc script。示例如下
# /tmp/test.sh 是管理节点上的shell脚本
ansible all -m script -a /tmp/test.sh