LoginSignup
1
0

More than 3 years have passed since last update.

GitHub ActionsでAnsible PlaybookのCIを実行する

Last updated at Posted at 2020-03-08

この記事ではGitHub ActionsでAnsible PlaybookのCIを実行するサンプルを紹介します。

GitHub Actionsで提供されているVM(Ubuntu)上にDockerコンテナを起動しconnection pluginにDockerを利用します。

説明を簡単にするために必要最低限の実装になっています。必要に応じてlint処理、playbook実行後の設定の確認処理等を追加してください。

ディレクトリ構成

├── .github/workflows/playbook.yml
├── install.yml
└── roles
    ├── centos7
    │   └── tasks
    │       └── main.yml
    └── requirements.yml

それぞれのファイルの中身

.github/workflows/playbook.yml
name: Ansible Playbook
on: push

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Docker run Centos7
        env:
          DOCKER_REGISTRY_URL: https://hub.docker.com/
        run: sudo docker run -d -t --name=mycontainer centos:7

      - name: Install Ansible galaxy roles 
        run: ansible-galaxy install -r roles/requirements.yml

      - name: ansible
        run: ansible-playbook -i 'mycontainer,' -c docker -u root install.yml
install.yml
- hosts: all
  roles:
    - role: geerlingguy.repo-epel

  tasks:
    - name: Install cowsay with yum
      include_role:
        name: centos7
      when: ansible_distribution == "CentOS"
roles/centos7/tasks/main.yml
- name: Install cowsay with yum
  yum:
    name: cowsay
    state: present
roles/requirements.yml
---
- geerlingguy.repo-epel

解説

「.github/workflows/playbook.yml」がGitHub Actionsの設定ファイルになります。

このファイルの設定だとリポジトリにpushがあるとActionが実行されます。

Ansible Playbookは起動したコンテナに対して実行されます。

Dockerコンテナを起動する時は環境変数からDocker HubのURLを指定します。他のコンテナレジストリサービスを利用する場合はDOCKER_PASSWORD、DOCKER_REGISTRY_URL、DOCKER_USERNAMEをそれぞれ指定します。

その他注意点

AnsibleはGitHub Actionsが提供するVMに既にインストールさています。ただしインストールされている Ansibleのバージョンがリリースとともに上がっていく ため、Ansibleのバージョンを指定して利用したい場合は工夫が必要になります。

またAnsible PlaybookをUbuntuへ実行する場合、Docker Hub上のUbuntuのイメージにはPythonがインストールされていないため事前にPythonをインストールしたUbuntuのイメージを用意する必要があります。

イメージはAction内でdocker buildコマンド等でビルドすることも可能です。

参考サイト

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