我正在从 ansible playbook 调用 python 脚本。在调用时,我将凭据作为参数传递给 python 脚本。密码有一些特殊字符。
但是在 Python 脚本中,我收到的密码没有特殊字符。所以密码不正确,我收到未经授权的错误。
我在 Ansible 塔中拥有此证书。所以我将 ansible playbook 和 python 脚本都保存在 Git 中,并在 Ansible Tower 中作为作业运行。
- hosts: localhost
gather_facts: false
vars:
username: '{{ lookup("env","CREDS_TEST_PWD_USERNAME") }}'
password: '{{ lookup("env","CREDS_TEST_PWD_PASSWORD") }}'
tasks:
- debug: var=password
- name: Invoking python script
script: python_script.py {{username}} {{password}}
args:
executable: python
register: user_response
delegate_to: perbhd01
- debug: var=user_response
以上是调用 python 脚本的 Ansible 剧本。假设实际的用户名和密码是“ADMIN”和“Oracle$123!”。但是我在 Python 脚本中得到的是“ADMIN”和“Oracle123!”
这就是我在 python 脚本中检索凭据的方式。
import requests
import json
import warnings
import sys
user_name=sys.argv[1]
password=sys.argv[2]
print (password +"****from ansible****")
如果您对我面临的这个问题有任何想法,请告诉我。
像这样再添加一个变量“credential_password”并运行剧本。这个 regex_escape() 将有助于转义特殊字符。