はじめに: Azure VM で Ansible を構成する
この記事では、Azure で Ubuntu VM に Ansible をインストールする方法について説明します。
この記事では、次のことについて説明します。
- リソース グループを作成する
- Ubuntu 仮想マシンを作成する
- Ansible を仮想マシンにインストールする
- SSH 経由で仮想マシンに接続する
- 仮想マシンで Ansible を構成する
前提条件
- Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- Azure サービス プリンシパル: サービス プリンシパルを作成して、appId、displayName、password、および tenant の値をメモします。
仮想マシンの作成
Azure リソース グループを作成します。
az group create --name QuickstartAnsible-rg --location eastus
場合によっては、
--location
パラメーターをお使いの環境に適した値に置き換える必要があります。Ansible 用の Azure 仮想マシンを作成します。
az vm create \ --resource-group QuickstartAnsible-rg \ --name QuickstartAnsible-vm \ --image Ubuntu2204 \ --admin-username azureuser \ --admin-password <password>
<password>
をパスワードに置き換えます。Azure 仮想マシンのパブリック IP アドレスを取得します。
az vm show -d -g QuickstartAnsible-rg -n QuickstartAnsible-vm --query publicIps -o tsv
SSH 経由で仮想マシンに接続する
SSH コマンドを使用して、仮想マシンのパブリック IP アドレスに接続します。
ssh azureuser@<vm_ip_address>
<vm_ip_address>
を、前のコマンドで返された適切な値に置き換えます。
Ansible を仮想マシンにインストールする
Ansible と azure.azcollection
次のコマンドを実行して、Ubuntu で Ansible を構成します。
#!/bin/bash
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
# Install Ansible az collection for interacting with Azure. (optional)
ansible-galaxy collection install azure.azcollection --force
# Install Ansible modules for Azure (optional)
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements.txt
重要なポイント:
- Ansible 制御ノードには、Python 2 (バージョン 2.7) または Python 3 (バージョン 3.5 以上) がインストールされている必要があります。 Ansible 4.0.0 と ansible-core 2.11 には Python 3.8 に対する緩い依存関係がありますが、低いバージョンでも機能します。 ただし、Ansible 5.0.0 と ansible-core 2.12 には 3.8 以降が必要です。
Azure 資格情報の作成
Ansible の資格情報を構成するには、次の情報が必要です。
- Azure のサブスクリプション ID とテナント ID
- サービス プリンシパルのアプリケーション ID とシークレット
次のいずれかの方法を使って、Ansible の資格情報を構成します。
オプション 1: Ansible の資格情報ファイルの作成
このセクションでは、Ansible に資格情報を提供するためのローカル資格情報ファイルを作成します。 セキュリティ上の理由から、資格情報ファイルは開発環境でのみ使用してください。
Ansible の資格情報の定義について詳しくは、「Providing Credentials to Azure Modules (Azure モジュールに資格情報を提供する)」をご覧ください。
ホスト仮想マシンに正常に接続したら、
credentials
という名前のファイルを作成して開きます。mkdir ~/.azure vi ~/.azure/credentials
そのファイルに次の行を挿入します。 プレースホルダーをサービス プリンシパルの値に置き換えます。
[default] subscription_id=<subscription_id> client_id=<service_principal_app_id> secret=<service_principal_password> tenant=<service_principal_tenant_id>
ファイルを保存して閉じます。
オプション 2: Ansible 環境変数の定義
ホスト仮想マシンで、Ansible の資格情報を構成するためにサービス プリンシパルの値をエクスポートします。
export AZURE_SUBSCRIPTION_ID=<subscription_id>
export AZURE_CLIENT_ID=<service_principal_app_id>
export AZURE_SECRET=<service_principal_password>
export AZURE_TENANT=<service_principal_tenant_id>
Ansible インストールをテストする
これで、仮想マシンに Ansible がインストールされて構成されました。
このセクションでは、新しい Ansible 構成内でテスト リソース グループを作成する方法について説明します。 これを行う必要がない場合、このセクションはスキップしてかまいません。
オプション 1: アドホック ansible コマンドを使用する
次のアドホック ansible コマンドを実行して、リソース グループを作成します。
#Ansible with azure.azcollection
ansible localhost -m azure.azcollection.azure_rm_resourcegroup -a "name=<resource_group_name> location=<location>"
<resource_group_name>
と <location>
を独自の値に置き換えます。
オプション 2: Ansible プレイブックを作成して実行する
create_rg.yml
として次のコードを保存します。Ansible と azure.azcollection
- hosts: localhost connection: local collections: - azure.azcollection tasks: - name: Creating resource group azure_rm_resourcegroup: name: "<resource_group_name" location: "<location>"
<resource_group_name>
と<location>
を独自の値に置き換えます。ansible-playbook を使用してプレイブックを実行します。
ansible-playbook create_rg.yml
azure.azcollection の詳細を参照してください。
リソースをクリーンアップする
delete_rg.yml
として次のコードを保存します。--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
ansible-playbook コマンドを使用してプレイブックを実行します。 プレースホルダーは、削除するリソース グループの名前に置き換えます。 リソース グループ内のすべてのリソースが削除されます。
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
重要なポイント:
- プレイブックの
register
変数とdebug
セクションにより、コマンドの完了時に結果が表示されます。
- プレイブックの