UbuntuにAnsibleをインストール
公式ドキュメント: https://docs.ansible.com
インストール
ローカルで実行
Ansible を使ってローカルマシンに対してコマンドを実行したり、パッケージをインストールしたりします。対して、リモートで実行する方法は後述しています。
コマンドを実行
localhost
でローカルで実行することを指定。-m ansible.builtin.command
で command モジュールを指定(デフォルトなので省略可)。-a 'ls ~/'
でモジュールの引数(ここではコマンド)を指定。
実行すると、ローカルマシンのホームディレクトリのファイル一覧が出力されます。
パッケージをインストール
https://docs.ansible.com/ansible/latest/command_guide/cheatsheet.html#running-ad-hoc-commands
-
-m ansible.builtin.apt
で apt モジュールを指定。 -
-a "name=lsd state=present"
でインストールするパッケージをlsd
に指定。state=latest
を指定すると最新版がインストールされます。 本番環境のように、予期せぬ変更を防ぐ必要がある場合は、state=present
(デフォルト)を指定し、パッケージがインストール済みであれば何もしないようにします。 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/apt_module.html#parameter-state -
-b
で root 権限で実行。https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_privilege_escalation.html#using-become -
-K
でパスワードの入力を求めるプロンプトを表示。
実行すると、lsd
パッケージがインストールされます。
リモートで実行
Ansible を使ってリモートマシンでコマンドを実行したり、パッケージをインストールしたりします。
inventory
ssh remote-user@192.168.77.77 -p 22 -i ~/.ssh/id_ed25519
コマンドでリモートマシンに ssh 接続できることを前提として、以下のように inventory.ini
を作成します。
ping
リモートマシンでコマンドを実行
実行すると、リモートマシンのホームディレクトリのファイル一覧が出力されます。
リモートマシンでパッケージをインストール
実行すると、リモートマシンにlsd
パッケージがインストールされます。
playbook
実行すると、リモートマシンにlsd
とhtop
パッケージがインストールされます。
Ansible Galaxy
Ansible Galaxy コマンドラインツールを使用して、コミュニティが作成したロールやコレクションを管理できます。
-
ロール
Roles let you automatically load related vars, files, tasks, handlers, and other Ansible artifacts based on a known file structure. https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html
事前にパッケージ化された作業単位 https://docs.ansible.com/ansible/2.9_ja/galaxy/user_guide.html
-
コレクション
Collections are a distribution format for Ansible content that can include playbooks, roles, modules, and plugins. https://docs.ansible.com/ansible/latest/collections_guide/index.html
複数の Playbook、ロール、モジュール、およびプラグインが含まれる https://docs.ansible.com/ansible/2.9_ja/galaxy/user_guide.html
ロールのインストール
https://galaxy.ansible.com/ui/standalone/roles/geerlingguy/docker/ から geerlingguy.docker
ロールをインストールします。
ロールの実行
docker_users
リストに追加したユーザー(ここではremote-user
)は、sudo
を使用せずに docker
コマンドを実行できるようになります。なお、remote-user
をログアウトしてログインし直すか、newgrp docker
コマンドを実行して一時的にグループを変更する必要があるかもしれません。
実行すると、リモートマシンに Docker がインストールされます。