2024-09-26 18:09:25 发布
网友
最近,我开始查找Ansible来自动化服务器配置,但我似乎无法将yml文件中的特定变量导入到.py脚本中以供使用。我要找的示例:
.yml var: server_name: ml-apitest-t1
然后将该变量server_name导入到python中的变量中,这样它看起来像这样:
server_name
您可以使用ansible task将这些变量指定为环境变量,然后通过python访问它。 在ansible中设置环境变量:
- hosts: dev tasks: - name: Set server_name environment: SERVER_NAME: server_name
要在python中访问环境变量,请使用以下命令:
请记住,上面的ENV在play级别只是临时的,因此必须在同一play中调用python脚本。在
如果您的.yml.文件看起来像这样:
.yml.
- server: var: server_name: ml-apitest-t1
那么你应该使用PyYaml,试试这个
PyYaml
在我的示例中,它将输出
[{'server': {'var': None, 'server_name': 'ml-apitest-t1'}}]
为了从我的测试.yml文件中得到server_name,我需要这样做,但是对于你的情况,它看起来会不同,因为你的.yml文件结构是不同的
.yml
import yaml try: from yaml import CLoader as Loader, CDumper as Dumper except ImportError: from yaml import Loader, Dumper with open('test.yml', 'r') as f: cont = yaml.load(f.read(), Loader=Loader) print (cont[0]['server']['server_name'])
输出就是这个
ml-apitest-t1
这里还有PyYamldocumentation
您可以使用ansible task将这些变量指定为环境变量,然后通过python访问它。
在ansible中设置环境变量:
要在python中访问环境变量,请使用以下命令:
^{pr2}$请记住,上面的ENV在play级别只是临时的,因此必须在同一play中调用python脚本。在
如果您的
.yml.
文件看起来像这样:那么你应该使用
^{pr2}$PyYaml
,试试这个在我的示例中,它将输出
为了从我的测试
.yml
文件中得到server_name
,我需要这样做,但是对于你的情况,它看起来会不同,因为你的.yml
文件结构是不同的输出就是这个
这里还有
PyYaml
documentation相关问题 更多 >
编程相关推荐