2014-10-05 50 views
-2

我现在有用于部署的结构是这样的:如何将参数传递给部署脚本?

  1. 在目标机器上我有一个/版本/目录与内置版本:
 
    /versions/1.0/ 
    /versions/2.0/ 
    etc 
  • 要部署版本2,I运行下面的命令:
  •  
        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

    您当然可以在命令行上传递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词典中的环境变量。

    相关问题