スーパーユーザー権限を持つ Tower 管理者の場合、YAML/JSON などの定義を使用し、標準形式でカスタム認証情報タイプを定義し、新規の認証情報タイプをジョブやインベントリー更新に割り当てることができます。これにより、既存の認証情報タイプと同様の仕方で機能するカスタム認証情報タイプを定義することができます。たとえば、サードパーティー web サービスの API トークンを環境変数に挿入し、Playbook やカスタムインベントリースクリプトが使用できるカスタム認証情報タイプを作成できます。
カスタム認証情報は、認証情報を挿入する以下の方法をサポートします。
.ini
または .conf
ファイルの生成など)ジョブテンプレートには、1 つの SSH と複数のクラウド認証情報を割り当てることができます。クラウド認証情報はそれぞれ異なるタイプである必要があります。つまり、1 つの AWS 認証情報、1 つの GCE 認証情報など、それぞれ 1 つずつのみ使用できます。Ansible Tower 3.2 以降より、Vault 認証情報とマシンの認証情報は別々のエンティティーになっています。
注釈
新規の認証タイプを作成する際には、extra_vars
、env
、およびファイル名前空間での競合を回避するようにする必要があります。また、ANSIBLE_
という名前は予約されているため、環境変数名または追加の変数名で使用しないようにします。認証タイプ (CredentialType
) を作成および変更し、CredentialType.injection
フィールドを表示するには、スーパーユーザーのパーミッションが必要です。
Ansible Tower version 3.2 における API バージョン 2 (V2) の新規サポートは以下を意味します。
認証情報には、以下を定める「種類」という概念があります。
V2 CredentialType モデルでは、リレーションシップは以下のように定義されます。
マシン | SSH |
Vault | Vault |
ネットワーク | 環境変数 (例: ANSIBLE_NET_AUTHORIZE ) を設定します。 |
SCM | ソースコントロール |
クラウド | EC2、AWS |
その他多数 | |
Insights | Insights |
カスタムタイプの作成と変更は、クラウドとネットワークの種類に制限されています。
認証情報タイプ リンクは設定 () ボタンからアクセスできます。カスタム認証情報タイプが作成されていない場合、認証情報タイプのビューには何も表示されず、追加を求めるプロンプトが表示されます。
認証情報タイプが作成されている場合、このページには、既存および利用可能な認証情報タイプの一覧が表示されます。さらに、名前 および 種類 で並び替え、検索することができます。
認証情報タイプについての詳細を表示するには、その名前をクリックするか、または アクション 列の編集 () ボタンをクリックします。
認証情報タイプについては、それぞれの独自の設定が 入力の設定 フィールドおよび インジェクターの設定 フィールドに表示されます (該当する場合)。YAML および JSON 形式はどちらも設定フィールドでサポートされます。
新規の認証情報タイプを作成するには、以下を実行します。
注釈
カスタムの認証タイプには無効であるため、認証タイプを新規作成する際には、INPUT 名、INJECTOR 名および ID に、ANSIBLE_
で始まる予約済変数名を使用しないでください。
YAML
fields: - type: string id: username label: Username - type: string id: password label: Password secret: true required: - username - passwordYAML の追加サンプルについては、<http://www.yaml.org/start.html> _を参照してください。
JSON
{ "fields": [ { "type": "string", "id": "username", "label": "Username" }, { "secret": true, "type": "string", "id": "password", "label": "Password" } ], "required": ["username", "password"] }JSON の追加サンプルについては、<www.json.org> _を参照してください。
以下の JSON 形式の設定は、それぞれのフィールドとそれらが使用される方法を示しています。
{ "fields": [{ "id": "api_token", # required - a unique name used to # reference the field value "label": "API Token", # required - a unique label for the # field "help_text": "User-facing short text describing the field.", "type": ("string" | "boolean") # defaults to 'string' "format": "ssh_private_key" # optional, can be used to enforce data # format validity for SSH private key # data (only applicable to `type=string`) "secret": true, # if true, the field value will be encrypted "multiline": false # if true, the field should be rendered # as multi-line for input entry # (only applicable to `type=string`) },{ # field 2... },{ # field 3... }], "required": ["api_token"] # optional; one or more fields can be marked as required },
type=string
の場合、フィールドではオプションで複数の選択オプションから指定できます。
{ "fields": [{ "id": "api_token", # required - a unique name used to reference the field value "label": "API Token", # required - a unique label for the field "type": "string", "choices": ["A", "B", "C"] }] },
{
"env": {
"THIRD_PARTY_CLOUD_API_TOKEN": "{{api_token}}"
},
"extra_vars": {
"some_extra_var": "{{username}}:{{password}}"
}
}
認証情報タイプは、.ini ファイルまたは証明書/キーデータをサポートする一時ファイルも生成します。
{
"file": {
"template": "[mycloud]\ntoken={{api_token}}"
},
"env": {
"MY_CLOUD_INI_FILE": "{{tower.filename}}"
}
}
この例では、Tower は以下を含む一時ファイルを作成します。
[mycloud]\ntoken=SOME_TOKEN_VALUE
生成されるファイルへの絶対ファイルパスは、MY_CLOUD_INI_FILE
という名前の環境変数に保存されます。
をクリックして変更するか、または をクリックして「アクション」列にある認証タイプのオプションを削除します。
新規の認証情報の作成方法について詳しくは、認証情報 を参照してください。