AnsiblePlaybookでシステムパッケージをインストールおよび管理する方法
通常のアプリケーションスタックにはさまざまなソースのソフトウェアが必要なため、必要なシステムパッケージのインストールの自動化は、Ansibleプレイブックの一般的な運用タスクです。
apt
モジュールは、UbuntuなどのDebianベースのオペレーティングシステム上のシステムパッケージを管理します。このガイド全体でリモートノードで使用しているディストリビューションです。 次のプレイブックはapt
キャッシュを更新し、Vimがリモートノードにインストールされていることを確認します。
ansible-practice
ディレクトリにplaybook-09.yml
という名前の新しいファイルを作成します。
- nano ~/ansible-practice/playbook-09.yml
次に、次の行を新しいプレイブックファイルに追加します。
---
- hosts: all
become: yes
tasks:
- name: Update apt cache and make sure Vim is installed
apt:
name: vim
update_cache: yes
完了したら、ファイルを保存して閉じます。
プレイの最初にbecome
ディレクティブが含まれていることに注意してください。 パッケージのインストールには管理システムのアクセス許可が必要なため、これが必要です。
パッケージの削除も同様の方法で行われますが、唯一の変更点は、パッケージの状態をabsent
に定義する必要があることです。 state
ディレクティブのデフォルト値はpresent
です。これにより、バージョンに関係なく、パッケージがシステムにインストールされます。 パッケージが存在しない場合はインストールされます。 パッケージの最新バージョンを確実に入手するには、代わりにlatest
を使用できます。 これにより、apt
は、要求されたパッケージが最新バージョンでない場合、要求されたパッケージを更新します。
このプレイブックを実行するときは、sudo
権限が必要なため、-K
オプションを指定することを忘れないでください。
- ansible-playbook -i inventory playbook-09.yml -u sammy -K
OutputBECOME password:
PLAY [all] **********************************************************************************************
TASK [Gathering Facts] **********************************************************************************
ok: [203.0.113.10]
TASK [Update apt cache and make sure Vim is installed] **************************************************
ok: [203.0.113.10]
PLAY RECAP **********************************************************************************************
203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
複数のパッケージをインストールする場合は、 loop を使用して、インストールするパッケージの名前を含む配列を指定できます。 次のプレイブックでは、パッケージvim
、unzip
、およびcurl
がインストールされ、最新バージョンになっていることを確認します。
Ansibleコントロールノードのansible-practice
ディレクトリにplaybook-10.yml
という名前の新しいファイルを作成します。
- nano ~/ansible-practice/playbook-10.yml
次のコンテンツを新しいプレイブックファイルに追加します。
---
- hosts: all
become: yes
tasks:
- name: Update apt cache and make sure Vim, Curl and Unzip are installed
apt:
name: "{{ item }}"
update_cache: yes
loop:
- vim
- curl
- unzip
終了したら、ファイルを保存して閉じます。
次に、前の例と同じ接続引数を使用してansible-playbook
を実行します。このプレイブックには管理者権限が必要なため、-K
オプションを含めることを忘れないでください。
- ansible-playbook -i inventory playbook-09.yml -u sammy -K
次のような出力が表示されます。これは、同じタスクが、提供された異なる値vim
、curl
、およびunzip
を使用して3回の反復を実行したことを示しています。
OutputBECOME password:
PLAY [all] ***************************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************************
ok: [203.0.113.10]
TASK [Update apt cache and make sure Vim, Curl and Unzip are installed] **************************************************************************
ok: [203.0.113.10] => (item=vim)
ok: [203.0.113.10] => (item=curl)
changed: [203.0.113.10] => (item=unzip)
PLAY RECAP ***************************************************************************************************************************************
203.0.113.10 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
パッケージの削除方法や高度なapt
オプションの使用方法など、システムパッケージの管理方法の詳細については、公式ドキュメントを参照してください。