Ansible Tower (AWX) のCLIの使い方

スポンサーリンク

Ansible Tower またはAWXにCLIツールをインストールし、基本操作について説明します。

インストール方法

CLIツールはpython3 moduleとして提供されています。以下のコマンドでpipインストールを実施するとコマンドラインツールawxがインストールされます。

# pip3 install awxkit

以下のように引数なしで実行するとヘルプを見る事ができます。

# awx
usage: awx [--help] [--version] [--conf.host https://example.awx.org]
           [--conf.token TEXT] [--conf.username TEXT] [--conf.password TEXT]
           [-k] [-f {json,yaml,jq,human}] [--filter TEXT]
           [--conf.color BOOLEAN] [-v]

optional arguments:
  --help                prints usage information for the awx tool
  --version             display awx CLI version

authentication:
  --conf.host https://example.awx.org
  --conf.token TEXT     an OAuth2.0 token (get one by using `awx login`)
  --conf.username TEXT
  --conf.password TEXT
  -k, --conf.insecure   Allow insecure server connections when using SSL

 <omitted>

疎通確認

AWX(Ansible Works)の場合

AWXへの接続先や認証情報などを引数に与えて、以下のように実行すると疎通確認ができます。

# awx \
  --conf.host http://localhost/ \
  --conf.username admin \
  --conf.password P@ssw0rd \
  hosts list
{
     "count": 1,
     "next": null,
     "previous": null,
     "results": [
          {
               "id": 1,
               "type": "host",
               "url": "/api/v2/hosts/1/",
               "related": {
                    "created_by": "/api/v2/users/1/",
                    "modified_by": "/api/v2/users/1/",

  <omitted>

Ansible Towerの場合

Ansible Towerを使用する場合も、AWXと殆ど同じように動作確認できます。違いは、httpsを使用することと証明書エラーを無視する”-k”が必要な事です。

# awx \
  --conf.host https://localhost/ \
  --conf.username admin \
  --conf.password P@ssw0rd \
  -k \
  hosts list
{
     "count": 1,
     "next": null,
     "previous": null,
     "results": [
          {
               "id": 1,
               "type": "host",
               "url": "/api/v2/hosts/1/",
               "related": {
                    "created_by": "/api/v2/users/1/",
                    "modified_by": "/api/v2/users/1/",

  <omitted>

認証情報の操作

環境変数として定義する方法

AWX CLIに与える認証情報は環境変数として定義する事もできます。

export TOWER_HOST=http://localhost/
export TOWER_USERNAME=admin
export TOWER_PASSWORD=P@ssw0rd
export TOWER_VERIFY_SSL=False

設定が反映されているかどうかはawx configコマンドで確認する事もできます。

# awx config
{
     "base_url": "http://localhost/",
     "token": "",
     "use_sessions": false,
     "credentials": {
          "default": {
               "username": "admin",
               "password": "P@ssw0rd"
          }
     }
}

確かに設定が反映されているかを調べるために、Ansible Towerからの情報取得が可能な事を確認します。

# awx hosts list
{
     "count": 1,
     "next": null,
     "previous": null,
     "results": [

  <omitted>

認証トークンの発行

OAUTHトークンを発行して、トークンを元にログインする事もできます。以下のような操作でトークンを発行できます。

デフォルトではjson形式の出力となりますが、-f humanオプションを付与すると「export TOWER_OAUTH_TOKEN=xxxxxxxxx」というコピペしやすい形式で出力されます。

# TOWER_HOST=http://localhost/ \
#   TOWER_USERNAME=admin \
#   TOWER_PASSWORD=P@ssw0rd \
#   awx login -f human
export TOWER_OAUTH_TOKEN=5cHeahgFtIRwJfrNo6OOWY7P62DzeB

トークンを環境変数に設定し、Ansible Towerからの情報取得が可能な事を確認します。

# export TOWER_OAUTH_TOKEN=5cHeahgFtIRwJfrNo6OOWY7P62DzeB
# awx --conf.host http://localhost/ hosts list

表示形式

出力フォーマット

デフォルトではjson形式の出力ですが、yaml形式やテーブル(Tabular)形式で出力する事もできます。

# awx inventory list -f yaml
count: 1
next: null
previous: null
results:
- created: '2020-08-15T12:45:31.490023Z'
  description: ''
  has_active_failures: false
  has_inventory_sources: false
  host_filter: null
  hosts_with_active_failures: 0
  id: 1
  insights_credential: null
  inventory_sources_with_failures: 0
  kind: ''
  modified: '2020-08-15T12:45:31.490049Z'
  name: Demo Inventory
  organization: 1
  pending_deletion: false

  <omitted>


# awx inventory list -f human
id name
== ==============
1  Demo Inventory
#

列選択

テーブル形式の場合は列選択の機能があります。どちらかと言えば、デフォルトで出力される列が少ないので、「列を選択」ではなく「列を追加」するために使う用途の方が多いと予想されます。

# awx projects list -f human
id name
== ============
6  Demo Project

# awx projects list -f human --filter id,name,description,scm_type,scm_url
id name         description scm_type scm_url
== ============ =========== ======== ================================================
6  Demo Project             git      https://github.com/ansible/ansible-tower-samples

jqフィルター

jq形式で出力し、さらにfilterオプションを与えると、jqコマンドと同じ書式での整形が可能です。

# awx users list -f jq --filter '.results[] | {id,username,emal,is_superuser}'
{"id": 1, "username": "admin", "emal": null, "is_superuser": true}

ファイル指定

秘密鍵のようなファイルを指定する場合は、以下のような書式でファイルパスを指定する事もできます。

# awx credentials create \
    --credential_type 'Machine' \
    --organization 'Default' \
    --name 'Public Key Authentication4' \
    --inputs '{"username": "root", "ssh_key_data": "@~/.ssh/id_rsa"}'

公式情報引用元

トップページ

Ansible Docs」および「AWX ProjectのREADME.md」が公式情報です。

AWXコマンドのインストール方法

AWXコマンドのインストールは「AWX ProjectのINSTALL.md」を参照ください。

認証方法の設定

Ansible Docsのトップページから、Ansible Tower Docs, Authenticationの順に画面遷移ください。

タイトルとURLをコピーしました