如何使用Ansible在远程服务器上安装Docker

本文主要介绍如何使用 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.ymlYAML

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 个名为taskstemplates 目录。

在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,这会极大提高工作效率。

本文使用 文章同步助手 同步

相关推荐
Java技术小馆9 分钟前
GitDiagram如何让你的GitHub项目可视化
java·后端·面试
星星电灯猴33 分钟前
iOS 性能调试全流程:从 Demo 到产品化的小团队实战经验
后端
程序无bug42 分钟前
手写Spring框架
java·后端
JohnYan44 分钟前
模板+数据的文档生成技术方案设计和实现
javascript·后端·架构
全干engineer1 小时前
Spring Boot 实现主表+明细表 Excel 导出(EasyPOI 实战)
java·spring boot·后端·excel·easypoi·excel导出
Da_秀1 小时前
软件工程中耦合度
开发语言·后端·架构·软件工程
蓝易云1 小时前
Qt框架中connect()方法的ConnectionType参数使用说明 点击改变文章字体大小
linux·前端·后端
a_Dragon11 小时前
Spring Boot多环境开发-Profiles
java·spring boot·后端·intellij-idea
用户8324951417321 小时前
Maven 项目打包:实现业务代码与第三方依赖分离
后端
发仔1232 小时前
解析实时推荐系统的数据流向
后端