flask keychain ansible之前关系的问题

这是我之前的一个问题: ansible的key问题

现在在服务器上直接使用:

[root@localhost ~]# python manage.py

运行项目时,flask 的 web 页面开始调用 ansible 可以正常使用,但当部署到 gunicorn+supervisord 环境后又出现了密钥问题。

然后查了一下,keychain 会生成一个环境变量在

[root@localhost ~]# cat /root/.keychain/localhost.localdomain-sh
SSH_AUTH_SOCK=/tmp/ssh-zVeUXf2093/agent.2093; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2094; export SSH_AGENT_PID;

当直接 ipython 调用时候可以获取到:

[root@localhost ~]# ipython
Python 2.7.9 (default, Apr 12 2016, 16:14:35) 
Type "copyright", "credits" or "license" for more information.

IPython 4.2.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [2]: import os

In [3]: os.system('env | grep SSH_A')
SSH_AGENT_PID=2094
SSH_AUTH_SOCK=/tmp/ssh-zVeUXf2093/agent.2093
SSH_ASKPASS=/us

当时把这些写到 flask 中,用 web 容器启动起来后,就无法获取到

服务端写:

mylogger.info('====================')

mylogger.info(os.popen('env|grep SSH_A').read())

mylogger.info('================')

日志输出:

====================

================

两个 “==========” 中间没内容,没有获取到这个环境变量,
所以想问下这个在 web 容器部署下要怎样获取这个变量的?

阅读 3.6k
1 个回答

已自行解决,命令前直接加载这个变量

os.popen('source /root/.keychain/CentOS6x64-Int-sh;/usr/local/python27/bin/ansible -i %s selecthost -m ping' %hosttemp_file)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏