zaki work log

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

Ansible

[Ansible] community.general.slackモジュールでSlack通知を行うタスク

先日AAP/AWXの通知機能でSlack連携をまとめたので、ついでにPlaybookのタスクから任意のメッセージを通知する方法について。 使うモジュールは以下 docs.ansible.com たとえばAAP/AWX構築Playbookで資材内にSlackのトークンを持っているのであれば、ついでに…

[Ansible / AAP / AWX] 通知機能を使ってジョブの実行状態をSlackへ通知する

AAP(Controller)とAWXには「通知」の機能の一つ(連携先の一つ)としてSlackにジョブの起動・終了(成功・失敗)等を通知することができる。 大まかな流れは以下の通り。 Slackに投稿用botを用意しトークンを作成 作成したトークンを使ってAWX/AAPに通知リソース…

コンテナ化されたAAPのContainerized Ansible Automation Platform (tech preview)を試してみた(AAP 2.4)

最近AAPのインストーラーの新しいバージョンをダウンロードしようとしたら、見慣れない「Tech Preview: Ansible Automation Platform 2.4 Containerized Setup」というインストーラが(日付を見る限り1月の時点ですでに)あったので試してみた。 access.redhat…

AWXのバックアップ・リストアが付属のpostgresql-15-c9s:latestでうまくいかないときのワークアラウンド

原因 現在標準のquay.io/sclorg/postgresql-15-c9s:latestはUID 26で動くので、「UID 26のユーザーがRead/Writeできない領域のボリュームへのバックアップ」が失敗する。 例えば↓のような「rootか特定のUIDでないと書き込めないNFSサーバー領域」とかね。 ro…

[Ansible Builder / AWS] CodeCommit + CodeBuild 環境でEEの自動ビルドとECRへpush (起動は手動)

プライベートではGitHub Actions使ったEEの自動ビルドを1年前に試したけど、業務だとCodeCommit環境を使ってたりするので、せっかくなのでAWSのサービスを使ったビルド環境を試してみた。 初めに軽く検索した感じだと、CodeBuildではコンテナで処理がされる…

(4/11追記) arm64版AWXをデプロイするだけなら自前のビルドは全く不要になってる件の補足とまとめ

2024.04.11追記 forum.ansible.com AWX 24.2.0とAWX Operator 2.15.0がリリースされ、GitHub Container Registryにしかなかったarm64版awxイメージがquay.ioからもpullできるようになりました。 image repository tag awx-operator quay.io/ansible/awx-oper…

[追記あり] 2024年3月現在のAWXのarm64ビルドの状況 (AWX 24.0.0 / Operator 2.13.1)

2年前にKubernetesで動くAWXをarmアーキテクチャのホストで動かそうとした際には、armプラットフォーム用のコンテナイメージが何一つ用意されてなく全部自前でビルドしてた。が、2024年現在、状況が結構変わってかなり簡単になってたので、今時点でどうすれ…

Ansibleからterraform applyを実行するタスクの実装

Terraformでインフラをプロビジョニングしたあとに上物に対してAnsibleで何か(アプリをインストールしたりデータを投入したり)処理をするようなことが多いので、AnsibleからTerraformを実行するようにして一発で処理できるようにするにはどうするか実装を確…

[Ansible / AWX / AAP] ログアグリゲーター設定でジョブの実行ログをLogstash経由でsyslogサーバーへ転送する

ロギング設定にログアグリゲーターを指定して、リモートのsyslogへジョブの実行履歴を転送してみます。 通常AWX・AAPではDBに記録されたジョブの実行履歴などはスケジュールのCleanup Job Scheduleで設定された期限が過ぎたら削除されるので、基本的にはUIで…

[Ansible / AAP / AWX] EEのコンテナイメージ作成にAnsible Builderは必ずしも必要ないかを確認してみた (小ネタ)

AAPやAWXでジョブ実行に必要なExecution Environments(EE)を作るために通常はAnsible Builderを使ってコンテナイメージをビルドするが、要件を満たせばDockerfileを直接書いて自前でビルドしても動くのでは…と思ったので確認してみた。 結論としては、以下が…

[Ansible / AAP / AWX] AnsibleでAAPリソースの作成を自動化する

本エントリは「エーピーコミュニケーションズ Advent Calendar 2023」の24日目のエントリです。クリスマスイブは一切関係ないネタです。 Ansible Automation PlatformのAutomation Controller(旧Ansible Tower / 以下AAP)やAWXはGUIでAnsibleを実行すること…

[Ansible] kubernetesコネクションプラグインとインベントリプラグインを使ってみる

本エントリは、Ansible Advent Calendar 2023の14日目の記事です。煽られて(?)即席で書き上げました。 昨年共著で出版させていただいたAnsibleクックブックでは紙面の都合 * で掲載しなかった、kubernetesコネクションプラグインについて簡単に使い方の例を…

[Ansible] S3互換オブジェクトストレージのデータをget/putする

本エントリは、Ansible Advent Calendar 2023の8日目の記事です。 昨日のAnsibleアドカレ7日目で id:usagi_automate さんがAWXで作成したテキストファイルをZipに固めて手元に持ってきたい - うさラボという記事で「バイナリデータもBase64でテキスト化して…

[Ansible / K3s] 2023年版AWXクイックインストールガイド

本エントリは、Ansible Advent Calendar 2023の6日目の記事になります。 AWXのセットアップがDocker ComposeからKubernetes環境になって手を出しづらくなったとか、インストール方法がわかりづらいなどの声を観測範囲で聞くことがあったので、ローカル環境で…

[Ansible] 日付書式の文字列から「〇分後」を求める (既存フィルター or カスタムフィルター)

Ansibleで「指定日時の5分後」みたいな時刻加減算をやる機会があったけど、ちょうど良い機能が見当たらなかったのでいろいろ試した話。 だいぶ面倒なことをやってるので「〇〇すればシュッとできるよ」とか情報があれば教えてください。 Pythonの場合の日時の加…

[Ansible Builder v3] execution environment definitionのversion 3 formatでAlmaLinuxをベースにビルドお試し

Ansible Builderのバージョンが3になり、execution-environment.ymlのフォーマットもver3が使えるようになったのでお試し。 RHEL系の任意のイメージをベースに使えるようになったので、試しにAlmaLinux 9のminimal版をベースにすることで、イメージサイズの…

[Ansible / AAP] 古いバージョンのAAPインストールが「Unsupported parameters for (ansible.legacy.command) module: warn」で失敗

古いバージョンのAAPのインストールでエラーが発生したのでメモ。 ターゲットOSはRHEL8.8 access.redhat.com 状況 1年近く前からデモ用環境として使用時にAAP環境を都度構築していたのですが、先週は大丈夫だったAAP 2.1.2-1(かなり古い)のsetup.sh実行が今…

GitHub ActionsとAnsible BuilderでExecution Environmentコンテナイメージの自動ビルド

周りでGitLab Runnerを使ったExecution Environmentの自動ビルドが急に流行りだしたので、GitHub Actionsを使った自動ビルドを試してみた。 Ansibleの実行環境がコンテナ化し、その定義ファイルとしてexecution-environment.ymlに内容を記述できるようになっ…

[Ansible] 環境変数の利用についておさらい

本記事は「Ansible Advent Calendar 2022」の19日目のエントリとなります。 Ansibleで環境変数を参照したりタスク実行時にセットしたりする方法についておさらい。 環境変数の参照 コントロールノード(ローカル)の環境変数を参照 マネージドノード(リモート)…

[Kustomize / secretGenerator] 初期パスワードを指定したAWXのインストールとSecret作成基礎

本記事は「Ansible Advent Calendar 2022」の8日目のエントリとなります。 AAP(旧Ansible Tower)のadminの初期パスワードはインストール時に使用するインベントリファイルで指定できるので簡単ですが、AWXのadminの初期パスワードはデフォルトではランダムな…

[Ansible] ini形式のインベントリファイルの行コメントには注意

本記事は「Ansible Advent Calendar 2022」の5日目のエントリとなります。 ちょっと前にやらかしたインベントリファイルの行中コメントについて、詳しく調べてみた。 playbookのYAMLに埋め込まれてる変数定義をインベントリファイルに単に移すと動く変数と動…

[Ansible] 任意のタイミングでダイナミックインベントリのホスト情報収集を行う

Ansibleで(CFnなどのモジュールを使って、も含む)クラウドリソースを作成し、後続のタスクで作成したコンピュートインスタンス(EC2)へ接続して処理を行いたい、みたいなケースで、ダイナミックインベントリを使用することでタグなどを使ってEC2情報を動的に…

[AWX / AAP] ジョブの実行をリモートのKubernetesクラスタで行う

デフォルトでは、ジョブの実行はAWXをデプロイしているKubernetesクラスタ上でpodがデプロイされて行われる。設定によって、podをデプロイするクラスタを、異なるクラスタ(AWXをデプロイしていないクラスタ)へ変更することができる。 本記事内では便宜上、AW…

[Ansible] ansible.builtin.gather_factsモジュールでfactsを収集するタスクを作成する

ansible.builtin.gather_factsモジュールを使うと、リモートホストのfacts変数を収集するタスクを定義できる。 収集する項目のサブセット指定も可能。 このモジュールはplayの定義でgather_factsをfalseにしていても、タスク実行のタイミングでfactsを収集し…

[RHEL / Ansible] 最小構成でセットアップしたRHELにAAPをオフラインインストールするときの諸注意(備忘録)

注意! 現時点で、開発者アカウントの場合はサブスクリプション登録に必要なマニフェストのzipファイル作成がポータルでできなさげ(作成権限がない)。 (なので開発者アカウントの場合はオンラインでやりましょう) 商用アカウントなどでカスタマポータルへロ…

[Ansible] Gitリポジトリにあるコレクションのインストール

Ansible Galaxyと疎通がないとか、ローカル内でGit管理されているプライベート開発なコレクションのように、任意のGitリポジトリにあるコレクションをインストールする際のrequirements.ymlの記述例は以下の通り。 --- collections: - name: https://github.…

[Ansible / Docker / K3s] AWX 20.0.0をarm64環境でビルド&デプロイするplaybook

AWXはamd64向けのイメージしか提供されてないので、Oracle CloudのAlways Free枠で使用できる4コア・RAM24GBのA1.FlexインスタンスのようなARMアーキテクチャの環境ではそのままでは利用できません。 イメージをARM環境でリビルドしてやれば動作するので、さ…

[Ansible] metaモジュールを使ってPlayの処理を途中で終了する

プログラミングだとreturnやexit(0)などで、以降の処理が不要な場合に、その時点で処理を終了させることができる。 Ansibleのplaybookでも似たようなことができ、metaモジュールを使用し、任意のタイミングで処理を終了させるタスクを作成できる。 docs.ansi…

[Ansible Builder]パッケージインストールに追加のリポジトリ設定やファイルコピーが必要な場合のイメージビルド

本記事はAnsible Advent Calendar 2021の14日目のエントリです。 珍しくインプットが湧いてきた1ため2日連続です笑 adventar.org 環境その他もろもろは、以前Ansible Builderについて試したこの記事のときのものと同じです。 解決したい課題 回避策 executio…

[Ansible] fetchモジュールを使ってリモートのファイルを実行ノードへ転送・集約する

最近アウトプットできてなかったけど、これはAnsible Advent Calendar 2021の13日目のエントリです。 adventar.org 個人的にあまりなじみがないfetchモジュールについての備忘録です。 このモジュールはcopyモジュールの逆で、マネージドノード上のファイル…