zaki work log

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

Ansible

[ESXi / Ansible] ssh接続してvmi-cmdを使ったVM操作が可能かお試し

ESXiのsshを有効にすると、ssh接続できる。 ssh接続してlsする inventory playbook 実行結果 VM一覧を取得してファイルに出力 j2テンプレート playbook 実行結果 write系処理 エラーと対処 ESXiシェルのログ 参考情報 Copyright (C) Microsoft Corporation. …

[Ansible] creates/removesを指定してcommand使用時のファイルの有無事前チェックを行う

commandやshellモジュール使用時の冪等性の処理に「事前チェックtaskを実行、結果をregisterで保持、その内容を使ってwhenでガード」ってよくするけど、ファイルの有無程度であれば標準機能でカバーできる。 (commandの結果ファイルを生成するような処理の場…

[VMware / Ansible] 評価版ライセンスのESXiにvmware_guestモジュールを使ってVMを作成する

無償版ライセンスのESXiだとread系APIしか使用できないので無理だけど、60日間の評価版ライセンスだとwrite系APIもフルに使えるので、Ansibleのvmware_guestモジュールでVMを作成してみる。 docs.ansible.com playbook PyVmomi 環境 関連 playbook だいたい …

[Ansible] Python3 on CentOS7のローカル実行でパッケージ操作する際のエラーと回避策

結論から言うと「inventoryでconnection=local指定してローカル接続してinterpreter_python指定でPython2で動かす」しかないかもしれない。 環境 Pythonバージョンとyum/dnf AnsibleのPythonバージョンとパッケージマネージャ Python2を使用する設定 interpr…

[Ansible / Docker] Dockerコンテナ版Ansible(2.8.13)を作ってみる (練習)

CI/CDや、Ansibleのインストールが難しいオフライン環境とかで使えるかな、と思って、試しに作ってみた。 Ansibleバージョン ベースイメージ 失敗作 Dockerfile build push Docker Hub イメージのpush お試し実行 ansible pingモジュール実行 修正版 Dockerf…

[Ansible]必要な時だけサービスのrestartを行う (notify / handlers)

「ミドルウェアをインストール」「ミドルウェアの設定変更」「ミドルウェアのサービスをスタート」という流れで、サービスのスタートを必要な場合だけに実施するやり方。 以前作成したplaybook 基本形 インストール or 設定変更 roleにする場合 install_http…

Ansible Night オンライン!2020.06 でKubernetes構築(kubeadm)の自動化でLT登壇した振り返り

登壇から1週間空いてしまいましたが、「Ansible Night オンライン! 2020.06」で(人生2度目の)LT枠で登壇をしましたので、振り返りたいと思います。 ansible-users.connpass.com 発表スライド 内容について 申し込み(CfP) 企画の参加 初めてのオンライン発表…

[Ansible] 処理の中でターゲットノードがコロコロ替わるときはdelegate_toを使ってみる

論理的に同一の一連の処理だけど、実行ホストがコロコロ変わる場合、delegate_toを使うことで、ターゲットホストの切り替えのためのplayを区切ることなく、一つのplayで処理できます。 docs.ansible.com delegate_toって delegate_toの使いどころ delegate_t…

2月のAnsibleディベロッパー部で初めてLT登壇した振り返り

2月に開催された「Ansiblejpディベロッパー部 2020.02」でコミュニティイベントとしては初めて登壇(LT枠)したので、(今更ながら)その振り返りを。 コロナ禍のバタバタなどで(←言い訳)3か月も空いてしまいました ansible-users.connpass.com 発表スライド 申…

[Ansible / Linux] sysctlコマンドとAnsibleモジュールについてメモ (sysctl_set未解決)

kernelパラメタを更新するのに使用するsysctlとAnsibleのsysctlモジュールについて、設定ファイルと読み込みの動作について備忘録。 sysctl_setパラメタについては不明点あり。 docs.ansible.com sysctl CLIコマンドについて sysctl -w について sysctl -p …

[Ansible] ロール呼び出し時にプログラミングでいう引数指定の関数コールっぽいことをしてみる

ロールに分割した処理を呼び出すときに、ホストグループ等に依存しないロール内で使用する変数を呼び出し元で定義することで、プログラミングにおける関数コールの引数みたいなことをやってみました。 唯一無二のやり方というわけでなく、最初に思いついたの…

[Ansible] リスト連結時にdefaultを使って未定義の場合は空リストとして処理する

リストを結合、ただし未定義だったら何もしない(空リストを追加)、は、default()フィルタを使えばOK 記述例 動作確認 で、これ使って何するの? (参考) 単純なリスト結合 (参考)defaultのalias 記述例 nikuというリストを+で連結しようとしているが、nikuリ…

[Ansible] get_urlモジュールでyum-config-managerコマンドをAnsible対応

細々とkubeadmを使ったKubernetesクラスタのデプロイをAnsibleで自動化するってのをやってるんだけど、手順の中のContainer RuntimeのインストールでDockerインストールのためのYumリポジトリの設定をyum-config-managerで行うというのがあって、でもAnsible…

[Ansible] registerでセットされる値は実行時のターゲットノードに紐づき寿命はplaybook全体 (play終了で消えない)

昨日のこの「playまたぎの変数保持」についての記事、記事への補足訂正は追記済みですが、致命的に認識誤りしてました zaki-hmkc.hatenablog.com 記事作成当時の認識の「playをまたいで変数を持ち越せない」は、 masterノードでkubeadm token list等を使って…

[Ansible] playをまたいだ変数保持をdelegate_toとfact変数で行う (Ansibleでkubeadmのworkerノード追加)

task(1)の実行結果を保持してtask(2)の入力にする、であればregisterを使って可能だけど、play(A)の実行結果を保持してplay(B)の入力にするには、、、registerで保持できる変数のスコープはplay内(←この認識は誤り)で、環境変数なんかはAnsibleから更新する…

[Ansible] CentOSのswap無効化を行う (check_mode / changed_when / ignore_errors)

Kubernetesのシステム要件に「swapがオフであること」というのがあるので、Ansibleつかってノードの準備を行う際に「swapが有効の場合には無効にする」というのを冪等になるようにやってみた。 対象はCentOS 7 taskの例 現在のswap設定 swapが有効化かチェッ…

[Ansible] untilを使って非同期処理が完了するまで次のtaskを待つ

例えばK8s環境でpodをデプロイするマニフェストをapplyしてRunningになるまで待つとか。 手作業のときにkubectl get podでRunningになるまで何度も再実行して(もしくは-wつけて)、Runningになったのを目視確認したら次のコマンドを打つ、みたいな作業をAnsib…

[Ansible] packageモジュールでパッケージインストールする

Ansibleモジュールの一覧をなんとなく眺めていたらpackage – Generic OS package managerという汎用的なパッケージ管理モジュールみたいなものを見つけたので、yumやaptと違ってプラットフォームに依存しないパッケージインストールができるのかなーと思って…

Ansibleのyum_repositoryモジュールを使ってyumインストール用のリポジトリを追加する

/etc/yum.repos.d/以下の設定ファイルをAnsibleを使って作成する方法。 ドキュメント yum_repository – Add or remove YUM repositories — Ansible Documentation お題 zaki-hmkc.hatenablog.com このクライアント側のyum設定 playbook --- - hosts: localho…

playbook内にAnsible実行時に使用する環境変数を定義する

※ 1/29: コピペミスで記述位置が同じになってたので修正しました environmentを使う。 PYTHONPATH = /usr/lib/python3.6/site-packagesという環境変数を定義するのであれば、 1. playに書く場合 - hosts: localhost gather_facts: False environment: PYTHON…

expectモジュールを使ったAnsibleでの対話式のプログラム実行の呼び出し

対話式のプログラムなんかをAnsibleで実行したい場合はexpectモジュールを使用する。 なお、以下のライブラリが追加で必要 pexpect >= 3.3 システムにインストールされていないとエラーになる。 ※ インストールが必要なのはコントロールノードでなく、ターゲ…

Python Versionが2.7なAnsibleでpython3をinterpreter_pythonで指定する場合のライブラリ参照

良い感じのタイトルにならない CentOS7やRHEL7にyumを使ってAnsibleをインストールすると、Python2系を使う構成のAnsibleがインストールされると思います。 ↓のpython versionの部分。 $ ansible --version ansible 2.9.2 config file = /home/zaki/ansible/…

マルチノードOpenShift Origin(OKD) 3.11 with NFSをmetrics/logging込みでCentOS7へインストール

検証用なので軽めの構成になってます。 本当はRed Hat Forum Tokyo 2019終わってすぐ、遅くとも12月中旬にはまとめたかったけどずいぶん遅くなってしまった。。 バージョン3.11なので旬は過ぎてますが、仕事(Enterprise版だけど)で3.11お守してるのと、tech …

ansible-vaultで暗号化

ansible-vaultを使ったインベントリの暗号化について、ざっくりとお試し。 初期状態 ファイルの暗号化と復号 暗号化ファイルの新規作成 既存ファイルの暗号化 暗号化されたファイルの中身を確認する 暗号化されたファイルを編集する ファイルを復号する 値の…

Ansibleのドキュメント検索とGitHubアクセスをサポートするChrome拡張"usansible"を作ってみた

qiita.com Advent Calendarのネタとして、Chrome拡張開発にちょっとチャレンジしてみました。 拡張はこちらです。 chrome.google.com 公開するまで「既存に同じことするツール類あったらどうしよう…」と思ってましたが、色んな方に便利とコメントいただいた…

Ansibleの呼吸 肆ノ型 フィルター芸「0,1反転」 ワンライナー編

元ネタです qiita.com 別解編 tekunabe.hatenablog.jp qiita.com ということで、私も試してみました。 フィルター + ansibleアドホックコマンドでワンライナー編 $ cat before_number.txt 001010101010101010010101 111000101010100111010011 10000101010000…

Ansibleを使えるようにするための準備 (既存のLinuxマシンなど対象に)

Ansible Advent Calendar 2019の16日目の記事としてQiitaにアップしました。 qiita.com Ansibleを使えるようにするために必要なSSHの公開鍵認証とsudoの設定の手順と、それもAnsibleでやるにはどうするか、という内容です。

マルチノードOpenShift Origin (OKD) 3.11のコンテナレジストリのpv(NFS)を有効にしたデプロイ

OpenShiftのデプロイに必要なAnsible関連のファイルの取得方法と、コンテナレジストリをNFSのpvで利用する設定とデプロイについて。 ここではHawkularはまだ入れてないです。 deploy_clusterで初期デプロイ時にpvを有効にすると、ちょっとしたハマりポイント…

Ansibleアドホックコマンドとyumモジュールで対象全サーバのパッケージを最新に更新する

$ ansible all -i inventory.ini -b -m yum -a "name='*' state=latest" おわり。 これでインベントリに書いた全てのサーバでyum updateが実行される。 もしパスフレーズ無しの公開鍵認証設定がされてない場合(パスワード認証する場合)は-kも追加 特権実行の…

Ansibleのtag機能とalways/neverタグについて動作確認してみた

(2021.03.24追記) なお、alwaysとneverを含め、--tagsや--skip-tagsオプションなどtag全体について以下にまとめました。 zaki-hmkc.hatenablog.com Ansibleのtagの機能は一応知ってはいたけど使ったことがなく、alwaysとneverはその存在を知らなかったので試…