
数年前にちょっとした処理をAnsibleで書いたことがあったのですが、 バージョンアップ等でPlaybookの書き方が変わることが多く、 久しぶりに触ったのでメモがてら記録しておきます。
変数を外部ファイルから読み込む
◆Playbook
- hosts: HOGEHOGE
gather_facts: no
vars_files:
- ../vars/var.yml
tasks:
- name: Check HOGEHOGE
◆var.yml
ansible_connection: network_cli ansible_network_os: ios ansible_user: admin ansible_ssh_pass: password interface: Gi1/0/1
コマンドに変数を使うとinvalid inputになる
直接 show int Gi1/0/1とすると問題ないのですが、 以下のような例ではエラーになってしまいます。
◆ダメな例
下記のように変数部分のみをダブルクォーテーションで囲むと、 invalid inputになってしまいます。
tasks:
- name: TEST
ios_command:
commands:
- show int "{{interface}}"
◆OK例
コマンド部分は、変数部分も含めて全体をダブルクォーテーションで囲んだ方が良さそうです。
tasks:
- name: TEST
ios_command:
commands:
- "show int {{interface}}"
tasks:
- name: TEST
ios_command:
commands:
- show int {{interface}}
コマンド結果を確認する行を絞る
show コマンド等で出力が長い場合は、 必要な出力が何行目にあるかを把握したうえで、wait_forで判定するとよさそうです。 下記はshow version の1行目だけを表示する例です。
tasks:
- name: TEST
ios_command:
commands:
- "show version"
register: result
- name: debug
debug:
msg: "{{ result.stdout_lines[0][0] }}"