Giter Site home page Giter Site logo

geerlingguy / docker-ubuntu2004-ansible Goto Github PK

View Code? Open in Web Editor NEW
84.0 4.0 49.0 9 KB

Ubuntu 20.04 LTS (Focal Fossa) Docker container for Ansible playbook and role testing.

Home Page: https://hub.docker.com/r/geerlingguy/docker-ubuntu2004-ansible

License: MIT License

Dockerfile 76.78% Shell 23.22%

docker-ubuntu2004-ansible's Introduction

Ubuntu 20.04 LTS (Focal Fossa) Ansible Test Image

CI Docker pulls

Ubuntu 20.04 LTS (Focal Fossa) Docker container for Ansible playbook and role testing.

Tags

  • latest: Latest stable version of Ansible.

The latest tag is a lightweight image for basic validation of Ansible playbooks.

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 ubuntu2004-ansible .

How to Use

  1. Install Docker.
  2. Pull this image from Docker Hub: docker pull geerlingguy/docker-ubuntu2004-ansible:latest (or use the image you built earlier, e.g. ubuntu2004-ansible:latest).
  3. Run a container from the image: docker run --detach --privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host geerlingguy/docker-ubuntu2004-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 2020 by Jeff Geerling, author of Ansible for DevOps.

docker-ubuntu2004-ansible's People

Contributors

c-goes avatar dhoppe avatar geerlingguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

docker-ubuntu2004-ansible's Issues

Image build now getting hung up at '

After merging #12, I'm now seeing in the image build pipeline:

Setting up tzdata (2021a-0ubuntu0.20.04) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
  2. America     5. Arctic     8. Europe    11. SystemV
  3. Antarctica  6. Asia       9. Indian    12. US

cc @c-goes

Related: #2

libyaml support not being loaded when I install Ansible + pyyaml

I have recently updated the Dockerfile to install libyaml-devel, but it seems like Ansible might still be using Python-based yaml parsing, judging by lackluster performance (see ansible/ansible#72030), as well as the fact that python3 -c 'import _yaml' gives:

root@93e95ea9dc5a:/# python3 -c 'import _yaml'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named '_yaml'

See commit: 921d425

"Failed to connect to bus: No such file or directory" when running `systemctl --user`

Using this image in molecule, with the following molecule.yml file:

---
dependency:
  name: galaxy
  options:
    role-file: requirements.yml
driver:
  name: docker
platforms:
  # From https://github.com/geerlingguy/molecule-playbook-testing
  - name: ubuntu2004
    image: geerlingguy/docker-ubuntu2004-ansible:latest
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    # command: ${MOLECULE_DOCKER_COMMAND:-"/usr/sbin/init"}
    # command: ""
    command: "/usr/lib/systemd/systemd"
    # privileged is necessary for systemd tasks
    privileged: true
    pre_build_image: false
provisioner:
  name: ansible
  inventory:
    host_vars:
      ubuntu2004:
        ansible_user: ansible
        ansible_env:
          USER: ansible
verifier:
  name: testinfra
lint: |
  set -e
  yamllint .
  ansible-lint .

and this Dockerfile.j2 (to add the ansible user:

# Molecule managed

{% if item.registry is defined %}
FROM {{ item.registry.url }}/{{ item.image }}
{% else %}
FROM {{ item.image }}
{% endif %}

{% if item.env is defined %}
{% for var, value in item.env.items() %}
{% if value %}
ENV {{ var }} {{ value }}
{% endif %}
{% endfor %}
{% endif %}

RUN if [ $(command -v apt-get) ]; then export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -y python3 sudo bash ca-certificates iproute2 python3-apt aptitude && apt-get clean && rm -rf /var/lib/apt/lists/*; \
    elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install /usr/bin/python3 /usr/bin/python3-config /usr/bin/dnf-3 sudo bash iproute && dnf clean all; \
    elif [ $(command -v yum) ]; then yum makecache fast && yum install -y /usr/bin/python /usr/bin/python2-config sudo yum-plugin-ovl bash iproute && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
    elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python3 sudo bash iproute2 && zypper clean -a; \
    elif [ $(command -v apk) ]; then apk update && apk add --no-cache python3 sudo bash ca-certificates; \
    elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python3 sudo bash ca-certificates iproute2 && xbps-remove -O; fi

# Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP`
ENV ANSIBLE_USER=ansible SUDO_GROUP=sudo
RUN set -xe \
  && groupadd -r ${ANSIBLE_USER} \
  && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \
  && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \
  && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers

I then try to run this task:

- task:
  systemd:
    name: myunit.timer
    scope: user
    enabled: true
    state: started

Which fails:

    TASK [Enable and start automatic backups] **************************************
    task path: /home/coaxial/dotfiles/ansible-playbook/tasks/backups.yml:39
    redirecting (type: connection) ansible.builtin.docker to community.general.docker
    <ubuntu2004> ESTABLISH DOCKER CONNECTION FOR USER: ansible
    <ubuntu2004> EXEC ['/usr/bin/docker', b'exec', b'-u', 'ansible', b'-i', 'ubuntu2004', '/bin/sh', '-c', "/bin/sh -c 'echo ~ansible && sleep 0'"]
    <ubuntu2004> EXEC ['/usr/bin/docker', b'exec', b'-u', 'ansible', b'-i', 'ubuntu2004', '/bin/sh', '-c', '/bin/sh -c \'( umask 77 && mkdir -p "` echo /home/ansible/.ansible/tmp `"&& mkdir "` echo /home/ansible/.ansible/tmp/ansible-tmp-1607193789.149203-1414406-197663461612289 `" && echo ansible-tmp-1607193789.149203-1414406-197663461612289="` echo /home/ansible/.ansible/tmp/ansible-tmp-1607193789.149203-1414406-197663461612289 `" ) && sleep 0\'']
    Using module file /home/coaxial/.virtualenvs/ansible/lib/python3.8/site-packages/ansible/modules/systemd.py
    <ubuntu2004> PUT /home/coaxial/.ansible/tmp/ansible-local-1411952lk472l08/tmpfevv6a53 TO /home/ansible/.ansible/tmp/ansible-tmp-1607193789.149203-1414406-197663461612289/AnsiballZ_systemd.py
    <ubuntu2004> EXEC ['/usr/bin/docker', b'exec', b'-u', 'ansible', b'-i', 'ubuntu2004', '/bin/sh', '-c', "/bin/sh -c 'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1607193789.149203-1414406-197663461612289/ /home/ansible/.ansible/tmp/ansible-tmp-1607193789.149203-1414406-197663461612289/AnsiballZ_systemd.py && sleep 0'"]
    <ubuntu2004> EXEC ['/usr/bin/docker', b'exec', b'-u', 'ansible', b'-i', 'ubuntu2004', '/bin/sh', '-c', "/bin/sh -c 'MAIL=/var/mail/ansible USER=ansible XDG_SESSION_TYPE=tty HOME=/home/ansible DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus NVM_DIR=/home/ansible/.nvm LOGNAME=ansible XDG_SESSION_CLASS=user TERM=xterm XDG_SESSION_ID=c3 PATH=:/home/ansible/.cargo/bin:/home/ansible/bin:/home/ansible/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ansible/.rvm/bin:/usr/local/go/bin:/home/ansible/go/bin XDG_RUNTIME_DIR=/run/user/1000 LANG=en_US SHELL=/bin/sh PWD=/home/ansible LC_ALL=en_US.UTF-8 EDITOR=/usr/bin/nvim /usr/bin/python3 /home/ansible/.ansible/tmp/ansible-tmp-1607193789.149203-1414406-197663461612289/AnsiballZ_systemd.py && sleep 0'"]
    <ubuntu2004> EXEC ['/usr/bin/docker', b'exec', b'-u', 'ansible', b'-i', 'ubuntu2004', '/bin/sh', '-c', "/bin/sh -c 'rm -f -r /home/ansible/.ansible/tmp/ansible-tmp-1607193789.149203-1414406-197663461612289/ > /dev/null 2>&1 && sleep 0'"]
fatal: [ubuntu2004]: FAILED! => {
    "changed": false,
    "cmd": "/usr/bin/systemctl --user",
    "invocation": {
        "module_args": {
            "daemon_reexec": false,
            "daemon_reload": false,
            "enabled": true,
            "force": null,
            "masked": null,
            "name": "borgmatic.timer",
            "no_block": false,
            "scope": "user",
            "state": "started",
            "user": null
        }
    },
    "msg": "Failed to connect to bus: No such file or directory",
    "rc": 1,
    "stderr": "Failed to connect to bus: No such file or directory\n",
    "stderr_lines": [
        "Failed to connect to bus: No such file or directory"
    ],
    "stdout": "",
    "stdout_lines": []
}

Furthermore:

coaxial@x230 $ molecule login
root@ubuntu2004:/# sudo -u ansible systemctl --user
Failed to connect to bus: No such file or directory
root@ubuntu2004:/# su - ansible
$ systemctl --user
  UNIT                                       LOAD   ACTIVE     SUB       DESCRIP>
  dev-mapper-ubuntu\x2d\x2dvg\x2droot.device loaded activating tentative /dev/ma>
  -.mount                                    loaded active     mounted   Root Mo>
  dev-hugepages.mount                        loaded active     mounted   /dev/hu>
  dev-mqueue.mount                           loaded active     mounted   /dev/mq>
  etc-hostname.mount                         loaded active     mounted   /etc/ho>
  etc-hosts.mount                            loaded active     mounted   /etc/ho>
  etc-resolv.conf.mount                      loaded active     mounted   /etc/re>
  run-user-1000.mount                        loaded active     mounted   /run/us>
  sys-fs-fuse-connections.mount              loaded active     mounted   /sys/fs>
  sys-kernel-config.mount                    loaded active     mounted   /sys/ke>
  sys-kernel-debug.mount                     loaded active     mounted   /sys/ke>
  sys-kernel-tracing.mount                   loaded active     mounted   /sys/ke>
  tmp.mount                                  loaded active     mounted   /tmp   >
  init.scope                                 loaded active     running   System >
  -.slice                                    loaded active     active    Root Sl>
  dbus.socket                                loaded active     listening D-Bus U>
  pk-debconf-helper.socket                   loaded active     listening debconf>
  basic.target                               loaded active     active    Basic S>
  default.target                             loaded active     active    Main Us>
  paths.target                               loaded active     active    Paths  >
  sockets.target                             loaded active     active    Sockets>
  timers.target                              loaded active     active    Timers >

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

22 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
$ env
MAIL=/var/mail/ansible
USER=ansible
XDG_SESSION_TYPE=tty
HOME=/home/ansible
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
LOGNAME=ansible
XDG_SESSION_CLASS=user
TERM=xterm
XDG_SESSION_ID=c2
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
XDG_RUNTIME_DIR=/run/user/1000
SHELL=/bin/sh
PWD=/home/ansible
$
root@ubuntu2004:/# sudo -u ansible env
HOSTNAME=ubuntu2004
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
MAIL=/var/mail/ansible
LOGNAME=ansible
USER=ansible
HOME=/home/ansible
SHELL=/bin/sh
SUDO_COMMAND=/usr/bin/env
SUDO_USER=root
SUDO_UID=0
SUDO_GID=0

I have also tried setting DBUS_SESSION_BUS_ADDRESS: unix:path=/run/user/1000/bus for that task with environment, but it fails the same way. I then tried it again but with the whole environment as per the env command after su - ansible, and same error.

What I don't get is why is that command running directly in the container with su - ansible, but not in the task or with sudo -u ansible.

Unable to update apt cache

For some reason, I am unable to update the apt cache with this docker image.
I tried it with ubuntu:latest where everything works fine.
Do you have an idea how to solve this?

❯ mol login                                                                                          13:22:28  
INFO     Running default > login
root@tinytex-ubuntu:/# apt update
Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Err:1 http://archive.ubuntu.com/ubuntu focal InRelease
  Couldn't create temporary file /tmp/apt.conf.7vCFS7 for passing config to apt-key
Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Err:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease
  Couldn't create temporary file /tmp/apt.conf.n79pfd for passing config to apt-key
Get:3 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Err:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease
  Couldn't create temporary file /tmp/apt.conf.95a2eh for passing config to apt-key
Err:3 http://security.ubuntu.com/ubuntu focal-security InRelease
  Couldn't create temporary file /tmp/apt.conf.ardLfm for passing config to apt-key
Reading package lists... Done
W: GPG error: http://archive.ubuntu.com/ubuntu focal InRelease: Couldn't create temporary file /tmp/apt.conf.7vCFS7 for passing config to apt-key
E: The repository 'http://archive.ubuntu.com/ubuntu focal InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://archive.ubuntu.com/ubuntu focal-updates InRelease: Couldn't create temporary file /tmp/apt.conf.n79pfd for passing config to apt-key
E: The repository 'http://archive.ubuntu.com/ubuntu focal-updates InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://archive.ubuntu.com/ubuntu focal-backports InRelease: Couldn't create temporary file /tmp/apt.conf.95a2eh for passing config to apt-key
E: The repository 'http://archive.ubuntu.com/ubuntu focal-backports InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://security.ubuntu.com/ubuntu focal-security InRelease: Couldn't create temporary file /tmp/apt.conf.ardLfm for passing config to apt-key
E: The repository 'http://security.ubuntu.com/ubuntu focal-security InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

My molecule.yml:

dependency:
  name: galaxy
driver:
  name: podman
platforms:
  #- name: tinytex-centos
  #  image: docker.io/geerlingguy/docker-centos8-ansible
  #  pre_build_image: true
  - name: tinytex-ubuntu
    image: docker.io/geerlingguy/docker-ubuntu2004-ansible
    pre_build_image: true
provisioner:
  name: ansible
verifier:
  name: ansible

Add non-root user to the image?

I was looking at this exapmpe. I can fork and PR if you want.
https://molecule.readthedocs.io/en/latest/examples.html

# Create ansibleuser with sudo permissions and membership inDEPLOY_GROUP ENV ANSIBLE_USER=ansible SUDO_GROUP=sudo DEPLOY_GROUP=deployer RUN set -xe \ && groupadd -r ${ANSIBLE_USER} \ && groupadd -r ${DEPLOY_GROUP} \ && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers

Service is in unknown state

Hey there,

I am quite new to Molecule and currently developing an Ansible Role to install Zabbix Agent on Ubuntu, Debian and CentOS.
After installation i want to ensure the service is up and running with the following task:

- name: Start Zabbix Agent service
  service:
    name: zabbix-agent
    state: started
  when:
    - ansible_os_family == 'RedHat' or
      ansible_os_family == 'Debian'

When running molecule converge the step fails for all three docker images and i can't figure out why.

fatal: [ubuntu]: FAILED! => {"changed": false, "msg": "Service is in unknown state", "status": {}}

The Agent is installed via .deb packages which are provided by Zabbix for each distribution. The error also occures when I try starting other services. So this shouldn't be a Zabbix related problem.

I also (try) to verify the service is running after applying the role with the following assertion in my verify.yml:

- name: Check if Zabbix Agent is running
  assert: 
    that: 'ansible_facts.services["zabbix-agent"].state == "started"'

...which currently is failing.

I did some research on Google and I looked at some of your Ansible Roles like ansible-role-nginx but can not locate my problem here. The nginx service is started exactly the same.
When inside the container i can start the service manually by running: service zabbix-agent start. When running this command through Ansible's command module, the service is also started, but i would rather use the existing systemd or service module of Ansible because the command will not work like this on CentOS.
Any ideas why it is not working? Do I have to adjust/extend the docker image?

This is probably an issue on my hand, but maybe you can point me into the right direction.

Thanks in advance!

apt install package (molecule testing)

New to molecule here. So guide me with anything I'm missing, please.

converge.yml

- name: Converge
  hosts: all
  tasks:
    - name: Update apt cache
      apt:
        update_cache: true
        cache_valid_time: 3600
    - name: "Include base_install"
      include_role:
        name: "base_install"

molecule.yml

---
dependency:
  name: galaxy
driver:
  name: docker
platforms:
  - name: molecule-base_install
    image: geerlingguy/docker-ubuntu2004-ansible
    # command: ''
    # volumes:
    #   - /sys/fs/cgroup:/sys/fs/cgroup:ro
    # privilaged: true
    # pre_build_image: true
provisioner:
  name: ansible
  lint: |
    yamllint .
    ansible-lint
verifier:
  name: ansible

main.yml

---
- name: Install nano,htop,snapd
  package:
    name: 
    - nano
    - htop
    - snapd
    state: present

error

fatal: [molecule-base_install]: FAILED! => {"changed": false, "msg": "No package matching 'nano' is available"}

Expected behavior

APT installs nano, htop, and snapd

Missing pycairo

Trying to run the following:

ansible-test integration --requirements --docker geerlingguy/docker-ubuntu2004-ansible --python-interpreter /usr/bin/python3

Yields the following error:

ERROR: Command "/usr/bin/python3 /root/ansible/test/lib/ansible_test/_data/quiet_pip.py check --disable-pip-version-check" returned exit status 1.
>>> Standard Output
pygobject 3.36.0 requires pycairo, which is not installed.

Unable to find "gnupg" package

Hi Jeff,

Thank you for your great contribution.
Trying to use "geerlingguy.docker" ansible role in a playbook and written a molecule test scenario using this docker image as a test platform/image but the testing fails as follows:
TASK [geerlingguy.docker : Ensure additional dependencies are installed (on Ubuntu >= 20.04).] *** fatal: [instance]: FAILED! => {"changed": false, "msg": "No package matching 'gnupg' is available"}
when doing molecule login and run 'apt list gnupg' the package is not being listed.

Wrong echo command in Dockerfile

It should be "echo -e" to interpret the Newline escape in newer versions of bash. Right now the \n literal is written

# Install Ansible inventory file.
RUN mkdir -p /etc/ansible
RUN echo -e "[local]\nlocalhost ansible_connection=local" > /etc/ansible/hosts

Systemd not starting - Failed to connect to bus: No such file or directory

Hi everyone, I'm trying to test a role that installs postgresql using the docker driver for molecule but it seems that systemd is not starting.

Symptoms

  • After postgres installation I get this log
  • Systemctl commands do not connect to bus
root@ubuntu2004:/# systemctl show
Failed to connect to bus: No such file or directory
root@ubuntu2004:/# systemctl status
Failed to connect to bus: No such file or directory
root@ubuntu2004:/# systemctl status postgresql
Failed to connect to bus: No such file or directory

(this container has been created using molecule create && molecule login)

Molecule configuration

---
dependency:
  name: galaxy
driver:
  name: docker
platforms:
  - name: ubuntu2004
    image: docker.io/geerlingguy/docker-ubuntu2004-ansible:latest
    privileged: true
    command: "/lib/systemd/systemd"
    tmpfs:
      - /run
      - /tmp
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    capabilities:
      - SYS_ADMIN
    pre_build_image: true
provisioner:
  name: ansible
verifier:
  name: ansible
lint: |
  set -e
  yamllint .
  ansible-lint .

My setup

  • ansible: 2.11.3
  • molecule: 3.4.0
  • molecule-docker: 0.2.4
  • python: 3.9
  • docker: 20.10.8
  • OS: Archlinux

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.