ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で入手できます。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Linux Automation Engineによるプレイブックの記述
イントロダクション
Oracle Linux Automation ManagerのコンポーネントであるOracle Linux Automation Engineは、ソフトウェアのデプロイ、システムの構成、およびアップグレードや更新などのタスクの調整をプレイブックの形式で行うための自動化ツールです。最初はansible
パッケージを使用しており、Oracle Linux Automation Engineはオープンソースのansible-core
ソフトウェア・パッケージに由来するようになりました。
次のチュートリアルでは、Oracle Linux Automation Engineを使用したプレイブックの記述について説明します。
目的
このチュートリアルでは、次の方法を学習します。
- Oracle Linux Automation Engineのインストール
- インベントリ・ファイルの作成
- アドホック・コマンドの実行
- プレイブックの記述と実行
前提条件
-
次の構成を持つ2つ以上のOracle Linuxシステム:
sudo
権限を持つroot以外のユーザー- root以外のユーザーのsshキーペア
- パスワードなしのSSHログインを使用して、あるホストから別のホストにSSHを実行する機能
Oracle Linuxのデプロイ
ノート:独自のテナンシで実行している場合は、linux-virt-labs
GitHubプロジェクトREADME.mdを読み、演習環境をデプロイする前に前提条件を完了してください。
-
Lunaデスクトップでターミナルを開きます。
-
linux-virt-labs
GitHubプロジェクトをクローニングします。git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
作業ディレクトリに移動します。
cd linux-virt-labs/olam
-
必要なコレクションをインストールします。
ansible-galaxy collection install -r requirements.yml
-
Oracle Linuxインスタンス構成を更新します。
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ol-control-node" type: "control" 2: instance_name: "ol-host" type: "remote" EOF
-
演習環境をデプロイします。
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
無料の演習環境では、追加変数
local_python_interpreter
が必要です。この変数は、localhostで実行されている再生用にansible_python_interpreter
を設定します。この変数は、python3.6モジュールの下にあるOracle Cloud Infrastructure SDK for PythonのRPMパッケージが環境によってインストールされるため必要です。デフォルトのデプロイメント・シェイプでは、AMD CPUおよびOracle Linux 8が使用されます。Intel CPUまたはOracle Linux 9を使用するには、デプロイメント・コマンドに
-e instance_shape="VM.Standard3.Flex"
または-e os_version="9"
を追加します。重要:プレイブックが正常に実行されるまで待機し、一時停止タスクに到達します。プレイブックのこの段階で、Oracle Linuxのインストールが完了し、インスタンスの準備ができました。前の再生に注意してください。これは、デプロイするノードのパブリックIPアドレスとプライベートIPアドレス、および演習の実行中に必要なその他のデプロイメント情報を出力します。
Oracle Linux Automation Engine制御ノードの設定
制御ノードは、Oracle Linux Automation Engineプレイブックを実行するためのシステムです。再生ブックを実行するには、Oracle Linux Automation Engineパッケージをインストールする必要があります。
-
制御ノードのIPアドレスと同じ変数を設定します。
export CONTROL="<ip_address_of_ol-control-node>"
-
端末を開き、SSH鍵ペアを制御ノードにコピーします。
scp -rp ~/.ssh/id_rsa* oracle@$CONTROL:~/.ssh/
-
SSH秘密キーに対する権限を設定します。
ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa"
-
SSHを介してol-control-nodeシステムに接続します。
ssh oracle@$CONTROL
-
Oracle Linux Automation Engineパッケージおよび依存関係をインストールします。
sudo dnf install -y ansible-core
ansible-core
パッケージは、Oracle Linuxのol8_appstream
リポジトリで使用できます。 -
パッケージのインストールをテストします。
ansible --version
出力には、コマンドのバージョン、構成の詳細、および Pythonバージョンの依存関係が表示されます。
ノート:出力にERROR: Ansibleでは、ロケール・エンコーディングをUTF-8、検出なしにする必要があります。これは、
ansible
のロケール設定が正しくないことを示します。次の2つの環境変数を設定して問題を修正します。export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
インベントリの作成
インベントリ・ファイルには、インフラストラクチャに属するホスト、またはOracle Linux Automation Engineを使用して管理するホストの詳細が含まれます。これらの詳細は、アドホック・コマンドまたはプレイブックの実行時にこれらのホストに接続する方法を示しています。
IPアドレスまたはホスト名情報の収集
Oracle Linux Automation Engineのインベントリを作成するには、管理するシステムのIPアドレスまたは解決可能なホスト名を決定する必要があります。ステップは、システムのタイプとデプロイ先によって異なります。
提供されている無料のラボ環境では、ol-host
システムのIPアドレスが必要です。このIPアドレスは、「Luna Lab」の「Resources」タブを使用して検索します。
インベントリ・ファイルの作成
Oracle Linux Automation Engineは、デフォルトのインベントリを/etc/ansible/hosts
に配置します。また、プロジェクト・レベルのインベントリ・ファイルも使用できます。プロジェクト・レベルのインベントリを使用する場合は、アドホック・コマンドまたはプレイブックを実行するときに、-i
オプションを使用してインベントリ・ファイルへのパスを指定する必要があります。
Oracle Linux Automation Engine制御ノードのターミナルから:
-
プロジェクト・ディレクトリの作成
mkdir ~/ol-automation
-
新しいディレクトリに移動し、選択したテキスト・エディタを使用して新しいインベントリ・ファイルを開きます。ここでは、
vi
を使用します。cd ~/ol-automation
vi inventory
-
i
を入力して、vi
挿入モードに入ります。 -
指定されたol-hostシステムのパブリックIPアドレスを追加します。ファイルにはIPアドレスのみを含める必要があります。
次に例を示します:
130.61.100.96
-
保存してファイルを閉じます。
vi
を使用する場合は、ESC
、:wq!
およびENTER
を入力できます。 -
インベントリ・ファイルを検証します。
ansible-inventory -i inventory --list
出力に在庫情報が表示されます。
出力例:
{ "_meta": { "hostvars": {} }, "all": { "children": [ "ungrouped" ] }, "ungrouped": { "hosts": [ "130.61.100.96" ] } }
参照
all
はインベントリ・ファイル内のすべてのホストを指し、ungrouped
セクションはリストされたグループの一部ではないホストを対象としています。 -
インベントリを編集し、
development
というグループ内にホストを配置します。vi inventory
-
i
を入力して、vi
挿入モードに入ります。 -
例に示すように、次のIPアドレスを使用して、カッコ内のグループ名を追加します。
次に例を示します:
[development] 130.61.100.96
-
保存してファイルを閉じます。
vi
を使用する場合は、ESC
、:wq!
およびENTER
を入力できます。 -
検証ステップを再度実行して、出力に追加されたグループを確認します。
ansible-inventory -i inventory --list
出力には、更新された情報がグループとともに表示されます。
出力例:
{ "_meta": { "hostvars": {} }, "all": { "children": [ "development", "ungrouped" ] }, "development": { "hosts": [ "130.61.100.96" ] } }
アドホック・コマンドの実行
Oracle Linux Automation Engineには、プレイブックの作成を必要としない複数の1回の実行モジュールがあります。最も基本的なモジュールはping
モジュールで、インベントリで提供される詳細に基づいてSSH接続を試行します。
Oracle Linux Automation Engine制御ノードのターミナルから:
-
ping
モジュールを実行します。ansible all -i inventory -m ping
all
オプションは、-i
オプションで指定されたインベントリ・ファイルにリストされているすべてのホストに対して実行するようにコマンドに指示します。このコマンドは、個々のホスト名またはグループも受け入れます。-m
オプションは、実行するモジュールを指定します。 -
プロンプトで
yes
と入力して、ECDSAキー・フィンガープリントを受け入れます。環境によっては、
ping
が次の出力で失敗することがあります。出力例:
130.61.100.96 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '130.61.100.96' (ECDSA) to the list of known hosts.\r\noracle@130.61.100.96: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).", "unreachable": true }
この失敗は、管理しようとしているホストにローカル・ユーザー・アカウント
oracle
が存在しないために発生します。変数ansible_user
を使用して、インベントリに有効なリモート・ユーザーを追加して、これを修正します。インベントリ・ファイルで、ホストにホスト名参照を指定し、IPアドレスを変数ansible_host
に割り当てます。 -
リモート・ユーザーをインベントリ・ファイルに追加します。
vi inventory
-
i
を入力して、vi
挿入モードに入ります。 -
例に示すように、2つの変数を追加します。
次に例を示します:
[development] ol-host ansible_host=130.61.100.96 ansible_user=opc
無料のラボ環境では、
opc
というユーザーを含むリモート管理をテストするための事前構成済システムが提供されます。opc
は、Oracle Cloud Infrastructure (OCI)のOracle Linuxインスタンスで作成されるデフォルト・ユーザーです。ホスト名にはol-host
というサンプル名を使用できます。 -
保存してファイルを閉じます。
vi
を使用する場合は、ESC
、:wq!
およびENTER
と入力して実行できます。 -
all
ではなくホスト名を使用して、ping
モジュールを再実行します。ansible ol-host -i inventory -m ping
コマンドは正常に実行され、結果は次のようになります。
出力例:
ol-host | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
プレイブックを書く
プレイブックは、適切なYAML構文で記述された一連の命令で、単一のホストまたはホスト・グループに対して実行されます。これらのファイルのデフォルトの拡張子は、.yml
または.yaml
です。
最初のプレイブックは、作成されたインベントリ・ファイルからall
ホストをターゲットとします。このサンプル・プレイブックは、デバッグ・メッセージを出力する単一のタスクで構成されます。
Oracle Linux Automation Engine制御ノードのターミナルから:
-
新しいプレイブックファイルを作成します。
vi hello.yml
-
i
を入力して、vi
挿入モードに入ります。 -
次のテキストをプレイブックファイルに追加します。
次に例を示します:
--- - hosts: all tasks: - name: Print message debug: msg: Hello from Oracle Linux
プレイブックは、常に
---
で始まり、次に管理するホストを指定するhosts
行が続く必要があります。all
値は、インベントリにリストされているすべてのホストでプレイブックが動作することを示します。または、各ターゲットをコロンまたはカンマで区切ってリストすることによって、ホストまたはグループの特定のリストに対してのみタスクを実行するようにプレイブックに指示することもできます。次に、タスクはデバッグ・モジュールを使用してメッセージを出力します。name
行を指定すると、Oracle Linux Automation Engineはプレイブックの実行時に端末に出力を表示します。 -
保存してファイルを閉じます。
vi
を使用する場合は、ESC
、:wq!
およびENTER
と入力して実行できます。 -
インベントリに対してhello.ymlプレイブックを実行します。
ansible-playbook -i inventory hello.yml
インベントリ・ファイルで変数
ansible_user
を使用するかわりに、オプション-u username
を使用してコマンドラインでリモート・ユーザー名を渡すことができます。ansible-playbook -i inventory hello.yml -u opc
すべてが機能すると、コマンドは正常に完了し、デバッグ・メッセージが出力されます。
出力例:
PLAY [all] ********************************************************************* TASK [Gathering Facts] ********************************************************* [WARNING]: Platform linux on host ol-host is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/referen ce_appendices/interpreter_discovery.html for more information. ok: [ol-host] TASK [Print message] *********************************************************** ok: [ol-host] => { "msg": "Hello from Oracle Linux" } PLAY RECAP ********************************************************************* ol-host : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
インベントリでは単一のホスト
ol-host
のみが定義されるため、プレイブックは1回実行されます。プレイブックにリストされているタスクを実行する前に、Oracle Linux Automation Engineは、ファクトと呼ばれるデフォルトのタスク収集情報を実行します。このタスクは、リモートホストに関する情報を取り込みます。このプレイブックは、あとで条件によってタスクの動作をカスタマイズするために使用できます。 -
次の非定型コマンドを実行して、ホストのfactsの完全なリストを出力します。
ansible ol-host -i inventory -m setup
次のステップ
このメッセージおよびfacts出力は、Oracle Linux Automation Engineを使用して最初のプレイブックを正常に実行したことを確認します。
関連リンク
- Oracle Linux Automation Managerドキュメント
- Oracle Linux Automation Managerトレーニング
- Oracle Linuxトレーニング・ステーション
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Write a Playbook with Oracle Linux Automation Engine
F52967-04
Copyright ©2021, Oracle and/or its affiliates.