-
Notifications
You must be signed in to change notification settings - Fork 6
Closed
Description
Objective
This issue demonstrates how you can install Containerd, Nerdctl, and Buildkit altogether using a single playbook.
Steps to reproduce
Step 0 - Prepare your inventory list
# server.yml
---
server:
hosts:
containerd-server:
ansible_host: 10.178.0.65
ansible_user: packer
ansible_ssh_private_key_file: ~/.ssh/id_rsaStep 1 - Define your custom playbook
rootful mode
# rootful-containerd-install.yml
---
- name: Perform Containerd Installation
hosts: all
become: yes
vars_files:
- ./roles/container.ops/containerd.ops/vars/main.yml
roles:
- role: ./roles/container.ops/containerd.ops
vars:
- rootless_containerd: falserootless mode
# rootless-containerd-install.yml
---
- name: Perform Containerd Installation
hosts: all
become: yes
vars_files:
- ./roles/container.ops/containerd.ops/vars/main.yml
roles:
- role: ./roles/container.ops/containerd.ops
vars:
- rootless_containerd: true
- rootless_user: "packer" # target rootless user to run containerd with rootless previledgeStep 2 - Run the playbook with the pre-defined containerd role
ansible-playbook -K -i ~/.local/inventory/test.yml ~/workspace/cloud-estate/playbooks/rootful-containerd-install.ymlStep 3 - (Post Installation) Spin up a container with nerdctl
Spin up a nginx container with nerdctl
sudo nerdctl run --rm -it --name nginx -p 80:80 nginx:latestVisit http://{ip}:80 to see if the nginx default page is properly displayed
Notes
The ansible playbook is able to catch the scenario where some of the pkgs already installed.
Ansible Logs
ansible-play.log
PLAY [Perform Containerd Installation] *****************************************
TASK [Gathering Facts] *********************************************************
ok: [test-apt]
TASK [./roles/apt.ops/set-sources.ops/ : include_tasks] ************************
included: /home/kev/workspace/cloud-estate/playbooks/roles/apt.ops/set-sources.ops/tasks/setup.yml for test-apt
TASK [./roles/apt.ops/set-sources.ops/ : Setup custom apt source] **************
ok: [test-apt]
TASK [./roles/apt.ops/set-sources.ops/ : Keep apt up-to-date with custom source] ***
ok: [test-apt]
TASK [./roles/container.ops/containerd.ops : include_tasks] ********************
included: /home/kev/workspace/cloud-estate/playbooks/roles/container.ops/containerd.ops/tasks/containerd-install.yml for test-apt
TASK [./roles/container.ops/containerd.ops : Update package source list] *******
ok: [test-apt]
TASK [./roles/container.ops/containerd.ops : Install pre-requisite apk packages] ***
ok: [test-apt]
TASK [./roles/container.ops/containerd.ops : Create a directory to store the CNI binary] ***
ok: [test-apt]
TASK [./roles/container.ops/containerd.ops : Check if Containerd is installed] ***
fatal: [test-apt]: FAILED! => changed=false
cmd: command -v containerd
delta: '0:00:00.001705'
end: '2022-04-13 12:00:12.665740'
failed_when_result: true
msg: non-zero return code
rc: 127
start: '2022-04-13 12:00:12.664035'
stderr: ''
stderr_lines: <omitted>
stdout: ''
stdout_lines: <omitted>
TASK [./roles/container.ops/containerd.ops : Install CNI plugin with official script] ***
changed: [test-apt]
TASK [./roles/container.ops/containerd.ops : Create a directory to store the Containerd configuration] ***
changed: [test-apt]
TASK [./roles/container.ops/containerd.ops : Install Containerd] ***************
changed: [test-apt]
TASK [./roles/container.ops/containerd.ops : Write default configuration to /etc/contained] ***
changed: [test-apt]
TASK [./roles/container.ops/containerd.ops : Enable Contained as a daemon service] ***
ok: [test-apt]
TASK [./roles/container.ops/containerd.ops : include_tasks] ********************
included: /home/kev/workspace/cloud-estate/playbooks/roles/container.ops/containerd.ops/tasks/nerdctl-install.yml for test-apt
TASK [./roles/container.ops/containerd.ops : Check if Nerdctl is installed] ****
fatal: [test-apt]: FAILED! => changed=false
cmd: command -v nerdctl
delta: '0:00:00.001679'
end: '2022-04-13 12:00:26.037003'
failed_when_result: true
msg: non-zero return code
rc: 127
start: '2022-04-13 12:00:26.035324'
stderr: ''
stderr_lines: <omitted>
stdout: ''
stdout_lines: <omitted>
TASK [./roles/container.ops/containerd.ops : Install Nerdctl with official script] ***
changed: [test-apt]
TASK [./roles/container.ops/containerd.ops : include_tasks] ********************
included: /home/kev/workspace/cloud-estate/playbooks/roles/container.ops/containerd.ops/tasks/buildkit-install.yml for test-apt
TASK [./roles/container.ops/containerd.ops : Check if Buildkit daemon is installed] ***
fatal: [test-apt]: FAILED! => changed=false
failed_when_result: true
stat:
exists: false
TASK [./roles/container.ops/containerd.ops : Install Buildkitd with official script] ***
changed: [test-apt]
TASK [./roles/container.ops/containerd.ops : Create daemon service for Buildkitd] ***
changed: [test-apt]
TASK [./roles/container.ops/containerd.ops : Enable Buildkitd as a daemon service] ***
changed: [test-apt]
TASK [./roles/container.ops/containerd.ops : include_tasks] ********************
included: /home/kev/workspace/cloud-estate/playbooks/roles/container.ops/containerd.ops/tasks/ipv4_forward.yml for test-apt
TASK [./roles/container.ops/containerd.ops : Enable ipv4 port forwarding] ******
ok: [test-apt]
TASK [./roles/container.ops/containerd.ops : include_tasks] ********************
included: /home/kev/workspace/cloud-estate/playbooks/roles/container.ops/containerd.ops/tasks/reboot.yml for test-apt
TASK [./roles/container.ops/containerd.ops : Reboot machine to take effect] ****
changed: [test-apt]
PLAY RECAP *********************************************************************
test-apt : ok=23 changed=9 unreachable=0 failed=0 skipped=0 rescued=3 ignored=0
Reactions are currently unavailable