はじめに: Azure VM で Ansible を構成する
注意事項
この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。
この記事では、Azure の Centos VM に Ansible をインストールする方法について説明します。
この記事では、次のことについて説明します。
- リソース グループの作成
- CentOS 仮想マシンを作成する
- 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 CentOS85Gen2 \ --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 2.9 と azure_rm モジュール
次のコマンドを実行して、Centos で Ansible 2.9 を構成します。
#!/bin/bash
# Update all packages that have available updates.
sudo yum update -y
# Install Python 3 and pip.
sudo yum install -y python3-pip
# Upgrade pip3.
sudo pip3 install --upgrade pip
# Install Ansible.
pip3 install "ansible==2.9.17"
# Install Ansible azure_rm module for interacting with Azure.
pip3 install ansible[azure]
Ansible 2.10 と azure.azcollection
次のコマンドを実行して、Centos で Ansible を構成します。
#!/bin/bash
# Update all packages that have available updates.
sudo yum update -y
# Install Python 3 and pip.
sudo yum install -y python3-pip
# Upgrade pip3.
sudo pip3 install --upgrade pip
# Install Ansible az collection for interacting with Azure.
ansible-galaxy collection install azure.azcollection
# Install Ansible modules for Azure
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements-azure.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 2.9 with azure_rm module
ansible localhost -m azure_rm_resourcegroup -a "name=ansible-test location=eastus"
#Ansible 2.10 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 2.9 と azure_rm モジュール
--- - hosts: localhost connection: local tasks: - name: Creating resource group azure_rm_resourcegroup: name: "<resource_group_name" location: "<location>"
Ansible 2.10 と 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
セクションにより、コマンドの完了時に結果が表示されます。
- プレイブックの
次のステップ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示