我目前有一个部署结构,如下所示:
/versions/1.0/ /versions/2.0/ etc
ssh host /versions/2.0/deploy.sh var1 var2 var3 var4 var5
问题在于它传递许多变量是非常不灵活的。我想做点什么:
ssh host /versions/2.0/deploy.py config.json
或类似
ssh host /version/2.0/deploy.py "{var1: '', var2: '', var3: '', var4: '', var5: ''}"
第一个解决方案要求我首先提出一个临时文件名,然后将配置文件复制到主机,然后执行部署脚本,然后删除配置文件。
第二个解决方案我不确定在命令行上传递json是否真的安全。
关于如何将配置对象/文件传递给部署脚本的任何想法?
答案 0 :(得分:1)
您当然可以在命令行上传递JSON,但您的示例不是有效的JSON。请注意,JSON要求您的键引用双引号,并且值不能单引号,但也必须双引号。您还希望在整个JSON blob周围放置单引号,以便您可以避免与JSON数据本身进行任何shell交互。
另一种选择是使用环境变量而不是JSON。虽然如果你通过SSH传递它们会变得很丑陋;但是,您可以使用env
命令来帮助解决此问题:
ssh host env VAR1=value1 VAR2=value2 VAR3=value3 /version/2.0/deploy.py
在python脚本中,您可以通过os.environ
字典访问环境变量。