Ansible を使用して rpm/deb パッケージを更新する
目的
SIDfmVM には、ホストの rpm/deb パッケージを更新するための Ansible Playbook を生成する機能があります。 このドキュメントでは、その機能で生成した Ansible Playbook を使用し、ホストの rpm/deb パッケージを最新版に更新する手順を示します。
前提条件
-
Ansible のコントロールノードが構成済みであること
未構成の場合は Ansible をインストール してください。
- ホストのディストリビューションが次のいずれかであること
- Amazon Linux 2
- Red Hat Enterprise Linux 6/7
- CentOS 6/7
- Ubuntu 14.04 LTS/16.04 LTS/18.04 LTS
※ Windows ホストについては Ansible を使用して Windows Update を実行する をご参照ください。
-
ホストは Ansible から操作可能であること
設定方法の詳細につきましては Ansible で Linux ホストを操作できるように設定する をご覧ください。
Playbook を生成する
インベントリを作成する (初回または必要に応じて)
インベントリとは、Ansible の操作対象となるホストやそれらのグループを列挙したファイルのことです。 このインベントリに定義されたホストやホストグループは、Ansible の Playbook やアドホックコマンドを実行する際に参照されます。 インベントリにはホストやホストグループに関する変数 (ホスト変数/グループ変数) を設定したり、ホストへの接続に使用するユーザを指定することも可能です。
SIDfmVM において生成した Playbook を実行するために、インベントリに対象となるホストを追加します。
-
Ansible コントロールノードに Ansible を使用するユーザでログインします。
-
インベントリファイルを作成あるいは編集します。
※ Ansible を dnf/yum/apt コマンドを使用してパッケージからインストールした場合、
/etc/ansible/hosts
にインベントリファイルが作成されます。 しかしながら、プロダクション環境とテスト環境でインベントリファイルを分けることなどを考慮して、新たにインベントリファイルを作成することをお勧めします。エディタで hosts という名前のファイルを作成してください。既に hosts を作成している場合は、既存のファイルを開いてください。
$ vi hosts
-
グループを作成します。(設定する際には適切な値を設定してください。)
[example_group]
-
グループにホストを追加します。
ここに追加するホスト名は、Playbook の
hosts:
項目と一致させてください。 逆に、お客様にとって都合のよい値をインベントリにホストとして登録し、生成した Playbook のhosts:
項目をそれに合わせる形でも問題ございません。hosts ファイル:
[example_group]
hostname0
hostname1
生成した Playbook (yum):
- name: update rpm packages
hosts: hostname0
tasks:
- name: yum update
yum:
name:
(以下略)
生成した Playbook (apt):
- name: update deb packages
hosts: hostname1
tasks:
- name: apt upgrade
apt:
name:
(以下略)
-
保存後、閉じます。
編集後の hosts ファイル:
[example_group]
hostname0
hostname1
Playbook を実行する
-
Ansible コントロールノードに Ansible を使用するユーザでログインします。
-
生成した Playbook を Ansible コントロールノードにコピーします。
-
Playbook を実行します。
$ ansible-playbook -i hosts ansible_playbook_for_update_packages_on_host0.yml
状態が
Failed
になった場合は、何らかの原因で処理に失敗しています。 「Ansible をインストールする - トラブルシューティング」 を参照の上、原因を修正し、再度 Playbook を実行してください。
注意事項
プロダクション環境に対して Playbook を実行する前に必ずテスト環境でお試しください
SIDfmVM から生成されたパッケージ更新のための Ansible Playbook は、更新されたパッケージやそれらのパッケージを利用するアプリケーションが正常に動作することを保証するものではありません。
Playbook によるパッケージ更新に伴い、アプリケーションやサービスが正常に動作しなくなる可能性や、プロセスが再起動する可能性があります。 このため、プロダクション環境に対して Playbook を実行する前に、必ずテスト環境で試行し、Playbook 実行後の挙動をご確認ください。