Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deploying Docker images using Ansible

Tags:

docker

ansible

After reviewing this amazing forum, i thought it's time to join in...

I'm having issue with a playbook that deploys multiple Dockers.

  • My Ansible version is: 2.5.1
  • My Python version is 3.6.9
  • My Linux Images are 18.04 from the site: OSboxes.

Docker service is installed and running on both of the machines.

According to this website, all you need to do is follow the instructions and everything will work perfectly. :)

https://www.techrepublic.com/article/how-to-deploy-a-container-with-ansible/

(The playbook i use is in the link above)

but after following the steps, and using the playbook, i've got this error.

TASK [Pull default Docker image] ******************************************************************************************************
fatal: [192.168.1.38]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (docker_image) module: source Supported parameters include: api_version, archive_path, buildargs, cacert_path, cert_path, container_limits, debug, docker_host, dockerfile, filter_logger, force, http_timeout, key_path, load_path, name, nocache, path, pull, push, repository, rm, ssl_version, state, tag, timeout, tls, tls_hostname, tls_verify, use_tls"}

I'll be happy for your support on this issue.

like image 669
Nahum Avatar asked Nov 29 '25 08:11

Nahum


2 Answers

The source: pull option was added in Ansible 2.8. Since you are using Ansible 2.5.1, that option is not available.

You can either use a later version, 2.8 or above, or just remove that line from your playbook and it should work:

- name: Pull default Docker image
  docker_image:
    name: "{{ default_container_image }}"

You won't have the guarantee that the image has been newly pulled from a registry. If that's important in your case, you can remove any locally cached version of the image first:

- name: Remove Docker image
  docker_image:
    name: "{{ default_container_image }}"
    state: absent

- name: Pull default Docker image
  docker_image:
    name: "{{ default_container_image }}"
like image 158
codemonkey Avatar answered Dec 02 '25 00:12

codemonkey


So according to the doc of docker_image module of Ansible 2.5, there is indeed no parameter source.

Nevertheless, the doc of version 2.9 tells us it has been "added in 2.8"! So you have to update you Ansible version to be able to run the linked playbook as-is. That's you best option.

Otherwise, another option would be to keep your version 2.5 and simply remove the line 38.

(-)        source: pull

But I don't know how was the default behaviour before 2.8, so I cannot garanty you that it will do what you expect!

like image 40
xenlo Avatar answered Dec 02 '25 00:12

xenlo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!