使用ansible给被管理节点安装docker

发布于:2025-07-13 ⋅ 阅读:(21) ⋅ 点赞:(0)

在跳板机上安装ansible,再通过ansible的playbook,给被管理节点安装docker。

跳板机配置

实验环境

  1. 华为云上按需开两台2核2G的Ubuntu的ECS;
  2. 2台公网IP为5Mbit/s,按需按流量;
  3. 2台服务器在一个子网内;
  4. 跳板机和被管理节点主机分别挂不通的安全组

在跳板机上安装ansible

给跳板机安装ansible,后续通过ansible管理被管理节点。

# 在跳板机上安装ansible,安装Ansible及其中文语言包
sudo apt update

sudo apt install -y ansible-core

sudo apt install language-pack-zh-hans

# 通过编辑 /etc/default/locale 文件来设置系统的语言和区域选项
sudo vim /etc/default/locale

# 在文件中添加或修改以下内容:
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
LC_ALL="zh_CN.UTF-8"

source /etc/default/locale

# 验证ansible安装
ansible --version

通过ansible给被管理节点安装docker

在跳板机上生成SSH密钥对
# 生成SSH密钥对
ssh-keygen -t rsa -b 4096 -C "邮箱"
将跳板机的公钥复制到被管理节点

在跳板机上执行下面的命令,将跳板机的公钥复制到被管理节点,实现免密登录。

ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@被管理节点的内网ip

# 验证无密码登录
ssh -p 22 root@被管理节点的内网ip
在跳板机上创建Ansible主机清单文件

创建 /etc/ansible/host,在此文件里写主机清单。

sudo vim /etc/ansible/hosts

# host文件里写
[webservers]
被管理节点的内网ip ansible_ssh_port=22 ansible_ssh_user=root
测试ansible连接

进行模块测试

# ping命令检查是否能连接到被管理节点(被管理节点安全组入规则允许icmp,源地址允许同内网网段)
ansible webservers -m ping
编写Ansible Playbook

创建/etc/ansible/playbooks/install_docker.yml文件,此文件用于安装docker。

- name: Install Docker on webservers
  hosts: webservers
  remote_user: root
  tasks:
    - name: Install Docker
      apt:
        name: docker.io
        state: latest
        update_cache: yes

    - name: Configure Docker mirror
      copy:
        dest: /etc/docker/daemon.json
        content: |
          {
            "registry-mirrors": ["https://镜像加速地址,这个自己选"]
          }
      notify:
        - Restart Docker

    - name: Ensure Docker is running
      service:
        name: docker
        state: started
        enabled: yes

  handlers:
    - name: Restart Docker
      service:
        name: docker
        state: restarted
      
执行Playbook
ansible-playbook /etc/ansible/playbooks/install_docker.yml

验证安装结果

登录进入被管理节点,验证docker是否成功安装。

ansible webservers -m command -a "docker --version"

网站公告

今日签到

点亮在社区的每一天
去签到