こちらの記事はAnsible lint Advent Calendar 2022 8日目の記事になります。
今回は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の利用が必要な場合は再インストールする必要があります。