概要
VPSで色々遊ぶ際に基本的にDockerコンテナを使うことにしたのでDockerを入れることにしました。
VPSを作成し直すこともあるだろうとのことでAnsibleを使ってみることにしました。
環境
VPS
- XSERVER VPS
- Rocky Linux 9.2
Ansibleを実行したPC
- Ubuntu 22.04.3 LTS
- ansible [core 2.15.4]
- Python 3.10.12
やってみた
本題に入る前に記事を読むのに最低限必要なAnsibleの知識
Ansibleは主に2つのファイルからなる
- インベントリ
- 対象のサーバを記載したファイル
- プレイブック
- 手順書
ansible-playbook -i インベントリ プレイブック
でプレイブックの内容をインベントリに記載されいてるサーバに対して行う
インベントリ・プレイブックはYAMLで記載する
本題
まずはインベントリをhosts.ymlというファイルで作成しました。
---
all: #デフォルトのグループ
hosts: #ホストの情報を書くという宣言
target: #管理対象につける名前
ansible_host: #VPSのIPアドレス
ansible_user: #VPSのユーザ名
ansible_ssh_private_key_file: #VPSの秘密鍵のパス
ansible_python_interpreter: #pythonの実行パス
ansible_port: #VPSにSSHで接続する際に使用するポート
今回はサーバ1台だけだったのでhostsの下には1つしか書いていないですが、複数台書くこともできます。
all: #デフォルトのグループ
hosts: #ホストの情報を書くという宣言
target: #管理対象につける名前
ansible_host: #VPSのIPアドレス
ansible_user: #VPSのユーザ名
ansible_ssh_private_key_file: #VPSの秘密鍵のパス
ansible_python_interpreter: #pythonの実行パス
ansible_port: #VPSにSSHで接続する際に使用するポート
target2: 2台目
ansible_host: #VPSのIPアドレス
ansible_user: #VPSのユーザ名
ansible_ssh_private_key_file: #VPSの秘密鍵のパス
ansible_python_interpreter: #pythonの実行パス
ansible_port: #VPSにSSHで接続する際に使用するポート
そしてプレイブックをinstall_docker.ymlというファイルで作成しました。
---
- name: Install Docker #プレイブックの名称
hosts: target #プレイブックの内容を実行する対象
become: yes #管理者権限で実行する
tasks:
- name: Install packages required for Docker
yum:
name: #対象をリストで記載する
- yum-utils
- device-mapper-persistent-data
- lvm2
state: present #パッケージのインストールを行う
# 以下に関しては後述
- name: Setup Docker yum repository
get_url:
url: https://download.docker.com/linux/centos/docker-ce.repo
dest: /etc/yum.repos.d/docker-ce.repo
mode: '0644'
# Install packages required for Docker でやっているのと同じ
- name: Install Docker
yum:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
state: present
- name: Start Docker service
service: #serviceの起動
name: docker #サービス名
state: started #stateの変更
enabled: yes #常時起動する
リポジトリの追加の箇所は最初ansible.builtin.yum_repository
を使っていました。
以下のコードです。
- name: Add Docker repository
yum_repository:
name: docker-ce
description: Docker CE Stable
baseurl: https://download.docker.com/linux/centos/docker-ce.repo
enabled: yes
ただこちらの方法だとInstall Dockerでつまずきました。
ネットで調べたところ以下の記事が見つかったのでこちらを参考にget_urlを使う方法を試したところうまく行きました。
https://zaki-hmkc.hatenablog.com/entry/2020/05/08/090132
ansible-playbook -i hosts.yml install_docker.yml
を実行
SSHでつないでdocker -vを実行したところDocker version 24.0.6, build ed223bcと表示されたのでDockerのインストールができたことを確認できました。
感想
YAMLで設定ファイル書けるので構文で困ることは無く比較的楽に導入することができました。
またネットに日本語の情報もたくさんあるので理解度それほど高くない状態でもとりあえず動かすことは簡単にできました。
まだ公式ドキュメントの読み方につかめておらず、同じようなことをやった方の記事に助けられている状態です。
Ansible便利なので公式ドキュメントを読みながら「この操作をするためにはこうプレイブック書けばいいんだな〜」みたいな状態になれたらいいな〜と思います。
コメント