Chapter 57

【付録】GitHub Actions で Ansible lint を実行する

mamono210
mamono210
2022.12.23に更新

今回は GitHub Actions で Ansible lint を実行する方法を考察します。

Actionライブラリを利用する

GitHub Actions には Ansible コミュニティー公式の Ansible lint を実行するための Actionライブラリ があります。

ただし指定できるバラメーターがパスのみで非常に扱いにくくなっています。

.github/workflows/build.yml
name: Ansible Lint
on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Run ansible-lint
        uses: ansible-community/ansible-lint-action@v6
        with:
          path: "playbooks/"

シェルスクリプトで実行する

公式の Actionライブラリ の採用は難しいのでシェルスクリプトで対応します。Galaxy Roleのインストール部分は適宜変更します。

.github/workflows/build.yml
name: Ansible Lint
on: [push, pull_request]

jobs:
  ansible-lint:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3'

      - name: Install Ansible and ansible-lint
        run: |
          pip install ansible ansible-lint

      - name: Install galaxy roles
        run: |
          if [ -f 'roles/requirements.yml' ]; then
            ansible-galaxy install -r roles/requirements.yml
          else
            ansible-galaxy install git+https://github.com/${{ github.repository }},${{ github.sha }}
          fi

      - name: Execulte ansible-lint
        run: |
          ansible-lint

      - name: Show ansible-lint version
        run: |
          ansible-lint --version
          ansible-community --version

その他

GitHub Actions では Action 実行に起動される VM に Ansible が初期インストールされています。もし初期インストールされているバージョン以外の Ansible の利用が必要な場合は再インストールする必要があります。