本文主要介绍如何使用 Ansible Playbook 安装 Docker
配置
在此之前需要安装 Ansible。Ansible 安装 请参考官网docs.ansible.com/ansible/lat...
安装后,创建名为 ansible-docker
的目录。
bash
mkdir ansible-docker && cd ansible-docker
创建一个名为ansible.cfg
的Ansible 配置文件,文件内容如下。
ini
[defaults]
inventory = hosts
host_key_checking = True
deprecation_warnings = False
collections = ansible.posix, community.general
然后创建一个名为 hosts
的文件,其中文件名称需要在ansible.cfg
上定义。
ini
[example-server]
0.0.0.0 ansible_user=root
注意:不要忘记更改 IP 地址和主机名。
设置 Ansible 配置清单文件后,接下来创建一个名为playbook.yml
的YAML
yaml
---
- name: Setup Docker on Ubuntu Server 22.04
hosts: all
become: true
remote_user: root
roles:
- config
- docker
创建角色目录:
- Config,在这个目录下,创建一个名为tasks的目录。之后,创建名为
main.yml
的文件,用于运行更新、升级和安装多个依赖项。
yaml
---
- name: Update&Upgrade
ansible.builtin.apt:
name: aptitude
state: present
update_cache: true
- name: Install dependencies
ansible.builtin.apt:
name:
- net-tools
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- python3-pip
- virtualenv
- python3-setuptools
- gnupg-agent
- autoconf
- dpkg-dev
- file
- g++
- gcc
- libc-dev
- make
- pkg-config
- re2c
- wget
state: present
update_cache: true
- Docker,在此目录下创建 2 个名为
tasks
和templates
目录。
在tasks目录上创建名为 main.yml
的文件。该文件包含_Docker 、Docker Compose 安装和私有注册表设置_。
yaml
---
- name: Add Docker GPG apt Key
ansible.builtin.apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
state: present
- name: Add repository into sources list
ansible.builtin.apt_repository:
repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable
state: present
filename: docker
- name: Install Docker 23.0.1-1
ansible.builtin.apt:
name:
- docker-ce=5:23.0.1-1~ubuntu.22.04~jammy
- docker-ce-cli=5:23.0.1-1~ubuntu.22.04~jammy
- containerd.io
state: present
update_cache: true
- name: Setup docker user
ansible.builtin.user:
name: docker
groups: "docker"
append: true
sudo_user: yes
- name: Install Docker module for Python
ansible.builtin.pip:
name: docker
- name: Install Docker-Compose&Set Permission
ansible.builtin.get_url:
url: https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
dest: /usr/local/bin/docker-compose
mode: '755'
- name: Create Docker-Compose symlink
ansible.builtin.command:
cmd: ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
creates: /usr/bin/docker-compose
- name: Add private registry
ansible.builtin.template:
src: daemon.j2
dest: /etc/docker/daemon.json
mode: preserve
- name: Restart Docker
ansible.builtin.service:
name: docker
state: restarted
enabled: true
在模板中,使用名为 daemon.j2
的 jinja 文件创建一个模板文件。该文件包含私有注册表的配置(可选)。
json
{
"insecure-registries" : ["http://0.0.0.0:5000"]
}
注意:IP字段使用远程服务器私有 IP
完成所有设置后,项目目录应如下所示:
css
$ tree
.
├── ansible.cfg
├── config
│ └── tasks
│ └── main.yml
├── docker
│ ├── tasks
│ │ └── main.yml
│ └── templates
│ └── daemon.j2
├── hosts
└── playbook.yml
测试运行
现在使用此命令测试yml文件。
css
$ ansible-playbook --syntax-check playbook.yml
如果没有任何错误,请使用此命令运行剧本。
css
$ ansible-playbook -i hosts playbook.yml
输出,等待完成。
markdown
____________________________________________
< PLAY [Setup Docker on Ubuntu Server 22.04] >
--------------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
________________________
< TASK [Gathering Facts] >
------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
结论
本文,主要展示如何使用 Ansible Playbook 安装特定版本的 Docker。对于需要同时在多台服务器部署Docker,这会极大提高工作效率。
本文使用 文章同步助手 同步