我在Azure devops中有一个发布管道,在其中执行以下操作:
这里的意图是: 在管道的第一次运行中,不会创建密钥仓库,因此python-script的输入为空*。然后,我创建一个密码并将其设置为变量,并将其保存到keyVault。在后续运行中,密钥库存在,并且python脚本导出现有密码。密码的keyvault值不变。一切都很好
但是:密钥库不存在时,“ Azure密钥库任务”失败。因此:我需要将任务设置为“继续出错”。除一个细节外,此方法工作正常:管道报告“部分成功”,并使用橙色。从我的角度来看,该管道并没有“部分成功”,它确实做了应该做的事情。因此,此警告会误导其他可能看到输出的人。
因此,我的问题是:有没有办法完全忽略管道任务中的错误?即:是否继续出错而不显示“部分成功”?
还是有其他方法可以做我在这里尝试的事情?我知道我可以事先创建一个空的keyVault,但是手动执行此操作会破坏自动化的目的,并且运行另一个ARM模板似乎是不必要且麻烦的。
答案 0 :(得分:1)
我认为您的方法是错误的,只需将KV变量的检索转移到脚本即可,您可以控制行为。而且,您问是没有意义的。 “继续发生错误”正是其应有的工作方式。
https://docs.microsoft.com/en-us/python/api/overview/azure/key-vault?view=azure-python
from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from azure.common.credentials import ServicePrincipalCredentials
credentials = None
def auth_callback(server, resource, scope):
credentials = ServicePrincipalCredentials(
client_id = '',
secret = '',
tenant = '',
resource = "https://vault.azure.net"
)
token = credentials.token
return token['token_type'], token['access_token']
client = KeyVaultClient(KeyVaultAuthentication(auth_callback))
secret_bundle = client.get_secret("https://VAULT_ID.vault.azure.net/", "SECRET_ID", "SECRET_VERSION")
print(secret_bundle.value)