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

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

相关推荐
向前看-3 分钟前
验证码机制
前端·后端
超爱吃士力架2 小时前
邀请逻辑
java·linux·后端
AskHarries4 小时前
Spring Cloud OpenFeign快速入门demo
spring boot·后端
isolusion5 小时前
Springboot的创建方式
java·spring boot·后端
zjw_rp5 小时前
Spring-AOP
java·后端·spring·spring-aop
TodoCoder5 小时前
【编程思想】CopyOnWrite是如何解决高并发场景中的读写瓶颈?
java·后端·面试
凌虚6 小时前
Kubernetes APF(API 优先级和公平调度)简介
后端·程序员·kubernetes
机器之心7 小时前
图学习新突破:一个统一框架连接空域和频域
人工智能·后端
.生产的驴7 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
顽疲8 小时前
springboot vue 会员收银系统 含源码 开发流程
vue.js·spring boot·后端