webhook实现运维自动化部署

简介

webhook是一个API概念,并且变得越来越流行,我们能用事件描述的事物越来越多,webhook的作用范围也就越大, webhook作为一个清凉的事件处理应用,正变得越来越有用

工作原理

为了及时通知,此时就产生了Webhook这种概念,其实就是为了更好地去通知调用的结果。在我们发出请求的时候,可以向服务器注册一个Webhook的地址,告诉服务器说,等调用结果一出来,第一时间通过这个Webhook地址通知我,我好处理接下来的步骤。

使用场景

  • 场景一 实现自动化部署
  • 场景二 由于网络问题只能通过http的方式触发后端相关操作可通过webhook实现

安装以及使用

1.基于ubuntu服务器的安装(webhook官网

root@devops-test:~# apt-get install webhook
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  bridge-utils golang-docker-credential-helpers gyp javascript-common libgd3 libjs-async libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libnginx-mod-http-geoip
  libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libsecret-1-0 libsecret-common libuv1-dev libwebp6 nginx-common nginx-core node-abbrev
  node-ansi node-ansi-color-table node-archy node-async node-balanced-match node-block-stream node-brace-expansion node-builtin-modules node-combined-stream node-concat-map node-cookie-jar
  node-delayed-stream node-forever-agent node-form-data node-fs.realpath node-fstream node-fstream-ignore node-github-url-from-git node-glob node-graceful-fs node-hosted-git-info node-inflight
  node-inherits node-ini node-is-builtin-module node-isexe node-json-stringify-safe node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid node-nopt
  node-normalize-package-data node-npmlog node-once node-osenv node-path-is-absolute node-pseudomap node-qs node-read node-read-package-json node-request node-retry node-rimraf node-semver
  node-sha node-slide node-spdx-correct node-spdx-expression-parse node-spdx-license-ids node-tar node-tunnel-agent node-underscore node-validate-npm-package-license node-which node-wrappy
  node-yallist python-backports.ssl-match-hostname python-cached-property python-docker python-dockerpty python-dockerpycreds python-docopt python-funcsigs python-functools32 python-jsonschema
  python-mock python-pbr python-texttable python-websocket python-yaml ubuntu-fan
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  webhook
0 upgraded, 1 newly installed, 0 to remove and 222 not upgraded.
Need to get 1443 kB of archives.
After this operation, 4979 kB of additional disk space will be used.
Get:1 http://repo.huaweicloud.com/ubuntu bionic/universe amd64 webhook amd64 2.5.0-2 [1443 kB]
Fetched 1443 kB in 0s (10.3 MB/s)
Selecting previously unselected package webhook.
(Reading database ... 145500 files and directories currently installed.)
Preparing to unpack .../webhook_2.5.0-2_amd64.deb ...
Unpacking webhook (2.5.0-2) ...
Setting up webhook (2.5.0-2) ...
Created symlink /etc/systemd/system/multi-user.target.wants/webhook.service -> /lib/systemd/system/webhook.service.

2.测试安装是否成功

root@devops-test:~# webhook -h
Usage of webhook:
  -cert string
        path to the HTTPS certificate pem file (default "cert.pem")
  -header value
        response header to return, specified in format name=value, use multiple times to set multiple headers
  -hooks string
        path to the json file containing defined hooks the webhook should serve (default "hooks.json")
  -hotreload
        watch hooks file for changes and reload them automatically
  -ip string
        ip the webhook should serve hooks on (default "0.0.0.0")
  -key string
        path to the HTTPS certificate private key pem file (default "key.pem")
  -nopanic
        do not panic if hooks cannot be loaded when webhook is not running in verbose mode
  -port int
        port the webhook should serve hooks on (default 9000)
  -secure
        use HTTPS instead of HTTP
  -urlprefix string
        url prefix to use for served hooks (protocol://yourserver:port/PREFIX/:hook-id) (default "hooks")
  -verbose
        show verbose output

调试以及测试webhook

1.配置webhook的启动json文件

[
  {
     "id": "test-webhook",
     "execute-command": "/tmp/redeploy.sh",
     "command-working-directory": "/tmp"
  }
]

2.创建测试脚本

vi /tmp/redeploy.sh
#!/bin/bash
touch `date +%Y%m%H%M%S`
echo "this is test file ,please test"

3.启动服务

webhook -hooks hook.json -verbose --port 9001 //指定启动端口
root@devops-test:~# webhook -hooks hook.json -verbose --port 9001
[webhook] 2022/09/30 14:52:32 version 2.5.0 starting
[webhook] 2022/09/30 14:52:32 setting up os signal watcher
[webhook] 2022/09/30 14:52:32 attempting to load hooks from hook.json
[webhook] 2022/09/30 14:52:32 found 1 hook(s) in file
[webhook] 2022/09/30 14:52:32   loaded: redeploy-webhook
[webhook] 2022/09/30 14:52:32 serving hooks on http://0.0.0.0:9001/hooks/{id}
[webhook] 2022/09/30 14:52:32 os signal watcher ready

4.测试链接

root@wadequ-ThinkPad-L13:/home/wadequ# curl -v http://10.41.1.20:9001/hooks/test-webhook
*   Trying 10.41.1.20...
* TCP_NODELAY set
* Connected to 10.41.1.20 (10.41.1.20) port 9001 (#0)
> GET /hooks/test-webhook HTTP/1.1
> Host: 10.41.1.20:9001
> User-Agent: curl/7.58.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Fri, 30 Sep 2022 06:56:42 GMT
< Content-Length: 0
< Content-Type: text/plain; charset=utf-8
< 
* Connection #0 to host 10.41.1.20 left intact

5.执行结果

root@devops-test:/tmp# ls
202209145748

后续实现webhook路径传参以及通过nginx代理域名的方式实现调用

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容