使用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
广告
将在 10 秒后关闭
bannerAds