【问题标题】:How can I set NODE_ENV permanently with ansible?如何使用 ansible 永久设置 NODE_ENV?
【发布时间】:2015-08-18 18:08:12
【问题描述】:

我的两个环境有 2 台机器。

第一个托管一个 staging 环境。它需要将NODE_ENV 设置为dev

第二个托管一个生产环境。它需要将NODE_ENV 设置为prod

我使用 Ansible 配置我的服务器。

我该怎么做?

【问题讨论】:

    标签: node.js ansible environment production ansible-playbook


    【解决方案1】:

    另一个选项是在/etc/environment 文件中设置NODE_ENV

    在ansible任务中:

    - lineinfile: dest=/etc/environment line="NODE_ENV=dev"

    【讨论】:

    • 我对这个答案的问题是每次运行剧本时它都会附加 NODE_ENV=dev 。这最终会导致环境文件很大
    【解决方案2】:

    我就这样解决了问题。

    roles/node-env/tasks/main.yml

    ---
    - name: Configure NODE_ENV
      lineinfile: dest=/etc/environment regexp="^NODE_ENV=" line="NODE_ENV={{ node_env }}"
      when: node_env is defined
    

    hosts/staging:

    [webserver]
    staging-server-hostname
    
    [webserver:vars]
    node_env=dev
    

    hosts/production:

    [webserver]
    production-server-hostname
    
    [webserver:vars]
    node_env=prod
    

    playbook.yml:

    ---
    - name: Provision web server
      hosts: webserver
      sudo: true
      roles:
        - { role: Stouts.nodejs, tags: nodejs }
        - ...
        - { role: node-env, tags: nodejs }
    

    然后我配置我的暂存环境:

    ansible-playbook -i hosts/staging playbook.yml
    

    还有我的生产环境:

    ansible-playbook -i hosts/production playbook.yml
    

    请注意,我将环境变量存储在 /etc/environment 中,因为我希望为所有用户设置一个变量。

    这也可以根据您的需要存储在~/.profile/etc/profile.d。请参阅this answer 了解更多信息。

    这可能有点矫枉过正,但它很灵活。如果有人有更简单的建议,请随时分享!

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多