import json
from ansible_vault import VaultLib
class MyCustomCredential():
def __init__(self, task_vars):
self.username = task_vars.get('username', None)
self.password = task_vars.get('password', None)
def get_username(self):
return self.username
def get_password(self):
return self.password
def to_json(self):
return json.dumps({
'username': self.username,
'password': VaultLib().hash(self.password)
})
@staticmethod
def from_input_string(input_string):
return MyCustomCredential(json.loads(input_string))
该脚本包含一个名为“MyCustomCredential”的类,该类用于封装自定义凭据类型的属性和方法。其中,get_username()
和get_password()
方法用于获取用户名和密码,to_json()
方法用于将对象转换为JSON格式,from_input_string()
方法用于将字符串转换为对象。此外,还需要使用Ansible Vault库对密码进行编码。
接下来,在Ansible Tower中创建一个自定义凭据类型。在Web界面上,依次单击“Credentials”、“Types”、“Add Credentials Type”按钮。在“Type”字段中输入自定义凭据类型名称,例如“MyCustomCredentialType”,在“Injector”字段中输入脚本名称(不包括“.py”)。然后,单击“Save”按钮保存并退出。
现在,在Ansible Tower中创建一个包含自定义凭据类型的凭据。在Web界面上,依次单击“Credentials”、“Add”按钮。在“Credential Type”字段中选择“MyCustomCredentialType”,在“Username”和“Password”字段中输入相应的值。然后,单击“Save”按钮保存并退出。
最后,在Ansible Tower中测试凭据。可以使用以下代码片段将凭据传递给Ansible Playbook:
- name: Test Custom Credential