強化 Linux リポジトリー・サーバーの OS の構成
このステップでは、Veeam® の強化 Linux® バックアップ・サーバーとして役割を果たせるようにサーバーを準備するための、いくつかのオペレーティング・システム (OS) 構成タスクを含む Ansible® Playbook について説明します。 この Playbbok は、Red Hat® ディストリビューションに対してテストされます。
Playbook は以下のタスクを実行します。
- OS パッケージのアップグレード
- タイム・ゾーンの構成
veeamlhbr
と呼ばれるユーザーを追加して、ファイル・システムの所有権をこのユーザーに変更- Linux ファイアウォールを構成
- DNS 項目を変更
Playbook は、Visual Studio Code などのエディターを使用してラップトップ上でローカルに作成できます。自動化サーバーの \swlib\ansible
ディレクトリーに転送することも、vi や nano などのテキスト・エディターで自動化サーバー上でローカルに編集することもできます。
サーバー名と IP アドレスは、AD/DNS サーバー内の DNS に登録する必要があります。
Playbook の作成
Playbook create_lhbr.yml
は、以下のコードで開始します。
- hosts: lhbr
vars_files:
- vault
vars:
password: "{{ vault_lhbr_password }}"
timezone: <timezone>
vbr_ip: <vbr_ip>
ansible_ip: <ansible_ip>
dns_1: <addns1>
dns_2: <addns2>
tasks:
上記のコード・スニペットのtimezone
、vbr_ip
、ansible_ip
、addns1
および addns2
を、以前のステップで取得した値に置き換えます。 上記のコードにより、以下のアクションが実行されます。
- インベントリー・ファイル内で
lhbr
として定義されているホスト上で Playbook を実行することを定義します。 - 他の変数を含む、
vault
という名前のファイルを定義します。 前のステップで作成されたvault
ファイルは暗号化されており、パスワードなどの機密変数が含まれています。 - タイム・ゾーン、ファイアウォールを構成するための VBR サーバーと自動化サーバーの IP アドレス、および DNS 変更のための DNS IP アドレスを定義します。
OS パッケージのアップグレード
以下のコード・スニペットにより、パッケージ・キャッシュが更新され、OS パッケージがアップグレードされます。
tasks:
- name: Update cache
yum:
update_cache: yes
- name: Upgrade all packages
yum:
name: "*"
state: latest
タイム・ゾーンの構成
Red Hat ディストリビューションでは、NTP サーバーが構成され、servertime.service.softlayer.com
を指しています。 そのため、正しいタイム・ゾーンのみを構成する必要があります。
- name: Set timezone
community.general.timezone:
name: "{{ timezone }}"
リポジトリーのファイル・システムの構成
コード・スニペットにより、以下のアクションが実行されます。
/disk1
ファイル・システムをアンマウントする。fstab
が設定できるように、パーティションの UUID をキャプチャします。- UUID に
/mnt/veeamrepo01
を使用し、xfs
区画をマウントする。
- name: Unmount and remove from /etc/fstab
ansible.posix.mount:
path: /disk1
state: absent
- name: Unmount and remove from /etc/fstab
ansible.posix.mount:
path: /mnt/veeamrepo01
state: absent
- name: Get UUID of /dev/sdb1 and store in variable
command: blkid -s UUID -o value /dev/sdb1
register: uuid_dev_sdb1
- name: Mount as /mnt/veeamrepo01 and add to /etc/fstab
ansible.posix.mount:
path: /mnt/veeamrepo01
src: "UUID={{ uuid_dev_sdb1.stdout }}"
fstype: xfs
state: mounted
上記のコードを実行する前に、サーバーで df -Th
コマンドを実行すると、出力は以下のようになります。
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 32G 0 32G 0% /dev
tmpfs tmpfs 32G 0 32G 0% /dev/shm
tmpfs tmpfs 32G 42M 32G 1% /run
tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda3 xfs 929G 9.2G 920G 1% /
/dev/sda1 xfs 1006M 273M 734M 28% /boot
/dev/sdb1 xfs 11T 80G 11T 1% /disk1
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/1001
上記のコードを実行した後、df -Th
コマンドを実行した場合、出力は以下のように表示されます。
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 32G 0 32G 0% /dev
tmpfs tmpfs 32G 0 32G 0% /dev/shm
tmpfs tmpfs 32G 42M 32G 1% /run
tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda3 xfs 929G 9.2G 920G 1% /
/dev/sda1 xfs 1006M 273M 734M 28% /boot
/dev/sdb1 xfs 11T 80G 11T 1% /mnt/veeamrepo01
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/1001
ユーザーの追加およびファイル・システムの所有権の変更
コード・スニペットにより、以下のアクションが実行されます。
veeamlhbr
という名前のグループの追加。veeamlhbr
という名前のユーザーの追加。/mnt/veeamrepo01
の所有権を変更し、所有者は読み取り、書き込み、および実行が可能で、グループは読み取り、書き込み、および実行ができないように許可を設定します。 他のユーザーは、読み取り、書き込み、および実行ができません。 Veeam では、ファイル・システムの読み取りと書き込みを行う際にこのユーザーを使用します。
リポジトリーのセキュリティーを最大限に高めるため、Linux サーバー上の認証証明書のファイル・アクセス権を変更します。 詳しくは、硬化リポジトリのセキュリティを強化するためのヒントを参照してください。
- name: Create the veeamlhbr group
ansible.builtin.group:
name: veeamlhbr
state: present
- name: Add the user 'veeamlhbr' with a bash shell
ansible.builtin.user:
name: veeamlhbr
shell: /bin/bash
create_home: yes
password: "{{ password | password_hash('sha512') }}"
state: present
groups: veeamlhbr,wheel
append: yes
- name: Change ownership of /mnt/veeamrepo01 to veeamlhbr
ansible.builtin.file:
path: /mnt/veeamrepo01
state: directory
owner: veeamlhbr
group: veeamlhbr
mode: "700"
Linux ファイアウォールの設定
コード・スニペットにより、以下のアクションが実行されます。
- TCP ポート
22
上の Veeam バックアップ・サーバーからの SSH の許可。 このルールは、最初に Veeam バックアップ・サーバーが接続され、必要な Veeam サービスがインストールされると削除されます。 - 自動化サーバーからの SSH アクセスを許可。 このルールは、コンフィギュレーション・タスクの完了後に削除できる。 ただし、削除すると今後の保守作業が困難になる可能性があります。
- Veeam バックアップ・サーバーが TCP ポート
6162
にアクセスできるように許可。 このポートは、リポジトリー・サーバーとの通信に使用される Veeam 制御チャネルです。 - ファイアウォールが開始され、起動すると有効になり、ロギングが有効化されます。
- name: Enable firewalld on system reboot
service:
name: firewalld
enabled: yes
- name: Allow SSH
ansible.posix.firewalld:
service: ssh
permanent: yes
state: enabled
- name: Allow incoming access from the vbr server for management
ansible.posix.firewalld:
port: 6162/tcp
permanent: yes
state: enabled
- name: Reload firewall and enable firewall on boot
service:
name: firewalld
state: restarted
DNS の変更
以下のコード・スニペットは、IBM Cloud® DNSリゾルバ - 10.0.80.11
と 10.0.80.12
のDNSを、VMware Cloud Foundation for Classic - Automated インスタンスDNS - addns1
と addns2
で変更します。
- name: Change resolv nameserver_1
replace:
path: /etc/resolv.conf
regexp: "10.0.80.11"
replace: "{{ dns_1 }}"
- name: Change resolv nameserver_2
replace:
path: /etc/resolv.conf
regexp: "10.0.80.12"
replace: "{{ dns_2 }}"
Playbook のファイナライズ
ファイルを保存します。 ファイルは、自動化サーバー上の \swlib\ansible
ディレクトリーに保存するようにします。