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 制御ノードシステム上で実行する必要があります。
メインの Ansible 構成ディレクトリ /etc/ansible 内に、DigiCert エージェントソフトウェアを格納して Ansible ベースのインストールファイルを作成するためのサブディレクトリを作成します。以下の手順では、/etc/ansible/opt/digicert というサブディレクトリを使用します。たとえば、このサブディレクトリを制御ノード上に作成するには、次のコマンドを実行します。
cd /etc/ansible mkdir -p opt/digicert
サイレントモードインストーラパッケージ(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を必要に応じて調整し、ステップ 2 の var.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 パラメータの値に基づいて、またはこのパラメータを省略した場合はライセンスキーに基づいて、名前が付けられます。