Ansible
本記事は「Ansible Advent Calendar 2022」の19日目のエントリとなります。 Ansibleで環境変数を参照したりタスク実行時にセットしたりする方法についておさらい。 環境変数の参照 コントロールノード(ローカル)の環境変数を参照 マネージドノード(リモート)…
本記事は「Ansible Advent Calendar 2022」の8日目のエントリとなります。 AAP(旧Ansible Tower)のadminの初期パスワードはインストール時に使用するインベントリファイルで指定できるので簡単ですが、AWXのadminの初期パスワードはデフォルトではランダムな…
本記事は「Ansible Advent Calendar 2022」の5日目のエントリとなります。 ちょっと前にやらかしたインベントリファイルの行中コメントについて、詳しく調べてみた。 playbookのYAMLに埋め込まれてる変数定義をインベントリファイルに単に移すと動く変数と動…
Ansibleで(CFnなどのモジュールを使って、も含む)クラウドリソースを作成し、後続のタスクで作成したコンピュートインスタンス(EC2)へ接続して処理を行いたい、みたいなケースで、ダイナミックインベントリを使用することでタグなどを使ってEC2情報を動的に…
デフォルトでは、ジョブの実行はAWXをデプロイしているKubernetesクラスタ上でpodがデプロイされて行われる。設定によって、podをデプロイするクラスタを、異なるクラスタ(AWXをデプロイしていないクラスタ)へ変更することができる。 本記事内では便宜上、AW…
ansible.builtin.gather_factsモジュールを使うと、リモートホストのfacts変数を収集するタスクを定義できる。 収集する項目のサブセット指定も可能。 このモジュールはplayの定義でgather_factsをfalseにしていても、タスク実行のタイミングでfactsを収集し…
注意! 現時点で、開発者アカウントの場合はサブスクリプション登録に必要なマニフェストのzipファイル作成がポータルでできなさげ(作成権限がない)。 (なので開発者アカウントの場合はオンラインでやりましょう) 商用アカウントなどでカスタマポータルへロ…
Ansible Galaxyと疎通がないとか、ローカル内でGit管理されているプライベート開発なコレクションのように、任意のGitリポジトリにあるコレクションをインストールする際のrequirements.ymlの記述例は以下の通り。 --- collections: - name: https://github.…
AWXはamd64向けのイメージしか提供されてないので、Oracle CloudのAlways Free枠で使用できる4コア・RAM24GBのA1.FlexインスタンスのようなARMアーキテクチャの環境ではそのままでは利用できません。 イメージをARM環境でリビルドしてやれば動作するので、さ…
プログラミングだとreturnやexit(0)などで、以降の処理が不要な場合に、その時点で処理を終了させることができる。 Ansibleのplaybookでも似たようなことができ、metaモジュールを使用し、任意のタイミングで処理を終了させるタスクを作成できる。 docs.ansi…
本記事はAnsible Advent Calendar 2021の14日目のエントリです。 珍しくインプットが湧いてきた1ため2日連続です笑 adventar.org 環境その他もろもろは、以前Ansible Builderについて試したこの記事のときのものと同じです。 解決したい課題 回避策 executio…
最近アウトプットできてなかったけど、これはAnsible Advent Calendar 2021の13日目のエントリです。 adventar.org 個人的にあまりなじみがないfetchモジュールについての備忘録です。 このモジュールはcopyモジュールの逆で、マネージドノード上のファイル…
roleの雛形の作り方と、雛形のカスタマイズ。 今回は試さなかったけどcollectionにも使えるはず。。 role雛形の作成 role雛形のカスタム 雛形のスケルトンを作る スケルトンからroleの雛形を作成 role名の埋め込み role名変換とJinja2テンプレートの書式を同…
playbookのリポジトリとroleのリポジトリを分けた場合に、どうやって別リポジトリのroleをplaybookから実行するかについて。半年以上前に情報として聞いてはいたけれど試してなかったので実際に動かしてみた。 roleのリポジトリ playbookのリポジトリ roleの…
Ansible Automation Platform 2.0 Early Access Homepage - Red Hat Customer Portal 巷で流行っている次期Ansible TowerになるAnsible Automation Platform (2.0 Early Access)を手元の環境へインストールしてみる。開発者ライセンスがあればOKの模様。 acc…
トキメk…じゃなくてAnsible RunnerやAnsible Builderの話で、Ansibleとコンテナ環境の話題がとても盛り上がってるところに乗り遅れつつある*1ので、マイペースに動作確認してみた作業ログ。 コンテナの中身寄り情報あり。 環境 Ansible Builder インストー…
Ansible NightでLT登壇しましたので、その振り返りブログです。(1年ぶり2回目) ansible-users.connpass.com 振り返りといっても、LTでも触れましたが、以前記事にしたものを再構築してLT登壇だったので、詳細は過去記事参照…ということで、主に資料のリンク…
YAMLで複数行のテキストを記述しつつ、その先頭にインデントを設定するにはどうするか。 YAMLの複数行テキスト インデント設定 複数行表記で使用する記号の種類と効果 記号まとめ インデント量の指定 Ansibleの場合は YAMLの複数行テキスト --- data: sample…
Ansibleのダイナミックインベントリを使ったEC2アクセスについて、以前試したような試してないような記憶がおぼろげで、メモも無かったので簡単にまとめてみた。 docs.ansible.com 必要パッケージ クラウド上のEC2状態 アクセスキー設定 インベントリファイ…
指定が任意なオプション扱いのパラメタで、指定するパラメタが無い場合は未指定にしたいけど、ループ処理などで決まった型の辞書型変数のリストでキーが有ったり無かったりする場合の処理について。 って書いてもうまく伝わらない気もするのでサンプルコード…
コントロールノードでなくターゲットノードで(pipで追加パッケージが必要などの理由で)venvを使いたい場合の方法について。 といっても、venvの中にあるPythonインタプリタのパスをinterpreter_pythonなどで指定すればOK。 Python2/Python3の切り替えでイン…
VyOS自体のIPアドレス設定は前回までにできたので、ようやく(?)ネットワーク間でNATを使ったルーターとして動作するための設定をやってみる。 (試行錯誤でやってるんで「こうした方がいい」とか「いや、そのりくつはおかしい」とかあったらぜひ教えて欲しい……
前回セットアップしたVyOSの、まだ設定を残しておいたeth1のIPアドレスをAnsibleを使って設定してみる。 zaki-hmkc.hatenablog.com VyOSのホストとAnsibleを実行するホストの関係は以下の通り。 172.16.1.119のホストにAnsibleがインストールされており、前…
Ansibleのループ処理はデフォルトでは逐次処理で動作します。 例えばループの回数が5回で、1回の処理に10秒ずつかかる場合は合計50秒はかかる計算になります。 Ansibleではループによって複数回実行される処理がお互いに干渉せずに並列に実行可能なのであれ…
registerを使うことでモジュールの実行結果(Return Values)を保持し、後続のタスクでその値を参照することができるので、処理の実行結果を次のタスクのパラメタにすることができます。 ただし、その結果のデータ構造がループでの実行時は通常とは異なるので…
playbook内のtask定義にtagを設定しておくことで、指定tagのtaskのみ実行したり、逆に指定tagのtaskを除外してansible-playbookを実行することができます。 開発中のtaskのみピンポイントで実行したい場合や、逆に、共有のDBのデータを更新したりするtaskは…
配列や、辞書の配列の中から特定の条件の要素を抜き出す。 配列操作はselect()で要素に対してフィルター処理を行い、辞書操作はselectattr()でkey指定することでvalueにフィルター処理を行う。 ここでいうフィルター処理は、AnsibleやJinja2のフィルターのこ…
AnsibleでWed Feb 10 09:17:08 JST 2021という表記の文字列をdatetimeオブジェクトに変換するには、to_datetimeフィルターを使う。 使用例はフィルターのページの「Handling dates and times」に使い方が載っているのでここに書かれている通り。 内部実装はP…
jc parserをAnsibleで使ってみる。 github.com 2021.07.06追記: community.generalコレクションのフィルタのドキュメントがいつのまにか追加されてた -> community.general Filter Guide — Ansible Documentation jc parserについて 使えるparserの種類 簡単…
Ansibleのcli_parseモジュールで、PythonのTTP(Template Text Parser)とテンプレートファイルを使ったテキスト解析を試してみた。 ttp.readthedocs.io cli_parseは、2.10時点で標準のansible.netcommon.cli_parseと、Ansible 3(3.0.0b1)に新たに標準に含まれ…