redhat satellite content views 自动发布
由于目前使用的RedHat Satellite我们只有部分功能和权限,主要就是要跟上主库的更新,确保本地站点受管的RedHat客户端可以更新到最新的版本。
前几天写了个用dnf-automatic的脚本,自动下载和安装security更新包,然后清理和邮件通告。
但是要是content views不更新,那么就会找不到最新的更新。所以这次直接做了个自动任务,每隔4天,在半夜发布下两个content-views,分别是Redhat8和RedHat9.
Satellite服务器不在我们这边,我能用web访问,然后手动进行发布。
这都是玩剩下的,直接打开浏览器的开发者工具,追下过程。
然后简单看下Satellite的官方API,找到其中发布的API。然后在PostMan中试了post下,通过。唯一要注意的是head要用application/json进行提交。
下面是部分脚本,减去了发送邮件的部分:
redhat8_url="https://mycorp.com/katello/api/v2/content_views/91/publish"
redhat9_url="https://mycrop.com/katello/api/v2/content_views/124/publish"
headers={
"Content-Type":"application/json"
}
username="myaccount"
password=keyring.get_password("gaogaogao",username)
payload={}
successful=1
response0=requests.post(redhat8_url,auth=(username,password),data=json.dumps(payload),headers=headers)
response1=requests.post(redhat9_url,auth=(username,password),data=json.dumps(payload),headers=headers)
redhat8_json_response=response0.json()
redhat9_json_response=response1.json()
if response0.status_code==202:
print("redhat8 content views publish success")
else:
successful=0
print("redhat8 content views publish publish failed")
#print(json.dumps(json_respose,indent=4))
print(json.dumps(redhat8_json_response,indent=4))
......
测试了下,通过。就是由于权限问题,没法生成自己的token,只能用basic authentication的方式。密码明文了。
不过这个脚本跑在独立的机器上,只有我能访问,就这样吧。
加上一个计划任务,每隔4天触发下,在半夜运行,然后发送邮件通告给我就好了。