k8sで複数ノードに対する操作をAnsibleで共通化する

こんにちは、ナナオです。 k8sを構築してからどう活用しようかいろいろやってるのですが、一つ面倒なのが「複数のノードへ同じことを適用」するという作業です。 今回はこれをAnsibleで共通化していこうと思います。 Ansibleとは Ansibleだけで書籍になるほどなので、ここではざっと書きます。 Amazon.co.jp: Ansible実践ガイド 第4版[基礎編] (impress top gear) : 北山 晋吾, 佐藤 学, 塚本 正隆, 畠中 幸司, 横地 晃: 本 Ansibleは構成管理ツールの一つで、目的は「環境構築の自動化」です。 ドキュメントを見ながら環境構築したり、shファイルを組んだりすると思いますが、こういった作業を一元的に管理するためのツールがAnsibleです。 そんなAnsibleの特徴としては「冪等性」が挙げられます。 これはつまり、手作業で作ったshでよくある「これを各サーバーで実行する」というようなものではなく、「各サーバーは~~という状態であるべき」というあるべき状態を定義できるという点にあります。 もちろん状態監視など実装的には複雑になるんですが、あるべき姿が定義できる状態って所謂システムの属人化を防ぐという観点からもとてもいいことですね! 環境構築 ではAnsibleをインストールしていきます。 homebrewがインストールされている環境であれば以下のコマンドでインストール可能です。 brew install ansible インストールできました。 最初の一歩 さて、何から始めればいいか。。 とりあえずチュートリアルも兼ねてhello world的なことをやりたい。 ということで以下のサイトを参考にまずはhosts.yamlを定義しました。 https://zenn.dev/y_mrok/books/ansible-no-tsukaikata/viewer/chapter5 とりあえずk8sで構築したノードは三台あるので、これらの情報をhosts.yamlとして落とし込みました。 --- all: vars: ansible_user: username ansible_password: password hosts: thinkcentle1: ansible_host: 192.168.0.x nuc1: ansible_host: 192.168.0.x mouse1: ansible_host: 192.168.0.x 定義出来たら先ほどインストールしたansibleコマンドで簡単なコマンドを書く環境で実行してみます。 ansible all -i hosts.yaml -m ansible.builtin.command -a "df -H" 結果が出力されました。テンション上がる~~ プレイブックの実装 さて、ではAnsibleのメイン機能と言えるプレイブックを実装していきます。 今回は各ノードからnfsを扱えるようにするのと、k8sで構築したDockerイメージ格納用のプライベートレジストリのURLを設定します。 (プライベートレジストリの構築に関してはまた別でブログを書こうと思っています!) ...

2026年1月12日 · にあえん