AnsibleのPlaybookでDockerとKubernetesのインストールの準備(ubuntuのネットワーク設定)

Ansible

Ansible icon

前回の記事からの続きです。

Raspberry Pi4のubuntuにAnsibleのインストールができていますので、この記事はその続きです。

今回はManaged Node(KubernetesのControlPlaneとNode)の個別設定になります。

筆者の動作確認環境

この記事で使用している動作確認環境は下記のとおりです。

Ansibleをインストールした端末です。。

コントロールノード (Control Node)
・H/W :Raspberry Pi 4 Model B 8GB
・OS  :ubuntu-22.04.1
・作業ユーザ:ubuntu
Ansibleから操作される側です。2台用意してます。
管理ノード(Managed Node)
・H/W :Raspberry Pi 4 Model B 8GB
・OS  :ubuntu-22.04.1
・作業ユーザ:ubuntu

Managed Nodeの個別設定

AnsibleのManaged Nodeの個別設定です。個別設定の対象としては下記の2つになります。

  • ホスト名
  • IPアドレスの設定

OSのセットアップ後にする作業でもありますが、Ansibleの機能で無理くり対応させています。

Netplanファイル

まずは個別設定で各サーバに配置するnetplan用のファイルになります。netplanはIPアドレスを固定化する際に用いるファイルです。太字部分が各サーバで異なる点です。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      dhcp6: false
      addresses:
        - 192.168.100.1/24
      gateway4: 192.168.100.1
      nameservers:
        addresses:
          - 192.168.100.1

 

インベントリファイル

個別設定で使用するインベントリファイルを最初に用意しました。

2行目の「ansible_host=192.168.1.1」の部分のIPアドレスをubuntuの初期IP(DHCPで割り当てられたIPアドレス)に書き換えています。これと同様に各NodeごとにIPの情報を書き換えます。

最終行の記述は、ssh接続にカギを使っていますので、鍵ファイルの配置場所を設定しています。

[controlplane-1]
kubernetes-controlplane-1 ansible_host=192.168.1.1 ansible_connection=ssh 

[controlplane-2]
kubernetes-controlplane-2 ansible_host=192.168.1.2 ansible_connection=ssh 

[node-1] 
kubernetes-node-1 ansible_host=192.168.1.3 ansible_connection=ssh 

[node-2] 
kubernetes-node-2 ansible_host=192.168.1.4 ansible_connection=ssh 

[all:vars] 
ansible_user=ubuntu 
ansible_ssh_private_key_file="~/.ssh/id_ed25519"

インベントリファイルを用意して、各Nodeごとで最低IPアドレスだけ書き換えればよいようにしました。もう少し良い方法があればとは思いますがそのあたりはおいおいリファクタリングしていきます。

Playbook

Ansibleを使って個別設定を行うためのPlaybookファイルです。個別設定用のyamlファイルはサーバごとに用意しました。(太字部分が各サーバごとの個別設定)

- name: Setup ubuntu server
  hosts: 
    - controlplane-1
  become: True
  tasks:
    - name: update hosts file
      copy:
          src: 99-network_controlplane1.yaml
          dest: /etc/netplan/
          follow: yes
    - name: setup hostname
      command: hostnamectl set-hostname controlplane01.pedalclecle.com
    - name: restart network
      command: netplan apply

タスクは3つあって、

1つ目がnetplanのファイルをControl NodeからManaged Nodeにコピーするタスク。
2つ目がホスト名を変更するタスク。
3つ目がnetplanを適用するタスク。

になっています。

Playbookを実行する

インベントリファイルとPlaybookを同じディレクトリに配置して、コマンドを実行します。

$ ansible-playbook setup_controlplane1.yaml -v -i inventory_setup.txt

このコマンドを実行すると、Playbookの3番目のタスクでnetplanが適用され、IPアドレスが変更されます。そのため、Playbookが途中で停止してしまいます。この場合、Ctrl+Cで強制終了する必要があります。
次回Managed Nodeに接続する際にはIPアドレスが変わっているため、sshで接続する場合もIPアドレスを変更する必要があります。

まとめ

Ansibleのセカンドステップはこの辺りで。

次の記事こそDockerとKubernetesのインストールまで解説したいと思います。

コメント

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