AnsiblePlaybookでシステムパッケージをインストールおよび管理する方法

提供:Dev Guides
移動先:案内検索

通常のアプリケーションスタックにはさまざまなソースのソフトウェアが必要なため、必要なシステムパッケージのインストールを自動化することは、Ansibleプレイブックの一般的な運用タスクです。

aptモジュールは、UbuntuなどのDebianベースのオペレーティングシステム上のシステムパッケージを管理します。このガイド全体でリモートノードで使用しているディストリビューションです。 次のプレイブックはaptキャッシュを更新し、Vimがリモートノードにインストールされていることを確認します。

ansible-practiceディレクトリにplaybook-09.ymlという名前の新しいファイルを作成します。

nano ~/ansible-practice/playbook-09.yml

次に、新しいプレイブックファイルに次の行を追加します。

〜/ 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 を使用して、インストールするパッケージの名前を含む配列を指定できます。 次のプレイブックでは、パッケージvimunzip、およびcurlがインストールされ、最新バージョンになっていることを確認します。

Ansibleコントロールノードのansible-practiceディレクトリにplaybook-10.ymlという名前の新しいファイルを作成します。

nano ~/ansible-practice/playbook-10.yml

次のコンテンツを新しいプレイブックファイルに追加します。

〜/ 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

次のような出力が表示されます。これは、同じタスクが、提供された異なる値vimcurl、および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オプションの使用方法など、システムパッケージの管理方法の詳細については、公式ドキュメントを参照してください。