我的两个环境有两台机器。
第一个托管 staging 环境。它需要将NODE_ENV
设置为dev
。
第二个托管生产环境。它需要将NODE_ENV
设置为prod
。
我使用Ansible配置我的服务器。
我该怎么做?
答案 0 :(得分:5)
另一个选项是在NODE_ENV
文件设置/etc/environment
。
在安全任务中:
- lineinfile: dest=/etc/environment line="NODE_ENV=dev"
答案 1 :(得分:3)
我解决了这个问题。
在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。
这可能有点矫枉过正,但它很灵活。如果有人有更简单的建议,请不要犹豫,分享!