使用GitHub Actions执行Ansible Playbook的CI
在本文中,我们将介绍使用GitHub Actions执行Ansible Playbook CI的示例。
在GitHub Actions提供的Ubuntu虚拟机上运行Docker容器,并使用Docker作为连接插件。
为了简化说明,只采用了最基本的实现。根据需要,可以添加lint处理、playbook执行后的配置确认处理等。
目录结构
├── .github/workflows/playbook.yml
├── install.yml
└── roles
├── centos7
│ └── tasks
│ └── main.yml
└── requirements.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
- hosts: all
roles:
- role: geerlingguy.repo-epel
tasks:
- name: Install cowsay with yum
include_role:
name: centos7
when: ansible_distribution == "CentOS"
- name: Install cowsay with yum
yum:
name: cowsay
state: present
---
- geerlingguy.repo-epel
解说
「.github/workflows/playbook.yml」是GitHub Actions的配置文件。
根据此文件的配置,当存储库进行推送时,将执行操作。
Ansible Playbook会在启动的容器上执行。
在启动Docker容器时,我们需要从环境变量中指定Docker Hub的URL。如果要使用其他的容器注册表服务,需要分别指定DOCKER_PASSWORD、DOCKER_REGISTRY_URL和DOCKER_USERNAME。
其他注意事项
Ansible已经预先在GitHub Actions提供的虚拟机上安装好了。但是由于Ansible的版本会随着发布不断升级,因此如果想要指定使用特定版本的Ansible,就需要做一些额外的调整。
如果要在Ubuntu上运行Ansible Playbook,由于Docker Hub上的Ubuntu镜像中没有安装Python,因此需要提前准备一个已安装Python的Ubuntu镜像。
在Action中,也可以使用docker build命令或类似的方式来构建镜像。
请参考下列网站
-
- ansible-joke-programs/asciiquarium | GitHub
- ansible-joke-programs/cowsay | GitHub