数年前にちょっとした処理を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] }}"