我有两台机器适合我的两种环境。如何将NODE_ENV永久设置为ansible?
第一个主持分段环境。它需要有NODE_ENV
设置为dev
。
第二个主机生产环境。它需要有NODE_ENV
设置为prod
。
我提供给我的服务器Ansible。
我该怎么做?
我有两台机器适合我的两种环境。如何将NODE_ENV永久设置为ansible?
第一个主持分段环境。它需要有NODE_ENV
设置为dev
。
第二个主机生产环境。它需要有NODE_ENV
设置为prod
。
我提供给我的服务器Ansible。
我该怎么做?
我解决了这样的问题。
在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。
这可能是矫枉过正,但它很灵活。如果有人有简单的建议,请不要犹豫分享!
另一个选项是设置NODE_ENV
在/etc/environment
文件。
在ansible任务:
- lineinfile: dest=/etc/environment line="NODE_ENV=dev"
我有这个答案的问题是,它会在每次的剧本运行时追加NODE_ENV =开发。这最终会导致一个大的环境文件 –