zaki work log

作業ログやら生活ログやらなんやら

tech

Debian11(Bullseye)でRootless Dockerインストールしてコンテナをデプロイ

Debian10では依存パッケージのバージョンが古くてインストールできなかったルートレスDocker、先々週リリースされたDebian11ではパッケージバージョンが新しくなって全て要件を満たしていたので試してみた。 docs.docker.com Deiban10だとうまくいかないパタ…

[Ansible] roleの雛形作成をカスタムする (ansible-galaxy / --role-skeleton)

roleの雛形の作り方と、雛形のカスタマイズ。 今回は試さなかったけどcollectionにも使えるはず。。 role雛形の作成 role雛形のカスタム 雛形のスケルトンを作る スケルトンからroleの雛形を作成 role名の埋め込み role名変換とJinja2テンプレートの書式を同…

[Ansible] playbookと別リポジトリ管理のroleを実行するにはroles/requirements.ymlを使う (CLI / Tower)

playbookのリポジトリとroleのリポジトリを分けた場合に、どうやって別リポジトリのroleをplaybookから実行するかについて。半年以上前に情報として聞いてはいたけれど試してなかったので実際に動かしてみた。 roleのリポジトリ playbookのリポジトリ roleの…

Ansible Automation Platform 2.0 Early Accessお試し (Automation Controller 4.0でデモジョブ実行まで)

Ansible Automation Platform 2.0 Early Access Homepage - Red Hat Customer Portal 巷で流行っている次期Ansible TowerになるAnsible Automation Platform (2.0 Early Access)を手元の環境へインストールしてみる。開発者ライセンスがあればOKの模様。 acc…

[Ansible / Podman] もうこのぉ、venvを使った実行環境は終わりだ (Ansible RunnerとAnsible Builderお試し)

トキメk…じゃなくてAnsible RunnerやAnsible Builderの話で、Ansibleとコンテナ環境の話題がとても盛り上がってるところに乗り遅れつつある*1ので、マイペースに動作確認してみた作業ログ。 コンテナの中身寄り情報あり。 環境 Ansible Builder インストー…

Ansible Night Online 2021.07で「タグの継承を知らずにやらかした話」というLT登壇した振り返り

Ansible NightでLT登壇しましたので、その振り返りブログです。(1年ぶり2回目) ansible-users.connpass.com 振り返りといっても、LTでも触れましたが、以前記事にしたものを再構築してLT登壇だったので、詳細は過去記事参照…ということで、主に資料のリンク…

[YAML] 複数行テキストの行頭にインデントを設定するには (Ansible/Kubernetes)

YAMLで複数行のテキストを記述しつつ、その先頭にインデントを設定するにはどうするか。 YAMLの複数行テキスト インデント設定 複数行表記で使用する記号の種類と効果 記号まとめ インデント量の指定 Ansibleの場合は YAMLの複数行テキスト --- data: sample…

[Kubernetes] MetalLBがHelmを使ったインストールに対応してたのでお試し(on kind)

任意のKubernetesクラスタでLoadBalancerタイプのServiceを使えるようにできるMetalLBが0.10.0からHelmを使ったインストールに対応してるようなので試してみた。 環境 MetalLBインストール with Helm リポジトリ追加 チャートとデフォルト値の確認 インスト…

[Ansible / AWS] ダイナミックインベントリを使ってEC2接続先を動的に取得してAnsible実行お試し

Ansibleのダイナミックインベントリを使ったEC2アクセスについて、以前試したような試してないような記憶がおぼろげで、メモも無かったので簡単にまとめてみた。 docs.ansible.com 必要パッケージ クラウド上のEC2状態 アクセスキー設定 インベントリファイ…

[Docker Compose] cpu / memory / ログサイズの制限を指定する

元ネタはこちら。 zaki-hmkc.hatenablog.com zaki-hmkc.hatenablog.com 元ネタではDocker(dockerコマンド)単体で制限設定を行ってましたが、同じことをDocker Compose (v3)で指定する場合はどうするかについて。 docs.docker.com cpu / memory deploy/resour…

[Linux] GitHubに登録している公開鍵を ~/.ssh/authorized_keys に取り込む

取り込むというか単にcurlで取得できるよ、という小ネタ。 少し前からUbuntuのOSインストール時にGitHubに登録してるSSH公開鍵を設定できるようになってたりしてますが、GitHubの公開鍵は特定のURLで簡単に参照できるので、OSインストール後でも任意のタイミ…

[Ansible] 省略したいパラメタに変数指定せざるを得ない場合に使う変数omitとdefaultフィルタ

指定が任意なオプション扱いのパラメタで、指定するパラメタが無い場合は未指定にしたいけど、ループ処理などで決まった型の辞書型変数のリストでキーが有ったり無かったりする場合の処理について。 って書いてもうまく伝わらない気もするのでサンプルコード…

静的サイトジェネレータMkDocsのGetting Startedおためし

KubernetesドキュメントサイトではHugoというサイトジェネレータを使ったのですが、似たようなツールにMkDocsというものがあり、試してみた。 (そのうちGitHub Pagesに置きたい) www.mkdocs.org 大まかな流れとしては、Markdown形式でドキュメントを指定のパ…

[Ansible] ターゲットノードのvenvのPythonを指定して実行する (interpreter_python / ansible_python_interpreter / PYTHONPATH)

コントロールノードでなくターゲットノードで(pipで追加パッケージが必要などの理由で)venvを使いたい場合の方法について。 といっても、venvの中にあるPythonインタプリタのパスをinterpreter_pythonなどで指定すればOK。 Python2/Python3の切り替えでイン…

[Terraform] EC2のセキュリティグループ指定はsecurity_groupsでなくvpc_security_group_idsを使えば強制再作成されない

結論 VPCでEC2インスタンス作成する定義の場合は、security_groupsでなくvpc_security_group_idsでセキュリティグループを指定しましょう。 該当ドキュメントはこちら 実装例は以下。 github.com 事象 お題は以下のコード zaki-hmkc.hatenablog.com コード r…

[Terraform] countまたはfor_eachを使った複数リソース作成

countを使うことで簡単に同じリソースを複数作成できる。 learn.hashicorp.com countを使った個数指定 countの指定 インデックス値参照 for_eachを使ったリスト指定 リスト定義 for_eachの指定 残課題 つかいわけ 元ネタは以下で作成した定義ファイル。 zaki…

[Terraform] 変数を定義・参照する

ハードコーディングしていた変数を別ファイルに定義してみる。 元の定義ファイル variableで変数定義 変数のセット terraform.tfvarsで変数セット コマンドライン引数でセット 環境変数でセット 変数参照の優先順位 環境 サンプルコード 記事中のCIDRが172.2…

Terraformをv0.15に更新してAWSにEC2を作成するサンプルを動作

Terraformがv0.15にアップデートされたので、手元の環境も更新してみた。 以前お試しで作ったv0.12で動いていたソースでプロバイダ設定を新しい書式に更新すれば動作した。 zaki-hmkc.hatenablog.com qiita.com サンプルレベルだとおそらくv0.14 -> v0.15固…

[VyOS] NAT設定を使ったネットワーク間のルーティング (手動 & Ansible / vyos_config)

VyOS自体のIPアドレス設定は前回までにできたので、ようやく(?)ネットワーク間でNATを使ったルーターとして動作するための設定をやってみる。 (試行錯誤でやってるんで「こうした方がいい」とか「いや、そのりくつはおかしい」とかあったらぜひ教えて欲しい……

Ansibleを使ってVyOSのIPアドレスを設定する

前回セットアップしたVyOSの、まだ設定を残しておいたeth1のIPアドレスをAnsibleを使って設定してみる。 zaki-hmkc.hatenablog.com VyOSのホストとAnsibleを実行するホストの関係は以下の通り。 172.16.1.119のホストにAnsibleがインストールされており、前…

[Linux] systemdのユニットファイルを自分で書いてプログラムをdaemon動作させてみる

systemdのユニットファイルを作成してみる。 rcスクリプト育ちだったのでsystemctlコマンドは慣れるのに時間はかかったといえさすがにもう息を吸うように使うようになったけど、systemdのユニットファイル周りは基本的な部分があまりわかってないのでお試し…

VyOSをインストールしてIPアドレスとsshの初期設定

OSSで開発されているネットワークOS(Wikipediaの説明より)であるVyOSを使って、仮想環境上にルーターを構築してみる。 VyOSはDebianベースで動作するOSで、VMにインストールすることができる。 vyos.io ちなみにLinux(CentOS)をルーターにするには以下参照。…

[Ansible] asyncとpollを使った非同期処理とループの並列実行

Ansibleのループ処理はデフォルトでは逐次処理で動作します。 例えばループの回数が5回で、1回の処理に10秒ずつかかる場合は合計50秒はかかる計算になります。 Ansibleではループによって複数回実行される処理がお互いに干渉せずに並列に実行可能なのであれ…

[Ansible] loopとモジュール実行の結果を保持するregisterを併用する

registerを使うことでモジュールの実行結果(Return Values)を保持し、後続のタスクでその値を参照することができるので、処理の実行結果を次のタスクのパラメタにすることができます。 ただし、その結果のデータ構造がループでの実行時は通常とは異なるので…

[NetBox] 最新のfeatureブランチでDockerビルドしてコンテナとしてデプロイする

NetBoxの機能でまだリリースはされていないけどfeatureブランチには実装済みの新しい機能を試してみたい場合、feature版のコンテナイメージは用意されてないためOS上に素で構築する必要があるが、それよりはfeature版コンテナイメージを手元でビルドした方が…

NetBoxのSecretを使って暗号化された情報を登録・参照する

NetBoxは、デバイスやVMの情報に暗号化されたSecret情報を持たせることができるので、例えばログイン用のアカウント情報などもNetBoxに登録しておくことができます。 このSecretはbase64でエンコードされるだけのもの、、ではなく、256ビットのAES共通鍵で暗…

[Ansible] そのtag設定、想定通りに動いてますか? (継承機能とその実装を確認する)

playbook内のtask定義にtagを設定しておくことで、指定tagのtaskのみ実行したり、逆に指定tagのtaskを除外してansible-playbookを実行することができます。 開発中のtaskのみピンポイントで実行したい場合や、逆に、共有のDBのデータを更新したりするtaskは…

「Kubernetes Novice Tokyo #9」でkindをPodman環境で使う内容でLT登壇した振り返り

「Kubernetes Novice Tokyo #9」で「kind on Podman」というタイトルでLTしたので、内容について振り返ります。 k8s-novice-jp.connpass.com 発表資料 speakerdeck.com 内容 Kubernetesのノードとして動作するDockerコンテナを使うことでDocker上でKubernete…

Rootless modeのDockerをUbuntu 20.04へインストール (Debian 10では依存パッケージ不足で失敗)

DockerのRootless modeのセットアップを試してみた。 設定すればデフォルトではroot権限が必要なDockerを一般ユーザーでも使えるモードで動作させることができる。 現在はDockerをパッケージインストールすると、Rootless mode用のセットアップスクリプトも…

[Linux] ターミナルでコマンド履歴の検索とsttyのstop設定

bashやzshはシェル上でCtrl-r押下してからコマンド名やオプションの文字列を入力すると、コマンド履歴からインクリメンタルサーチできる。 (reverse-i-search)`': Ctrl-rを押下すると↑のようにプロンプトが変化するので、例えばここにkubectlと入力すれば、…