Аутентификация только через файл конфигурации?

Я изучаю модуль python shade, чтобы автоматизировать некоторые задачи, используя нашу установку OpenStack.

Эта страница сообщает:

Создайте файл конфигурации, чтобы сохранить имя пользователя, пароль, имя_проекта в ~/.config/openstack/clouds.yml.

Я внимательно посмотрел; но я не мог найти никакой информации о том, как предоставить учетные данные в другом; например, как параметры для некоторых объектов, которые я мог бы создать в коде python.

Короче говоря: это возможно? Или это требование сразу же заставляет меня "отступать"; и вместо этого использовать OpenStack python sdk?

Ответ 1

Я не эксперт по python, но после некоторого поиска, как это делают другие "openclient" модули; возможно, следующее может работать (пример кода из вашей ссылки, только немного улучшения):

from shade import *

auth_data = {
# URL to the Keystone API endpoint.
  'auth_url': 'url',
# User credentials.
'user_domain_name': ...
}

чтобы сделать следующее:

cloud = openstack_cloud(cloud='your-cloud', **auth_data)

Ответ 2

Из того, что я понимаю, это помещает в ваш файл yml любые ключи, пароли или секретные файлы безопасности, которые мы используем с Travis.yml, и это остается в локальном каталоге и добавляется к игнорированию git.

Говоря об этом, используется функция python и twitter api, я уверен, что она использует или ссылается на программу под названием tweepy.

Это было очень полезно для нас и показалось, что это может быть близко для вас.

Сообщите мне, если это поможет.

with open("secrets.yml") as f:
    content = f.read()
# from secrets.yml import CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET
secret = yaml.load(content)
##################################################################################################
# authorize tweepy with CONSUMER_KEY and CONSUMER_SECRET
auth = tweepy.OAuthHandler(secret["CONSUMER_KEY"], secret["CONSUMER_SECRET"])
auth.secure = True
# read in ACCESS_TOKEN and ACCESS_SECRET variables to tweepy
auth.set_access_token(secret["ACCESS_TOKEN"], secret["ACCESS_SECRET"])