我试图通过从ansible传递环境变量来对我的django设置进行12因素处理。我的问题是我不知道如何从ansible yaml文件传递变量host1
和host2
,因此MYSETTING
是一个python列表,而不是一个字符串。
我想要:
MYSETTING = ['host1', 'host2'] # this should be a list, not a string
我在ansible中尝试了各种选项,但它们似乎都导致MYSETTING
成为字符串:
# settings.py
MYSETTING = os.environ.get(ANSIBLE_VALUE, [])
# ansible vars file
ANSIBLE_VALUE: "['host1', 'host2']"
或
# settings.py
MYSETTING = [os.environ.get(ANSIBLE_VALUE, None)]
# ansible vars file
ANSIBLE_VALUE: "'host1', 'host2'"
但两种选择似乎都不起作用。我确信有一些简单的东西,但我无法弄明白。
答案 0 :(得分:2)
您的环境变量是字符串类型。您可以将字符串更改为具有ast库的列表
import ast
MYSETTING = ast.literal_eval(os.environ.get(ANSIBLE_VALUE, '[]'))
答案 1 :(得分:0)
# In settings.py
ADMINS = ['ws.kwak', 'jm0926.kim', 'viet.long', 'nam.nv12', 'phuong.nv2']
#In other files like views.py
from django.conf import settings
settings.ADMINS