Я вызываю скрипт Python из доступной книги. При вызове я передаю учетные данные скрипту python в качестве аргументов. В пароле есть специальные символы.
Но в скрипте Python я получаю пароль без специальных символов. Таким образом, пароль становится неверным, и я получаю несанкционированную ошибку.
У меня есть эти учетные данные в Ansible Tower. Итак, я сохранил как 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
Выше показан сценарий Ansible, который вызывает скрипт Python. Скажите, что фактическое имя пользователя и пароль - «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, подобную этой, и запустите playbook. Этот regex_escape () поможет избежать специальных символов.
username: '{{ lookup("env","CREDS_TEST_PWD_USERNAME") }}'
password: '{{ lookup("env","CREDS_TEST_PWD_PASSWORD") }}'
credential_password: "{{ password | regex_escape() }}"