前回の記事からの続きです。
Raspberry Pi4のubuntuにAnsibleのインストールができていますので、この記事はその続きです。
今回はManaged Node(KubernetesのControlPlaneとNode)の個別設定になります。
筆者の動作確認環境
この記事で使用している動作確認環境は下記のとおりです。
Ansibleをインストールした端末です。。
・H/W :Raspberry Pi 4 Model B 8GB
・OS :ubuntu-22.04.1
・作業ユーザ:ubuntu
・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のインストールまで解説したいと思います。
コメント