koh’s blog

Sys Admin who loves automation

Ansible

Ansibleでcommandを使わないためのモジュール

Playbookを書いているとたまに 特定のパッケージがインストールされていたらなにかする 特定のユーザが存在したらなにかする みたいな処理をしたいときがあります。 実際にインストールしたりユーザ作成せずに現状の確認だけをしたいケースです。 そういった…

Python実行環境構築メモ[Vagrant+Ansible+vscode]

※自分用メモ AtCoder用のPython実行環境を作る + サンプルのテストの自動化する。 ローカルにpyenvで古いpythonインストールが楽なんだけどイマイチちゃんと動かなかった。 要件 AtCoderのPythonにバージョンを合わせた実行環境を構築 ローカルのmacosには古…

Ansibleのshellモジュールで、falseコマンドを実行できない?

※超小ネタです。 先日Playbookがコケたときの挙動を確認すべく下記のようなtaskを作成しましたが、なぜかsyntaxのエラーが出てしまいました。 % cat test.yml --- - hosts: Vag1 gather_facts: False tasks: - name: fail on purpose shell: false % ansible…

telnetで疎通確認みたいなことをAnsibleでやる

DNSやrouting、firewallまわりの設定が正しくできているかの確認として、telnetやncコマンドで疎通確認するみたいな作業はインフラエンジニアにはよくある光景だと思います。 しかしどちらのコマンドも必ずサーバにインストールされているとは限らないですし…

ansible-lintの設定

ansible-lintというAnsibleのPlaybookの問題点を指摘してくれるツールがあります。 github.com 無駄なスペースを検知してくれたり、Playbookのベストプラクティスに沿わないような記載を指摘してくれます。 [koh@kohs-MBP] ~/work/linttest % ansible-lint s…

TestinfraとAnsibleを組み合わせて使う

For English インフラテストツールのTestinfraをAnsibleと組み合わせて使用すると色々と捗るよという投稿です。 Testinfraについては以前ブログを書いているので見ていただければと。 koh-sh.hatenablog.com Inventoryの共有 TestinfraはAnsibleのInventory…

GitHub ActionsでmacOS用のPlaybookをテストする

以前書いた記事の続きです。 前回AnsibleのPlaybookのlintをGitHub Actionsで実施するところまで設定したので実際にPlaybookを実行してテストをさせるようにしました。 koh-sh.hatenablog.com 使用しているリポジトリはこちらです。 github.com Playbook実行…

Github Actionsでansible-lintを自動で実施する

For English 申し込んでいたGithub Actionsのbetaが使えるようになったのでAnsibleのsyntax checkとlintをさせてみようと思います。 なお本記事の内容は2019年9月7日時点のものであり、今後変更される可能性があります。 設定 公式ドキュメントを適宜参照し…

AnsibleでIPアドレスが特定のレンジに含まれるかの判別

For English データセンタ、クラウドのゾーンごとに処理を分岐したいときにIPアドレスをみて判別できるようにしたかったが、意外とすんなりいかなかったのでメモ。 TL;DR こんな感じでwhen句を書いてあげるとあるIPアドレスが特定のレンジに含まれているかを…

Redisを使ってほんの少しだけAnsibleを高速化した

For English AnsibleにはGather Factsという機能があり、Ansible実行時に対象ホストの情報(facts)を取得しPlaybook内で使用することができます。 デフォルトだと取得したfactsは実行ノードのメモリに保持し、Ansible実行するたびに取得します。 取得にかかる…

Ansibleのcopyモジュールとtemplateモジュールの違いと注意点

For English Ansibleにはcopyモジュールとtemplateモジュールが存在します。 どちらも基本的にはローカルにあるファイルをリモートホストへ転送する用途のモジュールであり、使い方も似ていますが細かい挙動が異なります。 ここではその違いと注意点を記載し…