Giter VIP home page Giter VIP logo

docker-fedora29-ansible's Introduction

Fedora 29 Ansible Test Image

Docker Automated build

Fedora 29 Docker container for Ansible playbook and role testing.

Tags

  • latest: Latest stable version of Ansible.
  • testing: Same as latest, but with additional testing dependencies, including:
    • yamllint
    • ansible-lint
    • flake8
    • testinfra
    • molecule

The latest tag is a lightweight image for basic validation of Ansible playbooks. The testing tag also includes a comprehensive suite of Ansible and infrastructure testing tools in case you want them pre-installed.

How to Build

This image is built on Docker Hub automatically any time the upstream OS container is rebuilt, and any time a commit is made or merged to the master branch. But if you need to build the image on your own locally, do the following:

  1. Install Docker.
  2. cd into this directory.
  3. Run docker build -t fedora29-ansible .

Note: Switch between master and testing depending on whether you want the extra testing tools present in the resulting image.

How to Use

  1. Install Docker.
  2. Pull this image from Docker Hub: docker pull geerlingguy/docker-fedora29-ansible:latest (or use the image you built earlier, e.g. fedora29-ansible:latest).
  3. Run a container from the image: docker run --detach --privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro geerlingguy/docker-fedora29-ansible:latest (to test my Ansible roles, I add in a volume mounted from the current working directory with --volume=`pwd`:/etc/ansible/roles/role_under_test:ro).
  4. Use Ansible inside the container: a. docker exec --tty [container_id] env TERM=xterm ansible --version b. docker exec --tty [container_id] env TERM=xterm ansible-playbook /path/to/ansible/playbook.yml --syntax-check

Notes

I use Docker to test my Ansible roles and playbooks on multiple OSes using CI tools like Jenkins and Travis. This container allows me to test roles and playbooks using Ansible running locally inside the container.

Important Note: I use this image for testing in an isolated environment—not for production—and the settings and configuration used may not be suitable for a secure and performant production environment. Use on production servers/in the wild at your own risk!

Author

Created in 2018 by Jeff Geerling, author of Ansible for DevOps.

docker-fedora29-ansible's People

Contributors

geerlingguy avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

docker-fedora29-ansible's Issues

Hostname module does not recognize systemd

Summary
Using the ansible module Hostname on a docker container using molecule, the following message appears:

fatal: [Fedora]: FAILED! => {"changed": false, "msg": "Command failed rc=1, out=, err=System has not been booted with systemd as init system (PID 1). Can't operate.\nFailed to create bus connection: Host is down\n"}  

However, the task completes without any problems on Ubuntu 16.04 and 18.04.

Ansible version

ansible 2.7.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/alles60/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/alles60/misc/config-linux-molecule/lib/python3.7/site-packages/ansible
  executable location = /home/alles60/misc/config-linux-molecule/bin/ansible
  python version = 3.7.3 (default, May 11 2019, 00:45:16) [GCC 8.3.1 20190223 (Red Hat 8.3.1-2)]

Configuration
excerp from molecule.yml:

platforms:
  - name: Fedora
    image: geerlingguy/docker-fedora29-ansible
    pre_build_image: true
    privileged: true
  - name: Ubuntu-16.04
    image: geerlingguy/docker-ubuntu1604-ansible
    pre_build_image: true
    privileged: true
  - name: Ubuntu-18.04
    image: geerlingguy/docker-ubuntu1804-ansible
    pre_build_image: true
    privileged: true

Steps to reproduce
Run the following task on a vanilla container with the image docker-fedora29-ansible:

- name: Change the hostname
  become: yes
  hostname:
    name: "{{ config_hostname }}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.