从ansible值列表构建python列表

时间:2018-01-16 09:33:37

标签: python django ansible

我试图通过从ansible传递环境变量来对我的django设置进行12因素处理。我的问题是我不知道如何从ansible yaml文件传递变量host1host2,因此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'"

但两种选择似乎都不起作用。我确信有一些简单的东西,但我无法弄明白。

2 个答案:

答案 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