はじめに
こちらは、エーピーコミュニケーションズ Advent Calendar 2022 の23日目のエントリとなります。
こんにちは、nakayumcです。
今回は、AAPの機能の一つである「カスタム認証情報タイプ」を使って、ユーザ名やパスワードをAnsibleの変数ではなくAAP上で管理出来るようにしてみます。
また、カスタム認証タイプの定義をextra_vars
と env
でログの出力で違いがあるのでこちらも合わせて比べてみます。
環境
- Ansible Automation Platform 2.2
Playbook
今回はGithubからHTTPS認証を用いてGitHubからCloneするPlaybookで試してみます。
{{ GITHUB_USER }}
と {{ GITHUB_PASSWORD }}
という変数は、AAPの認証情報で定義をしています。
--- - name: git clone ansible.builtin.git: repo: "https://{{GITHUB_USER}}:{{GITHUB_PASSWORD}}@github.com/nakayumc0278/til.git" #1行です dest: "./repository"
カスタム認証情報タイプを作成
まず、カスタム認証情報タイプ(変数を入れる箱のようなもの)を作成します。
AAP の左メニュー、管理 -> 認証情報タイプ を開き、追加ボタンをクリックし登録します。
- 入力の設定
--- fields: - id: github_user type: string label: github_user - id: github_password type: string label: github_password secret: true required: - github_user - github_password
- インジェクターの設定
ここでは、extra_vars変数に設定してみます。
--- extra_vars: GITHUB_USER: '{{ github_user }}' GITHUB_PASSWORD: '{{ github_password }}'
以上でカスタム認証情報タイプの設定が完了しました。
認証情報の入力
次に、AAP の左メニュー、リソース -> 認証情報 を開き、追加ボタンをクリックします。
認証情報タイプをクリックすると、先程「認証情報タイプ」で作成したものが出てくるのでクリックします。
ユーザ名とパスワード(APIキーでも可)を入力して保存します。
ジョブテンプレートに認証情報の追加
次に、ジョブテンプレートに先程設定した「認証情報」を追加します。
まず、AAP の左メニュー、リソース -> テンプレート -> 編集マーク でジョブテンプレートを編集します。
認証情報の虫眼鏡マーク -> カテゴリーを 「GitHub Credential Type」 を選択して「認証情報」を選択して保存します。
これで設定完了です。
実行してみよう
実際にPlaybookを起動してみた結果です。
このように正常に完了しましたが、詳細を見てみると認証情報がモロ出しでした。
これは、Playbookに no_log: true
を追加すれば避けられますが、デバッグすると出力されてしまいます。
回避方法
ジョブの結果で出力を避けるには、カスタム認証情報タイプを環境変数にすることで回避できます。
実際に設定してみます。
カスタム認証情報を変更
AAP の左メニュー、管理 -> 認証情報タイプ を開き、編集します。
インジェクターの設定で、extra_vars
を env
に変更し、保存します。
env: GITHUB_USER: '{{ github_user }}' GITHUB_PASSWORD: '{{ github_password }}'
Playbookの変数を環境変数に設定
Playbookも環境変数にしたことで、変更が必要です。
環境変数を用いるために、{{ GITHUB_USER }}
と {{ GITHUB_PASSWORD }}
を下記に変更します。
--- - name: git clone ansible.builtin.git: repo: "https://${GITHUB_USER}:${GITHUB_PASSWORD}@github.com/nakayumc0278/til.git" dest: "./repository"
これで再度実行してみます。
このように環境変数を用いることで、認証情報を秘匿することが出来ました。