Ansible Automation PlatformのプロジェクトはGit管理するとは思いますが
まずはファイルを配置してAnsible Vaultも使いながら
ジョブテンプレートを実行するまでを記載します。
用語
Ansibleと用語が異なり戸惑うかと存じますが
プロジェクトはPlaybookの登録です。
ジョブテンプレートはそのプロジェクトを実行する環境になります。
ファイル配置と変数ファイル暗号化
デフォルトでは/var/lib/awx/projects/配下のawxがアクセスできるロールを認識しますので
まずディレクトリを作成します。
$ id
uid=973(awx) gid=972(awx) groups=972(awx),971(receptor),973(redis),974(nginx) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ cd /var/lib/awx/projects
$ mkdir test1
ロールを作成し、各ファイルを編集します。
$ cd test1
$ ansible-galaxy init testuser
$ cd testuser
$ vi tasks/main.yml
---
# tasks file for testuser
- name: RedHat Create User
user:
user: "{{ user }}"
group: wheel
password: "{{ pass | password_hash('sha512') }}"
when:
- ansible_distribution != "Ubuntu"
- ansible_distribution != "Debian"
- name: Debian Ubuntu Create User
user:
user: "{{ user }}"
group: sudo
password: "{{ pass | password_hash('sha512') }}"
when:
- ansible_distribution == "Ubuntu" or ansible_distribution == "Debian"
- name: User Check
command: "id {{ user }}"
notify: handler
register: result
$ vi handlers/main.yml
---
# handlers file for testuser
- name: handler
debug: var="result"
ロールを実行するPlaybookを配置します。
$ vi ../check.yml
---
- name: testuser
hosts: all
user: "{{ exe_user }}"
become: true
gather_facts: true
roles:
- testuser
パスワードを格納したvars/main.ymlを作成し、コマンド入力の暗号化をします。
Ansible Automation Platformでファイルを指定した暗号化は動作させることができませんでした。
$ vi vars/main.yml
pass: xxxxxxx
$ ansible-vault encrypt --vault-id sudo@prompt vars/main.yml
ディレクトリ・ファイル構成
今回設置したロールのディレクトリ・ファイル構成となります。
$ tree /var/lib/awx/projects/test1
/var/lib/awx/projects/test1
├── check.yml
└── testuser
├── README.md
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
Ansible Automation Platform側の設定
Ansible Vaultに対応する認証情報をAnsible Automation Platform側で設定します。
認証タイプはVaultを選択します。
プロジェクトを登録します。
今回はソースコントロールのタイプで手動を選びます。
Ansbile Roleを配置してもある程度時間が立たないと
Playbook ディレクトリーでディレクトリが表示されないので表示されないようでしたら待ちます。
ジョブテンプレートを作成します。
認証情報で実行ユーザーと先程登録したVaultの2つを登録します。
今回実行するPlaybookはsudoとfactが必要なのでチェックし保存します。
すぐに実行します。
実行後成功しましたらログインテストします。
$ ssh test1@192.168.1.50
おまけ
検証中にvault_identity_listを設定しようと~/.ssh/xxxxxと設定したところ
実行環境のrunnerユーザで実行するようでして簡単に設定はできなさそうです。
最後に
イメージができたでしょうか。 Ansibleについてのご相談はサイオスまでお問い合わせいただけますと幸いです。