2020-01-01から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…

CentOSにopenfortivpnをインストールしてVPNを張る

はじめに AWS上のCentOSから社内の検証環境に接続したくて、openfortivpnでVPNを張ったときのメモです。 環境 # cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) # ./openfortivpn --version 1.14.1 パッケージインストール&ビルド 依存パッ…

NW自動化の入り口

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

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

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

netboxのセットアップ(dockerでない)

はじめに netbox.readthedocs.io DigitalOceanが考案したOSSのIPAM/DCIM Webアプリケーションです。 ブラウザでぽちぽち資産管理ができるようになります。 物理構成と照らし合わせて忠実に管理できるのが特徴です。 IPアドレスや接続情報を物理的な構成に即…

商用環境に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のような、パラメ…