如何将参数传递给部署脚本?

时间:2014-10-05 19:56:38

标签: python linux bash deployment ssh

我目前有一个部署结构,如下所示:

  1. 在目标计算机上,我有一个带有内置版本的/ versions /目录:
  2.     /versions/1.0/
        /versions/2.0/
        etc
    
    1. 要部署版本2,我运行以下命令:
    2.     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是否真的安全。

      关于如何将配置对象/文件传递给部署脚本的任何想法?

1 个答案:

答案 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字典访问环境变量。