Ansibleを使ってVPSにDockerをインストールしてみた

プログラミング

概要

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便利なので公式ドキュメントを読みながら「この操作をするためにはこうプレイブック書けばいいんだな〜」みたいな状態になれたらいいな〜と思います。

Follow me!

コメント

PAGE TOP
タイトルとURLをコピーしました