LoginSignup
1
0

More than 1 year has passed since last update.

【Ansible】Amazon EC2でansible-navigatorを使いたい~第2章:ansible-navigatorの実行~

Last updated at Posted at 2023-02-19

はじめに

前回の記事(【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が呼び出せるようになった

前提

詳細

1. ansible-navigatorの設定ファイル作成

Ansible Documentation > ansible-navigator settingsを参考にして、ansible-navigatorの
設定ファイルを作成します。
前回の記事で作成したフォルダの中に必要なファイルを追加します

  • :file_folder: /home/ec2-user/ansible_test
    • :page_facing_up: execution-environment.yml
    • :page_facing_up: ansible.cfg
    • :page_facing_up: requirements.yml
    • :page_facing_up: requirements.txt
    • :file_folder: context
    • :page_facing_up: ansible-navigator.yml ☆ ここから下を新規追加
    • :page_facing_up: .ansible-lint
    • :file_folder: playbooks
      • :page_facing_up: test.yml
  1. 作業用ディレクトリに移動する

    $ cd ~/ansible_test
    
  2. 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
    
  3. ansible-lintの設定ファイルを作成する

    $ vi .ansible-lint
    
    .ansible-lint
    ---
    use_default_rules: true
    

2. 動作確認用Playbookの作成・実行

  1. 動作確認用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}")
    
  2. playbookを実行する

    $ ansible-navigator run playbooks/test.yml
    
  3. 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が呼び出せるようになったそうなので
実際に使ってみます

  1. 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}}"
    
  2. 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 }}"
          
  3. ansible-lintの設定ファイルを編集する

    • ansible-lintの設定ファイルを編集し、unnamed-taskを指摘しないようにします
    • skip_listに除外するルールを記載します
    $ vi .ansible-lint
    
    .ansible-lint
    ---
    use_default_rules: true
    skip_list:  # 追加
      - unnamed-task
    
  4. 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


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0