てくなべ (tekunabe)

ansible / network / automation / StackStorm

ansible

[Ansible] Playbook(YAML)のための vim のインデント関連設定

■ はじめに Ansible の Playbook を書いて試すときは、普段 VSCode を使っているため、あまり vim は使っていません。ですが、vim しか使えない環境に置かれたときのために vim で Playbook (YMAL) を書くときに便利そうな設定を調べました。 インデント関連…

[Ansible] オフライン状態でモジュールの詳細をなど調べる方法(ansible-doc/ansible-config)

■ はじめに Playbook を書いていく過程で、Ansible の公式ドキュメントを閲覧したり、インターネットで検索したりして、調べることが多いと思います。 しかし、もしインターネットにつながっていない状態で調べことをしたい時はどのようにしたらよいでしょう…

[Ansible] ループにリストの変数を渡すときの(私が)忘れがちな挙動差分

■ はじめに ループするためにリストの変数を渡すときに、以下の2パターンを特に区別なく使ってしまうことがあります(私が)。 pattern1 - name: pattern1 debug: msg: "{{ item }}" with_items: "{{ test_list }}" # ここにリストの変数を渡す pattern2 - n…

[Ansible] インベントリファイルを YAML 形式で書く

■ はじめに Ansible のターゲットホストの情報を定義するインベントリファイルは、INI 形式の他にも YAML 形式でも定義できす。 この記事では、2つの例をとって ini と YAML を比較しながら YAML でのインベントリファイルの書き方を説明します。 動作確認環…

[Ansible] 環境変数を取得する ansible_env.hoge と lookup("env", "hoge") の違い

■ はじめに Ansible には 環境変数を取得するための方法として、ansible_env 配下の変数を参照する方法と、 lookup("env", "hoge") のように loopkup プラグインを利用する方法があります。これらは性質が大きく異なります。 この記事では簡単な例で動作を確…

[Ansible] Jinja2 でループインデックス(index/index0)などの特殊変数を利用する

■ はじめに Ansible というより、Jinja2 の機能ですが for によるループの中で、今何番目のループであるかを示すループインデックスなどの特殊な変数を利用できます。 例 変数名 値 loop.index 1 から始まるインデックス loop.index0 0 から始まるインデック…

[Ansible] 任意のfactsを定義できる local facts (custom facts) の定義方法

■ はじめに Ansible では、ホスト名やインターフェースなどのシステムの基本情報を fatcs (ファクト)という単位で収集して管理します。通常、Ansible によって決められた情報が対象になりますが、任意の情報を facts として管理するための local facts (cu…

[Ansible] file モジュールの基本的な使い方(ファイルやディレクトリの操作)

■ はじめに Ansible には、ファイル属性の設定やディレクトリの作成などができる file モジュール があります。 この記事では、 file モジュールの公式ドキュメントに記載されている使用例をベースにして、使い方を説明します。 なお、公式ドキュメントの使…

[Ansible] template モジュールの基本的な使い方(Jinja2テンプレートからファイル生成)

■ はじめに Ansible には、Jinja2 というテンプレートエンジンによるテンプレートファイルを利用してファイルを生成してリモートに送れる template モジュール があります。httpd.conf などの設定ファイルを、変数とテンプレートから生成するといった用途に…

[Ansible] user モジュールの基本的な使い方(ユーザーの作成・削除など)

■ はじめに Ansible には、ユーザーを管理(作成、削除など)する user モジュール があります。 この記事では、 user モジュールの公式ドキュメントに記載されている使用例をベースにして、使い方を説明します。 なお、公式ドキュメントの使用例は、Playboo…

[Ansible] lineinfile モジュールの基本的な使い方(テキストファイルの行単位の編集)

■ はじめに Ansible には、テキストファイルを行単位で編集する lineinfile モジュール があります。httpd.conf などの設定ファイルの設定項目を書き換えるといった用途に利用できます。 この記事では、 lineinfile モジュールの公式ドキュメントに記載され…

[Ansible] service モジュールの基本的な使い方(サービスの起動・停止・自動起動の有効化など)

■ はじめに Ansible には、sytemctl や service コマンドなどによるサービスの管理(起動、停止、再起動削除など)をする service モジュール があります。 この記事では、 service モジュールの公式ドキュメントに記載されている使用例をベースにして、使い…

[Ansible] yum モジュールの基本的な使い方(パッケージのインストールなど)

■ はじめに Ansible には、yum によるパッケージの管理(インストール、更新、削除など)をする yum モジュール があります。 この記事では、 yum モジュールの公式ドキュメントに記載されている使用例をベースにして、使い方を説明します。 なお、公式ドキ…

[Ansible] 認証情報の変数名は ansible_user、ansible_password に統一したほうがよさそう

■ はじめに Ansible で管理対象ホストのユーザー名やパスワードを定義する変数名はいくつかあります。 ユーザ名 ansible_ssh_user ansible_user パスワード ansible_ssh_pass ansible_pasword みなさんはどのよいうに使い分けていますでしょうか。 先日たま…

[Ansible] -i オプションでディレクトリを指定すると複数のインベントリファイルをマージできる

■ はじめに Ansible の管理対象ホストを定義するインベントリは、ansible-playbook コマンドの -i オプションで指定します。スタティックなインベントリでも、ダイナミックインベントリでも同じです。 コマンド例 $ ansible-playbook -i inventory site.yml …

Ansible Night in Nagoya 2019.02 に参加と登壇してきました

■ はじめに 【祝】初名古屋開催! 2019/02/15 に名古屋で「Ansible Night in Nagoya 2019.02」が開催されました。 Ansible ユーザー会によるこのイベントは、これまで東京、大阪、福岡で開催されてきましたが、今回ははじめての名古屋開催となりました。 ans…

[Ansible] INI形式の変数定義では yes や true は 文字列、True は boolean

■ はじめに いままで INI 形式のインベントリファイル内での変数は ansible_host くらいしか定義してなかったので気が付かったのですが、boolean の値を定義する場合は YAML とは異なる事情があるようです。 ansibleで変数に入れたyes/noの扱いに苦しんだ - …

[Ansible] デフォルトから変更されている設定項目を確認する方法(ansible-config dump --only-changed)

はじめに Ansible には ansible-config という、設定項目を表示するコマンドがあります。 ansible-config dump --only-changed のように、dumpサブコマンドと --only-changed オプションを付けて実行すると、デフォルトから変更されている設定項目のみを表示…

「Ansibleもくもく会 2019.01 ネットワーク編 in 富士通」にメンターとして参加しました

はじめに 2019/01/ に Ansible のハンズオンイベント「Ansibleもくもく会 2019.01 ネットワーク編 in 富士通」が、 富士通ソリューションスクエア PLYで開催されました。 ansible-users.connpass.com 本イベントに、メンターとして参加させていただいたので…

ネットワークのテスト自動化に利用できそうなツールまとめ

はじめに サーバーのテスト自動化といえば、 Serverspec や Testinfra 、infrataster などが有名ですが、ネットワークのテスト自動化については、みんなが口をそろえて名前を出すものがないような印象です。一方で、リスクの観点から設定変更の自動化より先…

[Ansible] Junos の設定投入後に commit せずに candidate config を取得する

■ はじめに Ansible は、Juniper Junos のネットワーク機器に対応していて、情報の取得や設定変更ができます。 Junos は設定投入後に commit することによって、実際の動作に反映されます。設定変更の流れの中で、commit 前の candidate config を確認したい…

[Ansible] 公式 lint ツール、ansible-lint 4.0.0 リリース。新しいドキュメントサイトやデフォルトルール追加など

■ はじめに Ansible Playbook の 書式をチェックする lint ツール ansilbe-lint のバージョン 4.0.0 が 2018/12/18 にリリースされました。 以下 changelog から引用 New documentation site docs.ansible.com/ansible-lint Additional default rules for an…

[Ansible] ios_config モジュールの backup オプションによるバックアップで意図しないバックアップファイルが削除されるバグについて (Ansible 2.7.5 現在)

■ はじめに Ansible には Cisco IOS ネットワーク機器に設定変更コマンドを実行する ios_config モジュールがあります。 ios_config モジュールには、backup という、設定変更前のコンフィグを事前に Ansible 側に保存するオプションがあります。 デフォルト…

[Ansible] ios_config モジュールの src で指定するファイルの内容には正しいインデントが必要

これは Ansible Blogger 2018 (sponsored by Red Hat) Advent Calendar 2018 の22日目の記事です。 ■ はじめに Ansible には、 Cisco IOS ネットワーク機器に対して設定変更コマンドを実行できる ios_config モジュールがあります。 ios_config モジュール…

[Ansible] AWX から Cisco IOS と Juniper Junos を操作する

■ はじめに Ansible には GUI 付きの Ansible Tower という製品があります。そのアップストリーム版 OSS にあたるものとして AWX があります。 AWXのダッシュボード画面 この記事では、AWX から IOS と Junos の機器に対して簡単な操作(show versionの実行…

[Ansible] 2018年のAnsible ネットワークモジュールのアップデートまとめ(詳細版)

これは Ansible Advent Calendar 2018 の15日目の記事です。 ■ はじめに 2018年、Ansible は 2.5、2.6、2.7 とバージョンアップを重ねてきました。ネットワーク関連では、新規対応プラットフォームやモジュールの追加の他にも、ネットワークモジュール用コネ…

[Ansible] ansible-playbook コマンドの -e (--extra-vars) オプションは変数ファイル名も指定できる

-e (--extra-vars) オプションとは ansible-playbook コマンドには、-e(または --extra-bars) という、extra vars(一番優先される変数の種類)を指定するオプションがあります。複数指定する場合は、複数の -e オプションを使用します。 ansible-playbook…

[Ansible] Playbook Debugger でタスク変数の値を変更してもタスクに反映されない現象について

■ はじめに Ansible には Playbook Debugger という、Playbook 実行時に変数の値を確認、変更などできる機能があります。 参考 Playbook Debugger 使えばきっと一目置かれるAnsibleのちょっと高度な機能 Ansible の Playbook Debugger を常に起動させる方法…

[Ansible] ios_config モジュールはデフォルトでは copy run start しない

■ デフォルトでは copy run start によるコンフィグ保存をしない Ansible には、Cisco IOS ネットワーク機器に対して設定変更などができる ios_config モジュールがあります。 lines オプションなどを利用して実行したいコマンドを指定します。 使用例 - nam…

Ansibleもくもく会を誘致して自社会場で開催した話

■ はじめに 2018/12/10 に弊社を会場として「Ansibleもくもく会 2018.12 ネットワーク編 in エーピーコミュニケーションズ」を開催しました。 ansible-users.connpass.com Ansibleもくもく会は、Ansible ユーザー会というコミュニティ主催とするハンズオンの…