はじめに
前回の記事(【Ansible】Amazon EC2でansible-navigatorを使いたい~第1章:実行環境イメージの作成~)の続きです。
今回は、第2章として「ansible-navigatorの実行」をします。ついでに、「ansible-navigator経由でansible-lintの実行」してみようと思います。
TL;DR
-
ansible-playbook
コマンドはansible-navigator run
コマンドに変化した - ansible-navigatorには実行した内容のリプレイ機能がある
- ansible-navigator 2.0.0からansible-lintが呼び出せるようになった
前提
- 前回の記事(【Ansible】Amazon EC2でansible-navigatorを使いたい~第1章:実行環境イメージの作成~)の手順にもとづいて、実行環境イメージが作成してあること
- 記事の内容をもとに作業をしてみたい方のみ
詳細
1. ansible-navigatorの設定ファイル作成
Ansible Documentation > ansible-navigator settingsを参考にして、ansible-navigatorの
設定ファイルを作成します。
前回の記事で作成したフォルダの中に必要なファイルを追加します
-
/home/ec2-user/ansible_test
- execution-environment.yml
- ansible.cfg
- requirements.yml
- requirements.txt
- context
- ansible-navigator.yml ☆ ここから下を新規追加
- .ansible-lint
-
playbooks
- test.yml
-
作業用ディレクトリに移動する
$ cd ~/ansible_test
-
ansible-navigator.ymlを作成する
- ログの保管先
./logs
は自動で作成されるので、作成は不要です
$ vi ansible-navigator.yml
ansible-navigator.yml--- ansible-navigator: ansible: config: path: ansible.cfg execution-environment: container-engine: podman enabled: true image: localhost/ansible-test:v0.0.1 pull: policy: never logging: append: true file: ./logs/ansible-navigator.log level: debug mode: stdout playbook-artifact: enable: true replay: ./logs/artifact/replay.json save-as: ./logs/artifact/artifact.json ansible-lint: config: .ansible-lint
- ログの保管先
-
ansible-lintの設定ファイルを作成する
$ vi .ansible-lint
.ansible-lint--- use_default_rules: true
2. 動作確認用Playbookの作成・実行
-
動作確認用Playbook(test.yml)を作成する
$ mkdir playbooks $ vi playbooks/test.yml
test.yml--- - name: "Fetch EE image info" hosts: localhost gather_facts: false tasks: - name: "fetch ansible_facts" ansible.builtin.setup: gather_subset: - "min" - name: "display ansible_facts" ansible.builtin.debug: var: ansible_facts.env - name: "fetch ansible version" ansible.builtin.command: "ansible --version" register: r_ansible_version changed_when: false - name: "display r_ansible_version" ansible.builtin.debug: var: r_ansible_version.stdout_lines - name: "fetch pip package info" community.general.pip_package_info: clients: "pip" register: r_pip_package - name: "display r_pip_info" ansible.builtin.debug: var: >- r_pip_package.packages.pip | json_query("*[0].{name: name, version: version}")
-
playbookを実行する
- ansible-navigatorでplaybookを実行する場合は、
ansible-navigator run
です - ansible-playbookとansible-navigatorコマンドの比較は、自動コンテンツナビゲーターコマンドの比較を参照
$ ansible-navigator run playbooks/test.yml
- ansible-navigatorでplaybookを実行する場合は、
-
artifactを使ってplaybookのリプレイを確認する
- ansible-navigatorには実行した内容のリプレイ機能があります
$ ansible-navigator replay ./logs/artifact/artifact.json
3. ansible-lintの実行
[Ansible] ansible-navigator 2.0.0 機能ピックアップ Part 1: 追加サブコマンド編の記事
によると、ansible-navigator 2.0.0からansible-lintが呼び出せるようになったそうなので
実際に使ってみます
-
ansible-lintの動作確認用playbookを作成する
$ vi playbooks/lint-test.yml
lint-test.yml--- - name: "lint test" hosts: localhost gather_facts: false vars: test: "test var" tasks: - debug: msg: "{{test}}"
-
ansible-lintを実行する
$ ansible-navigator lint lint-test.yml
-
以下のように、2つの指摘がされていることが確認されます
unnamed-task: All tasks should be named playbooks/lint-test.yml:8 Task/Handler: debug msg={{test}} var-spacing: Variables should have spaces before and after: {{test}} playbooks/lint-test.yml:8 Task/Handler: debug msg={{test}}
-
指摘内容
-
unnamed-task: 名前が付けられていないタスクがある
-
var-spacing: 変数定義の前後にスペースが無い
誤)msg: "{{test}}" 正)msg: "{{ test }}"
-
-
-
-
ansible-lintの設定ファイルを編集する
- ansible-lintの設定ファイルを編集し、
unnamed-task
を指摘しないようにします - skip_listに除外するルールを記載します
$ vi .ansible-lint
.ansible-lint--- use_default_rules: true skip_list: # 追加 - unnamed-task
- ansible-lintの設定ファイルを編集し、
-
ansible-lintを実行する
$ ansible-navigator lint lint-test.yml
-
unnamed-task
が指摘されなくなりました
var-spacing: Variables should have spaces before and after: {{test}} playbooks/lint-test.yml:8 Task/Handler: debug msg={{test}}
-
さいごに
- 第2章では、実際にansible-navigatorを使ってplaybookを実行しました。
リプレイ機能やansible-lintが使えるようになり、より便利になったと感じます
参考URL
-
【Ansible】Amazon EC2でansible-navigatorを使いたい~第1章:実行環境イメージの作成~
- 前回の記事
-
Ansible Documentation > ansible-navigator settings
- ansible-navigatorの設定ファイルの書き方
-
Red Hat Customer Portal > 1.4. 自動コンテンツナビゲーターコマンドの比較
- ansible-playbookとansible-navigatorコマンドの比較
-
[Ansible] 「つまずき Ansible 【Part36】ansible-navigator」ふりかえり
- ansible-navigatorの使い方
-
[Ansible] ansible-navigator 2.0.0 機能ピックアップ Part 1: 追加サブコマンド編
- ansible-navigator 2.0.0の機能紹介