Skip to main content

Ansible を使用してインストールを自動化する

オープンソースの Ansible ツールを使用して、1 つ以上の Linux サーバーへの DigiCert​​®​​ エージェントソフトウェアのサイレントモードインストールを自動化するには、以下の手順に従います。

中央の「制御」ノードシステム上にエージェントソフトウェアを格納して Ansible プレイブックを作成した後、このシステム上で Ansible プレイブックを実行して、ネットワーク経由でエージェントソフトウェアを Linux サーバー(「管理対象」ノード)にアップロード、解凍、およびインストールします。

開始する前に

  • Linux 版エージェントのサイレントモードインストールの準備」のすべてのステップを完了し、サイレントモードインストーラパッケージ(DigiCertTLMAgentGPOInstaller.tar.gz)を入手しておきます。インストールパッケージが機能することを検証するには、インストールコマンド を使用してエージェントを Linux サーバーの 1 つにサイレントモードでインストールしてみます。

  • Ansible ソフトウェアを中央制御システムにインストールします。詳細な手順については、『Ansible の公式ドキュメント』を参照してください。

  • 制御システムと、エージェントソフトウェアをインストールするすべての管理対象ノード上で Python が使用可能であることを確認します。

  • 制御システムから管理対象の Linux サーバーへの SSH アクセスが何らかの形で可能であることを確認します。たとえば、鍵ベース(パスワードレス)の SSH アクセスを有効にするには、ssh-keygen コマンドを使用して管理対象サーバーそれぞれに SSH 鍵ペアを生成し、ssh-copy-id コマンドを使用して公開鍵を中央制御システムにコピーします。

注記

以下のすべてのステップは Ansible 制御ノードシステム上で実行する必要があります。

  1. メインの Ansible 構成ディレクトリ /etc/ansible 内に、DigiCert エージェントソフトウェアを格納して Ansible ベースのインストールファイルを作成するためのサブディレクトリを作成します。以下の手順では、/etc/ansible/opt/digicert というサブディレクトリを使用します。たとえば、このサブディレクトリを制御ノード上に作成するには、次のコマンドを実行します。

    cd /etc/ansible
    mkdir -p opt/digicert
  2. サイレントモードインストーラパッケージ(DigiCertTLMAgentGPOInstaller.tar.gz)を上記のサブディレクトリにコピーします。

Ansible 制御ノードシステムに作成した /etc/ansible/opt/digicert サブディレクトリに var.yml というファイルを追加します。このファイルに、Linux サーバーでの DigiCert エージェントソフトウェアのインストール時に使用する変数を設定します。例:

options:
  AGENT_BUNDLE_NAME: tlm_agent_3.0.14_linux64.tar.gz
  BUSINESS_UNIT_ID: 542bce5b-9a54-41df-a054-fe977133ee09
  ALIASNAME: agents_subnet_1
  PROXY: http://125.125.125.125:3333

構成パラメータの説明:

Ansible 制御ノードシステムに作成した /etc/ansible/opt/digicert サブディレクトリに hosts.yml というファイルを追加します。このファイルに、DigiCert エージェントソフトウェアをインストールする Linux サーバーのリストと、Ansible が使用すべき一般的な操作パラメータを設定します。例:

[servers]
server1 ansible_host=10.0.0.1
server2 ansible_host=10.0.0.2
server3 ansible_host=10.0.0.2

[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_user=admin

注:

  • ホストリストのディレクティブ名(この例では servers)は、Ansible プレイブックで使用するものと一致させる必要があります(以下のステップ 4 参照)。

  • all:vars ディレクティブは、Ansible が各ホストにアクセスしてソフトウェアをインストールするために使用すべき追加の操作パラメータを設定します。この例で使用されているパラメータは次のとおりです。

    • ansible_python_interpreter: 各ホストで使用する Python 実行可能ファイルのパス

    • ansible_user: 各ホストへの接続とソフトウェアのインストールに使用する SSH ユーザー名

      注記

      この例では、鍵ベース(パスワードレス)の SSH 認証を前提としています。パスワードベースの SSH 認証の場合、さらに ansible_password ディレクティブを追加します。パスワードを安全に保つために、Ansible Vault などを使用します。

Ansible インベントリ構成をテストするには、次のコマンド構文を使用します。

ansible-inventory -i {INVENTORY_FILE} --list -y

例:

ansible-inventory -i /etc/ansible/opt/digicert/hosts.yml --list -y

コマンドが成功した場合、Ansible インベントリファイル内のすべてのホストがリストされます。

Ansible プレイブックは、ソフトウェアインストールプロセスを推進し、必要なすべてのタスクを定義するものです。

Ansible 制御ノードシステムに作成した /etc/ansible/opt/digicert サブディレクトリにプレイブックファイルを追加します。プレイブックファイルに main.yml などの名前を付け、次のようにファイルを設定します。

- hosts: servers # Match the directive in the hosts.yml file
  gather_facts: no
  vars_files: 
    - var.yml
  tasks:
    - name: "Creating a directory if it doesn't exists"
      ansible.builtin.file:
        path: /opt/digicert
        state: directory
        mode: '0755'
      become: yes  # Use this if you need root permissions
      loop: "{{ nodes }}"
      loop_control:
        loop_var: item

    - name: "Copying the tar to remote systems"
      ansible.builtin.copy:
        src: DigiCertTLMAgentGPOInstaller.tar.gz
        dest: /opt/digicert/DigiCertTLMAgentGPOInstaller.tar.gz
        mode: '0644'
      become: yes
      loop: "{{ nodes }}"
      loop_control:
        loop_var: item

    - name: "Extracting the tar on the remote system"
      ansible.builtin.unarchive:
        src: /opt/digicert/DigiCertTLMAgentGPOInstaller.tar.gz
        dest: /opt/digicert
        remote_src: yes
        creates: /opt/digicert/DigiCertTLMAgentGPOInstaller/extracted_file_or_directory  # Use this to avoid re-extraction if the operation has already been done
      become: yes
      loop: "{{ nodes }}"
      loop_control:
        loop_var: item

    - name: "Making the script executable on the remote system"
      ansible.builtin.file:
        path: /opt/digicert/DigiCertTLMAgentGPOInstaller/silentInstaller-by-companion-lnx.sh
        mode: '0755'
        state: file
      become: yes
      loop: "{{ nodes }}"
      loop_control:
        loop_var: item

    - name: "Executing the script on the remote system"
      ansible.builtin.shell: 
        cmd: "/opt/digicert/DigiCertTLMAgentGPOInstaller/silentInstaller-by-companion-lnx.sh AGENT_BUNDLE_NAME={{ options['AGENT_BUNDLE_NAME'] }} BUSINESS_UNIT_ID={{ options['BUSINESS_UNIT_ID'] }} ALIASNAME={{ options['ALIASNAME'] }} PROXY= {{ options['PROXY'] }}"
        executable: /bin/bash
      become: yes
      loop: "{{ nodes }}"
      loop_control:
        loop_var: item
      register: out

    - debug:
        var: out

注:

  • name パラメータは、各インストールタスクの実行中に何が行われるかを記述します。

  • 「Executing the script」というタスクの cmd を必要に応じて調整し、ステップ 2var.yml ファイルで定義したインストールパラメータと一致させます。

  • 上記の例の該当する行に、追加のメモがコメント(# 文字に続く部分)として入力されています。

Ansible 制御ノードでプレイブックを実行し、DigiCert エージェントソフトウェアをリモートの Linux サーバーにインストールするための定義済みタスクを実行します。

/etc/ansible/opt/digicert ディレクトリに移動し、次のコマンドでプレイブックを実行します。その際、インベントリファイルとプレイブックファイルの名前を代入します。

ansible-playbook -i {INVENTORY_FILE} {PLAYBOOK_FILE} -vvv

例:

ansible-playbook -i hosts.yml main.yml -vvv

注:

  • -vvv オプションは、高度な詳細モードのいずれかでコマンドを実行します。このモードはインストールプロセスについての詳細な出力を提供します。

  • プレイブックの実行が失敗する原因の多くは、Ansible 構成内のファイルパスが間違っていることです。プレイブックを詳細モードで実行すると、トラブルシューティングが容易になります。

次の手順

正常にインストールおよびプロビジョニングされたエージェントは、DigiCert​​®​​ Trust Lifecycle Manager の[Discovery & automation tools > Agents]ページにリストされます。各エージェントには ALIASNAME パラメータの値に基づいて、またはこのパラメータを省略した場合はライセンスキーに基づいて、名前が付けられます。