-
-
Save yonglai/d4617d6914d5f4eb22e4e5a15c0e9a03 to your computer and use it in GitHub Desktop.
--- | |
- name: Install docker | |
gather_facts: No | |
hosts: default | |
tasks: | |
- name: Install yum utils | |
yum: | |
name: yum-utils | |
state: latest | |
- name: Install device-mapper-persistent-data | |
yum: | |
name: device-mapper-persistent-data | |
state: latest | |
- name: Install lvm2 | |
yum: | |
name: lvm2 | |
state: latest | |
- name: Add Docker repo | |
get_url: | |
url: https://download.docker.com/linux/centos/docker-ce.repo | |
dest: /etc/yum.repos.d/docer-ce.repo | |
become: yes | |
- name: Enable Docker Edge repo | |
ini_file: | |
dest: /etc/yum.repos.d/docer-ce.repo | |
section: 'docker-ce-edge' | |
option: enabled | |
value: 0 | |
become: yes | |
- name: Enable Docker Test repo | |
ini_file: | |
dest: /etc/yum.repos.d/docer-ce.repo | |
section: 'docker-ce-test' | |
option: enabled | |
value: 0 | |
become: yes | |
- name: Install Docker | |
package: | |
name: docker-ce | |
state: latest | |
become: yes | |
- name: Start Docker service | |
service: | |
name: docker | |
state: started | |
enabled: yes | |
become: yes | |
- name: Add user vagrant to docker group | |
user: | |
name: vagrant | |
groups: docker | |
append: yes | |
become: yes |
Thank you for this !!!
you can use with_items for multiple repeated tasks:
-
name: Install docker
gather_facts: No
hosts: defaulttasks:
-
name: Install required pkgs
yum:
name: "{{ item }}"
state: latest
with_items:- yum-utils
- device-mapper-persistent-data
- lvm2
-
name: Add Docker repo
get_url:
url: https://download.docker.com/linux/centos/docker-ce.repo
dest: /etc/yum.repos.d/docer-ce.repo
become: yes -
name: Enable Docker Edge & Test repo
ini_file:
dest: /etc/yum.repos.d/docer-ce.repo
section: "{{ item }}"
option: enabled
value: 0
become: yes
with_items: ['docker-ce-test', 'docker-ce-edge'] -
name: Install Docker
package:
name: docker-ce
state: latest
become: yes -
name: Start Docker service
service:
name: docker
state: started
enabled: yes
become: yes -
name: Add user vagrant to docker group
user:
name: vagrant
groups: docker
append: yes
become: yes
-
when running this playbook getting an issue
fatal: FAILED! => {"changed": true, "msg": "Error: Package: 3:docker-ce-18.09.0-3.el7.x86_64 (docker-ce-stable)\n Requires: container-selinux >= 2.9\n", "rc": 1, "results": ["Loaded plugins: amazon-id, rhui-lb, search-disabled-repos\nResolving Dependencies\n--> Running transaction check\n---> Package docker-ce.x86_64 3:18.09.0-3.el7 will be installed\n--> Processing Dependency: container-selinux >= 2.9 for package: 3:docker-ce-18.09.0-3.el7.x86_64\n--> Processing Dependency: containerd.io for package: 3:docker-ce-18.09.0-3.el7.x86_64\n--> Processing Dependency: docker-ce-cli for package: 3:docker-ce-18.09.0-3.el7.x86_64\n--> Running transaction check\n---> Package containerd.io.x86_64 0:1.2.0-3.el7 will be installed\n---> Package docker-ce.x86_64 3:18.09.0-3.el7 will be installed\n--> Processing Dependency: container-selinux >= 2.9 for package: 3:docker-ce-18.09.0-3.el7.x86_64\n---> Package docker-ce-cli.x86_64 1:18.09.0-3.el7 will be installed\n--> Processing Dependency: libltdl.so.7()(64bit) for package: 1:docker-ce-cli-18.09.0-3.el7.x86_64\n--> Running transaction check\n---> Package docker-ce.x86_64 3:18.09.0-3.el7 will be installed\n--> Processing Dependency: container-selinux >= 2.9 for package: 3:docker-ce-18.09.0-3.el7.x86_64\n---> Package libtool-ltdl.x86_64 0:2.4.2-22.el7_3 will be installed\n--> Finished Dependency Resolution\n You could try using --skip-broken to work around the problem\n You could try running: rpm -Va --nofiles --nodigest\n"]}
I am also facing same problem
you may need to uninstall any existing docker files from the centos repo first. try making this your first task.
- name: Remove docker if installed from CentOS repo
yum:
name:
- docker
- docker-client
- docker-client-latest
- docker-common
- docker-latest
- docker-latest-logrotate
- docker-logrotate
- docker-engine
state: removed
in your destination a k is missing: dest: /etc/yum.repos.d/docker-ce.repo
I mean it's working but it does not look nice like that ;)
@yonglai, why are you adding vagrant to the docker-group?
@yonglai, why are you adding vagrant to the docker-group?
maybe he used vagrant software do this stuff,so he can docker run xxx
with vagrant user
Hi Folks,
I am getting error adter building all workaround discussed in this forum:
Error:
ERROR! Syntax Error while loading YAML.
did not find expected '-' indicator
The error appears to be in '/root/ansible-playbooks/docker_centos1/playbook1.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: Remove Docker
gather_facts: No
^ here
Playbook:
- name: Remove Docker
gather_facts: No
hosts: all
tasks:
-
name: Remove docker if installed from CentOS repo
yum:
name: "{{ item }}"
state: removedwith_items:
- docker
- docker-client
- docker-client-latest
- docker-common
- docker-latest
- docker-latest-logrotate
- docker-logrotate
- docker-engine
tasks:
- name: Install yum utils
yum:
name: "{{ item }}"
state: latest
with_items:
- yum-utils
- device-mapper-persistent-data
- lvm2
- name: Add Docker repo
get_url:
url: https://download.docker.com/linux/centos/docker-ce.repo
dest: /etc/yum.repos.d/docker-ce.repo
become: yes
- name: Enable Docker Edge & Test repo
- name: Install Docker
package:
name: docker-ce
state: latest
become: yes
- name: Start Docker service
service:
name: docker
state: started
enabled: yes
become: yes
- name: Add user yogesh to docker group
user:
name: yogesh
groups: docker
append: yes
become: yes
@yogeshssawant : you can try with the following..and see how it goes.
- No real reasons to declare more than once the task value.
- Be careful as you might had miss to declare the become: true instruction, in several points in the playbook. Easier to do it once, at the top of it, if you know it will be used for most of it.
- One of the tasks it is completely missing
I really suggest to specify the host you want to use as a target for this playbook instead of using all .
In the near future try to give a try to roles. I do prefer them as grants you a bit more of flexibility in what you can do in your tasks.
Playbook:
gather_facts: false
hosts: all
become: true
tasks:
- name: Remove docker if installed from CentOS repo
yum:
name: "{{ item }}"
state: removed
with_items:
- docker
- docker-client
- docker-client-latest
- docker-common
- docker-latest
- docker-latest-logrotate
- docker-logrotate
- docker-engine
- name: Install yum utils
yum:
name: "{{ item }}"
state: latest
with_items:
- yum-utils
- device-mapper-persistent-data
- lvm2
- name: Add Docker repo
get_url:
url: https://download.docker.com/linux/centos/docker-ce.repo
dest: /etc/yum.repos.d/docker-ce.repo
- name: Enable Docker Edge & Test repo
#### Something it is missing here ####
- name: Install Docker
yum:
name: docker-ce
state: latest
- name: Start Docker service
service:
name: docker
state: started
enabled: yes
- name: Add user yogesh to docker group
user:
name: yogesh
groups: docker
append: yes
its work ... thanks bro ... good work
TASK [Install Docker]
FAILED! => {"changed": false, "failures": [], "msg": "Depsolve Error occured: \n Problem: cannot install the best candidate for the job\n - nothing provides libcgroup needed by docker-ce-3:19.03.12-3.el7.x86_64\n - nothing provides container-selinux >= 2:2.74 needed by docker-ce-3:19.03.12-3.el7.x86_64", "rc": 1, "result": []}
when installing in RHEL 8
@a19singh : your best option at the moment it is to change the task as for the following
current
- name: Install Docker
yum:
name: docker-ce
state: latest
RHEL 8 version
- name: Install Docker
shell: "dnf install --nobest docker-ce"
A more clean solution It would be to declare both tasks and set a when
conditional, in order to evaluate which version of the current OS it is running and, based on that execute the related task.
The error you see it is due to the fact RH it is trying to stop the usage of docker on their systems, making use of their own tools ( buildah and podman ).
At today the merging of the usage of the --nobest
option into the dnf module for ansible it is currently ongoing, that's the reason why it still be necessary to declare it as a ( shell ) command.
source : ansible/ansible#70318
Actually, this is because RHEL's container-tools module provides it's own runc
binary, which conflicts with the runc
docker-ce provides.
this worked very well for me on centos7, thanks for sharing!
Worked for me, many thks
Isuue running the playbook
TASK [Add Docker repo] ***********************************************************************************************************************************************
fatal: [app_server]: FAILED! => {"changed": false, "msg": "Failed to validate the SSL certificate for download.docker.com:443. Make sure your managed systems have a valid CA certificate installed. If the website serving the url uses SNI you need python >= 2.7.9 on your managed machine (the python executable used (/usr/bin/python) is version: 2.7.5 (default, Jun 17 2014, 18:11:42) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)]) or you can install the
urllib3
,pyOpenSSL
,ndg-httpsclient
, andpyasn1
python modules to perform SNI verification in python >= 2.6. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible. The exception msg was: [Errno 1] _ssl.c:504: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure."}to retry, use: --limit @/root/playbooks/install-docker-centos.retry