Ansible

ansible-builderとansible-navigatorをちょっとだけ触る。

はじめに 取り合えずlocalhostでdebugモジュールを動かすだけのPlaybookを流すまで。なるべくシンプルに。 WSL2 Ubuntu-20.04上で実施。podman導入済み。EEのバージョンは下記。 $ podman --version podman version 3.3.1 $ ansible-builder --version 1.0.1…

ansible.utils.fact_diff モジュールで特定行を無視する。

はじめに Ansibleでdiffするansible.utils.fact_diffモジュールに、skip_linesという特定行をスキップするためのパラメータがあります。使い方は下記ドキュメントに記載の通りなのですが、ぱっと見わかりづらかったのと、Examplesにサンプルコードがなかった…

vimでPlaybookを書く時のおすすめ設定

はじめに Playbookを書く際のエディタは、個人的にはVSCodeがおすすめですが、vimで書かざるを得ないケースもあるかもしれません。そんな時に、設定をちょこっといじると、デフォルトと比べてグッと書きやすくなります。 設定 コマンドラインモードで入力し…

Playbook が「ジョブテンプレート」のドロップダウンリストに表示されない

原因 Playbookにシンタックスエラーがあったため。ansible-playbook --syntax-checkは忘れずやっておきましょうという自戒。 環境 Tower 3.7.3 事象 タイトルの通りです。もう少し詳しく状況を書くと、 プロジェクトのSCMはGitLab。 プロジェクトの更新は正…

特定のタスクを1号機だけ実行する

はじめに 下記のようなインベントリがあったとします。 [servers] node01 node02 node01、node02が、ほぼ同じ構成のとき、基本的にはserversグループを対象としてPlaybookを作成すると思います。 しかし、何らかの事情で、あるタスクは1号機だけ実行したいと…

default(omit)したいのに空文字が定義されてしまうケースをternaryで解決する

2021/05/31追記 ternaryフィルターを使わなくても、defaultフィルターの標準機能でやりたいことが実現できました。defaultフィルターの引数にtrueを指定することで、対象の変数がfalseと評価される場合にdefaultを適用することができます。 以下、サンプルコ…

Ansible Vaultのベストプラクティス

Ansible Vaultのベストプラクティス はじめに Ansible Vaultは、パスワード等の機密情報を暗号化できます。暗号化は、ファイル単位、変数単位のどちらにも対応していますが、単純に使うと、いずれも下記のデメリットが発生します。 ファイル単位 ファイル全…

netboxのLocal Contextを更新する

初めに netboxのLocal ContextをAnsibleのnetbox.netbox.netbox_deviceモジュールで更新する場合、local_context_dataパラメータに指定した値で全て上書きされてしまいます。このため、既に何らかの値がLocal Contextに設定されていて、そこに別の値を追加し…

set_statsのper_hostが使えないときの代替手段

はじめに awxにて、動的に生成した変数を、ジョブテンプレートを跨いで使用したい場合、set_statsモジュールで実現できます。 ただし、awxの制約事項として、per_hostパラメータはnoである必要があります。したがって、set_statsで設定した変数は、ホスト変…

failedになっても最後まで実行し、最後にassertで判定する

はじめに 条件 3つすべてokの場合 Playbook 実行結果 Assert 2のみエラーの場合 Playbook 実行結果 はじめに Ansibleはfail-fastな設計のため、Taskが失敗した時点でPlaybookは異常終了します。 しかし、assertモジュールによるバリデーション等は、エラーが…

ディクショナリにディクショナリを追加する

はじめに ディクショナリをディクショナリに追加する、ただそれだけのメモです。 Playbook --- - hosts: localhost connection: local gather_facts: false tasks: - name: Create an IP address list set_fact: ip_address_list: {} - name: Append IP addr…

リストにディクショナリを追加する

はじめに pythonのappendメソッド的なことをansibleでやってみたメモです。 Playbook --- - hosts: localhost connection: local gather_facts: false tasks: - name: Create an IP address list set_fact: ip_address_list: [] - name: Append IP addresses…

ロール内でディレクティブを利用して変数やターゲットノードをコントロールする

はじめに ロールやタスクレベルで変数やターゲットノードをコントロールしたい場合、ディレクティブで結構柔軟に対応できます。下記に、Play、Role、Block、Taskに利用可能なディレクティブの一覧が記載されています。 docs.ansible.com 以下、簡単な検証結…

a10.acos_axapiで情報取得する

はじめに A10 ACOS向けのcollectionであるa10.acos_axapiを使って、vThunderから情報取得するPlaybookの一例です。 # ansible-galaxy collection list # /root/.ansible/collections/ansible_collections Collection Version -------------- ------- a10.aco…

govcsimにvmware_guestを叩いてみた

はじめに vccimなるvCenterシミュレータがあると聞いたので、こいつに対してAnsibleのVMwareモジュールを叩いてみました。 vcsimのインストール vcsimと、動作確認用にgovcをインストールします。 sudo yum install epel-release sudo yum install golang go…

NW自動化の入り口

はじめに 社内のナレッジに書いた内容を雑にあげてみます。AnsibleでのNW自動化を学ぶにあたり、取っつきやすそうな資料やサービスをびゃっと並べました。 取り合えずAnsibleに触ってみたい www.katacoda.com Webブラウザ上でAnsibleを触れます。 環境準備不…

collectionのモジュールを使ってみた

はじめに Ansibleにはcollectionという概念があります。正直今までなおざりにしてきましたが、Ansible 2.10でモジュールの扱いがcollectionありきになるため、一度整理しておこうと思います。 せっかくなので2.10で検証しました。 $ ansible --version ansib…

商用環境にAWXを利用する場合に抱えるべきリスク

はじめに Ansible TowerとAWXとの違いについては、Red Hat社が下記に記載しています。 www.redhat.com 本番環境でAWXを使用するのは非推奨と明確に記載されていますが、 何らかの事情でこれを検討しなければならないケースを想定して、 AWXを選定、導入、運…

stdoutとstdout_linesの改行

はじめに registerを使用したときに保存されるデータの中に、stdoutとstdout_linesがあります。 この2つの改行の扱いについて検証しました。 やったこと Cisco DevNet SandboxのIOS XE on CSR1000vにshow ntp associationsして、下記を比較しました。 stdout…

Alpine LinuxコンテナにpipでAnsibleをインストールする。

環境 Windows 10 Docker Desktop 2.2.0.5(43884) 手動の場合 Windows上で、docker run。 > docker container run -it alpine /bin/ash コンテナ上で、諸々インストール。必要パッケージは手探りでトライ&エラーしました。 # apk add python3 gcc musl-dev py…

Ansibleで、xmlのタグを指定して内容を取得する。

はじめに 環境 ansible 2.9.6 config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /ansible/py3-venv/lib64/python3.6/site-packages/ansibl…

ネットワーク素人がAnsibleもくもく会 NW編に参加してみた。

はじめに CCNAも持っていなければ、ネットワークアプライアンスも碌に触ったことがない、ネットワーク素人エンジニアが、Ansibleもくもく会に参加し、ネットワーク編をもくもくしてきました。 参加したもくもく会 【リモートのみに変更】Ansibleもくもく会 …

Ansibleでサーバ構築する際に避けるべき手法

初めに Twitter転職したらブログが生えました。 生えたからには水をやらねば、ということで、Ansibleによるサーバ構築における、 個人的にやりたくない避けるべきと感じた手法を記載します。 Excel駆動Playbook開発 SHIFT wareのExcel2YAMLのような、パラメ…