AnsiblePlaybookでシステムパッケージをインストールおよび管理する方法
通常のアプリケーションスタックにはさまざまなソースのソフトウェアが必要なため、必要なシステムパッケージのインストールを自動化することは、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 を使用して、インストールするパッケージの名前を含む配列を指定できます。 次のプレイブックでは、パッケージvim
、unzip
、および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
次のような出力が表示されます。これは、同じタスクが、提供された異なる値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
オプションの使用方法など、システムパッケージの管理方法の詳細については、公式ドキュメントを参照してください。