我有兩臺機器適合我的兩種環境。如何將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 =開發。這最終會導致一個大的環境文件 –