Существует два способа создания пользовательских учетных данных (я предпочитаю второй):
Первый вариант: ваш подход - модуль URI
- name: Create Custom Credential
uri:
url: "https://endpoint/api/v2/credentials/"
method: POST
user: admin
password: password
headers:
Content-Type: "application/json"
body: '{"name":"myfirsttoken","description":"","organization":34,"credential_type":34,"inputs":{"token":"MyToken"}}'
force_basic_auth: true
validate_certs: false
status_code: 200, 201
no_log: false
Нобудьте осторожны, потому что это не идемпотент, и вы должны выполнить GET Credentials. Сначала введите method: GET
, зарегистрируйте свои результаты и найдите свои учетные данные в переменной register.json.results
.
Второй вариант: My PreferredПодход - tower-cli
Вы можете сделать то же самое, проще и идемпотентно с:
- name: Add Custom Credential
command: tower-cli credential create --name="{{ item }}" --credential-type "{{ credential_type }}" --inputs "{'token':'123456'}" -h endpoint -u admin -p password --organization Default
no_log: true
with_items:
- MyCustomToken
Вы получите что-то вроде:
== ============= ===============
id name credential_type
== ============= ===============
46 MyCustomToken 34
== ============= ===============
Круто то, что вы можете полностью автоматизировать свои токены и даже автоматически сгенерировать их с помощью:
token: "{{ lookup('password', '/dev/null length=20 chars=ascii_letters,digits') }}"
А затем:
---
- name: Create Custom Credential Token
hosts: localhost
connection: local
gather_facts: false
vars:
token: "{{ lookup('password', '/dev/null length=20 chars=ascii_letters,digits') }}"
credential_type: MyCustom
tasks:
- name: Create Credential Type
tower_credential_type:
name: "{{ credential_type }}"
description: Custom Credentials type
kind: cloud
inputs: {"fields":[{"secret":true,"type":"string","id":"token","label":"token"}],"required":["token"]}
state: present
tower_verify_ssl: false
tower_host: endpoint
tower_username: admin
tower_password: password
- name: Add Custom Credential
command: tower-cli credential create --name="{{ item }}" --credential-type "{{ credential_type }}" --inputs "{'token':'{{ token }}'}" -h endpoint -u admin -p password --organization Default
no_log: true
with_items:
- MyCustomToken