他の言語でもお読みいただけます: English、 日本語, Español
ラボ環境を調べて理解します。
この最初のいくつかのラボ演は、Ansible Automation Platform のコマンドラインユーティリティーを使用します。これには、以下が含まれます。
- ansible-navigator -
Ansible オートメーションコンテンツを実行・開発するためのコマンドラインユーティリティとテキストベースのユーザーインターフェース(TUI)。-
ansible-core - Ansible Automation
Platform
を支えるフレームワーク、言語、機能を提供する基本的な実行ファイルです。また、
ansible
、ansible-playbook
、ansible-doc
などのさまざまなクリエートツールも含まれています。Ansible Coreは、無料でオープンソースのAnsibleを提供する上流のコミュニティと、Red Hatが提供する下流のエンタープライズオートメーション製品であるAnsible Automation Platformとの橋渡しの役割を果たします。- 実行環境 - このワークショップでは特に取り上げません。なぜなら、ビルトインの Ansible 実行環境には、Red
Hatがサポートするすべてのコレクションがすでに含まれており、このワークショップで使用するすべてのネットワークコレクションも含まれているからです。実行環境とは、Ansible
の実行環境として利用できるコンテナイメージです。-
ansible-builder -
このワークショップでは特に取り上げませんが、
ansible-builder
は実行環境の構築プロセスを自動化するためのコマンドラインユーティリティです。
Ansible Automation Platformの新しいコンポーネントに関する情報が必要な場合は、このランディングページをブックマークしてください https://red.ht/AAP-20
チャットでコミュニケーションしましょう
始める前に、slack にご参加ください! ansiblenetwork slack に参加するには、こちらをクリック。これにより、他のネットワーク自動化エンジニアとチャットしたり、ワークショップの終了後にサポートを受けたりすることができます。リンクが古くなっている場合は、Ansible テクニカルマーケティング にメールでご連絡ください。
ワークショップの演習には、Visual Studio Codeの使用が強く推奨されます。Visual Studio Codeは以下を提供します。
|
---|
-
ワークショップの起動ページ(講師が用意したもの)からVisual Studio Codeに接続します。パスワードは、WebUIのリンクの下に記載されています。
-
接続する提供されたパスワードを入力します。
-
Visual Studio Code で
network-workshop
ディレクトリーを開きます。 -
playbook.yml
をクリックしてコンテンツを表示します。
Ansible コントロールノードターミナルで network-workshop
ディレクトリーに移動します。
[student1@ansible-1 ~]$ cd ~/network-workshop/
[student1@ansible-1 network-workshop]$ pwd
/home/student1/network-workshop
[student1@ansible-1 network-workshop]$
~
- このコンテキストでのチルダは/home/student1
のショートカットですcd
- ディレクトリーを変更する Linux コマンドpwd
- 作業ディレクトリーを印刷するための Linux コマンド。これにより、現在の作業ディレクトリーへのフルパスが表示されます。
ansible-navigator
引数を指定して images
コマンドを実行し、コントロールノードに設定された実行環境を確認します。
$ ansible-navigator images
注記
表示される出力は、上記の出力とは異なる場合があります
このコマンドは、現在インストールされているすべての実行環境(略してEE)に関する情報を提供します。対応する番号を押すことで、EE
を調べることができます。例えば、上記の例で 2 を押すと、ee-supported-rhel8
の実行環境が表示されます。
2
に Ansible version and collections
を選択すると、その特定の EE にインストールされたすべての
Ansible Collections と、ansible-core
のバージョンが表示されます。
Visual Studio Code を使用して ansible-navigator.yml
ファイルを開くか、cat
コマンドを使用してファイルの内容を表示します。このファイルはホームディレクトリーにあります。
$ cat ~/.ansible-navigator.yml
---
ansible-navigator:
ansible:
inventories:
- /home/student1/lab_inventory/hosts
execution-environment:
image: registry.redhat.io/ansible-automation-platform-20-early-access/ee-supported-rhel8:2.0.0
enabled: true
container-engine: podman
pull-policy: missing
volume-mounts:
- src: "/etc/ansible/"
dest: "/etc/ansible/"
ansible-navigator.yml
ファイル内の次のパラメータに注意してください。
inventories
: 使用されている Ansible インベントリーの場所を示しますexecution-environment
: デフォルトの実行環境が設定されている場所
設定可能なすべての knob の詳細な一覧については、ドキュメント を参照してください。
playbook
内の play
の範囲は、Ansible inventory
内で宣言されたホストのグループに制限されます。Ansible は複数の
インベントリー
タイプに対応しています。インベントリーは、その中で定義されたホストのコレクションが含まれるシンプルなファイルや、Playbook
を実行するデバイスのリストを生成する動的スクリプト (CMDBバックエンドのクエリーを行うものなど) が考えられます。
このラボでは、ini 形式で記述されたファイルベースのインベントリーを操作します。Visual Studio Code を使用して
~/lab_inventory/hosts
ファイルを開くか、cat
コマンドを使用してファイルの内容を表示します。
$ cat ~/lab_inventory/hosts
[all:vars]
ansible_ssh_private_key_file=~/.ssh/aws-private.pem
[routers:children]
cisco
juniper
arista
[cisco]
rtr1 ansible_host=18.222.121.247 private_ip=172.16.129.86
[arista]
rtr2 ansible_host=18.188.194.126 private_ip=172.17.158.197
rtr4 ansible_host=18.221.5.35 private_ip=172.17.8.111
[juniper]
rtr3 ansible_host=3.14.132.20 private_ip=172.16.73.175
[cisco:vars]
ansible_user=ec2-user
ansible_network_os=ios
ansible_connection=network_cli
[juniper:vars]
ansible_user=ec2-user
ansible_network_os=junos
ansible_connection=netconf
[arista:vars]
ansible_user=ec2-user
ansible_network_os=eos
ansible_connection=network_cli
ansible_become=true
ansible_become_method=enable
[dc1]
rtr1
rtr3
[dc2]
rtr2
rtr4
[control]
ansible ansible_host=13.58.149.157 ansible_user=student1 private_ip=172.16.240.184
上記の出力では、すべての [ ]
がグループを定義しています。たとえば、[dc1]
は、ホスト rtr1
と rtr3
を含むグループです。グループは ネスト することもできます。グループ [routers]
はグループ [cisco]
の親グループです
親グループは、children
ディレクティブを使用して宣言されます。ネストされたグループがあると、より具体的な値を変数に柔軟に割り当てることができます。
グループとホストには、変数を関連付けることができます。
注記:
** all ** というグループは常に存在し、インベントリ内で定義されたすべてのグループとホストが含まれます。
ホスト変数は、ホスト自体と同じ行で定義できます。たとえば、ホスト rtr1
の場合:
rtr1 ansible_host=18.222.121.247 private_ip=172.16.129.86
rtr1
- Ansible が使用する名前。これは DNS に依存できますが、必須では必要ありませんansible_host
- ansible が使用する IP アドレス。設定されていない場合は、デフォルトで DNS になりますprivate_ip
- この値は ansible によって予約されていないため、デフォルトで ホスト変数 になります。この変数は、Playbook で使用することも、完全に無視することもできます。
グループ変数グループは、vars
ディレクティブを使用して宣言されます。グループを持つことで、共通の変数を複数のホストに柔軟に割り当てることができます。[group_name:vars]
セクションで複数のグループ変数を定義できます。たとえば、グループ cisco
を見てください。
[cisco:vars]
ansible_user=ec2-user
ansible_network_os=ios
ansible_connection=network_cli
ansible_user
- ユーザー ansible は、このホストへのログインに使用されます。設定されていない場合は、デフォルトで、プレイブックの実行元のユーザーになります。ansible_network_os
- この変数は、後で説明するように、play 定義内でnetwork_cli
接続タイプを使用するときに必要です。ansible_connection
- この変数は、このグループの 接続プラグイン を設定します。これは、この特定のネットワークプラットフォームがサポートするものに応じて、netconf
、httpapi
、network_cli
などの値に設定できます。
ansible-navigator
TUI を使用してインベントリーを調べることもできます。
ansible-navigator inventory
コマンドを実行して、TUI にインベントリーを取り込みます。
キーボードで 0 または 1 を押すと、それぞれグループまたはホストが開きます。
Esc キーを押して、上のレベルに移動することができます。または、個々のホストにズームできます。
ラボ環境には、rtr1、rtr2、rtr3、rtr4 という名前の 4
つのルーターがあります。ネットワークの図は、ネットワーク自動化ワークショップの目次 でいつでも利用できます。SSH
設定ファイル (~/.ssh/config
)
はすでにコントロールノードにセットアップされています。したがって、コントロールノードから任意のルーターにログインせずに SSH で接続できます。
たとえば、Ansible コントロールノードから rtr1 に接続するには、次のように入力します。
$ ssh rtr1
例:
$ ssh rtr1
Warning: Permanently added 'rtr1,35.175.115.246' (RSA) to the list of known hosts.
rtr1#show ver
Cisco IOS XE Software, Version 16.09.02
ラボ演習 1 を完了しました!
以下の内容について理解できるようになりました。
- Visual Studio Code を使用してラボ環境に接続する方法
ansible-navigator
を使用して 実行環境 を調べる方法- Ansible Navigator 設定 (
ansible-navigator.yml
) が保管される場所 - インベントリーがコマンドライン演習用に保存されている場所
- ansible-navigator TUI(テキストベースのユーザーインターフェース)の使用方法
Click Here to return to the Ansible Network Automation Workshop