はじめに: Azure VM で Ansible を構成する

注意事項

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

この記事では、Azure の Centos VM に Ansible をインストールする方法について説明します。

この記事では、次のことについて説明します。

  • リソース グループの作成
  • CentOS 仮想マシンを作成する
  • Ansible を仮想マシンにインストールする
  • SSH 経由で仮想マシンに接続する
  • 仮想マシンで Ansible を構成する

前提条件

  • Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

仮想マシンの作成

  1. Azure リソース グループを作成します。

    az group create --name QuickstartAnsible-rg --location eastus
    

    場合によっては、--location パラメーターをお使いの環境に適した値に置き換える必要があります。

  2. Ansible 用の Azure 仮想マシンを作成します。

    az vm create \
    --resource-group QuickstartAnsible-rg \
    --name QuickstartAnsible-vm \
    --image CentOS85Gen2 \
    --admin-username azureuser \
    --admin-password <password>
    

    <password> をパスワードに置き換えます。

  3. 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 モジュールに資格情報を提供する)」をご覧ください。

  1. ホスト仮想マシンに正常に接続したら、credentials という名前のファイルを作成して開きます。

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. そのファイルに次の行を挿入します。 プレースホルダーをサービス プリンシパルの値に置き換えます。

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. ファイルを保存して閉じます。

オプション 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 プレイブックを作成して実行する

  1. 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> を独自の値に置き換えます。

  2. ansible-playbook を使用してプレイブックを実行します。

    ansible-playbook create_rg.yml
    

azure.azcollection の詳細を参照してください。

リソースをクリーンアップする

  1. delete_rg.yml として次のコードを保存します。

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. ansible-playbook コマンドを使用してプレイブックを実行します。 プレースホルダーは、削除するリソース グループの名前に置き換えます。 リソース グループ内のすべてのリソースが削除されます。

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    重要なポイント:

    • プレイブックの register 変数と debug セクションにより、コマンドの完了時に結果が表示されます。

次のステップ