1.创建invertory.ini并验证连通性
- 创建invertory.ini
[docker_servers]
192.168.0.2
- 执行命令
ansible -i invertory.ini docker_servers -m ping
- 结果
192.168.0.2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
docker_playbook_22">2.编写docker playbook
---
- name: Install Docker and configure Tsinghua mirrors
hosts: docker_servers # 替换为你目标主机的主机名或IP地址
become: yes # 使用 sudo 提权
tasks:
- name: Install dependencies
yum:
name:
- yum-utils
- device-mapper-persistent-data
- lvm2
state: present
- name: Set Docker CE repository
get_url:
url: https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
dest: /etc/yum.repos.d/docker-ce.repo
- name: Install Docker CE
yum:
name: docker-ce
state: present
enablerepo: docker-ce-stable
- name: Start and enable Docker service
service:
name: docker
state: started
enabled: yes
- name: Verify Docker installation
command: docker --version
register: docker_version
changed_when: false
- name: Print Docker version
debug:
var: docker_version.stdout
ansibleplay_61">3. 执行ansible-play命令
ansible-play -i invertory.ini docker_install.yml
查看直接结果,输出成功结果
PLAY [Install Docker and configure Tsinghua mirrors] **********************************************************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************************************************************************************
ok: [192.168.0.2]
TASK [Install dependencies] ***********************************************************************************************************************************************************************************
ok: [192.168.0.2]
TASK [Set Docker CE repository] *******************************************************************************************************************************************************************************
changed: [192.168.0.2]
TASK [Install Docker CE] **************************************************************************************************************************************************************************************
ok: [192.168.0.2]
TASK [Start and enable Docker service] ************************************************************************************************************************************************************************
changed: [192.168.0.2]
TASK [Verify Docker installation] *****************************************************************************************************************************************************************************
ok: [192.168.0.2]
TASK [Print Docker version] ***********************************************************************************************************************************************************************************
ok: [192.168.0.2] => {
"docker_version.stdout": "Docker version 26.1.4, build 5650f9b"
}
PLAY RECAP ****************************************************************************************************************************************************************************************************
192.168.0.2 : ok=7 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
4.安装过程中遇到的问题
- 提示连接超时
PLAY [Install Docker and configure Tsinghua mirrors] *****************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.2]
TASK [Install dependencies] ******************************************************************************************************************
fatal: [192.168.0.2]: FAILED! => {"changed": false, "msg": "Failure talking to yum: failure: repodata/repomd.xml from AppStream: [Errno 256] No more mirrors to try.\nhttp://mirrors.aliyun.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found\nhttp://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')\nhttp://mirrors.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: (28, 'Connection timed out after 30002 milliseconds')\nhttp://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')\nhttp://mirrors.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')\nhttp://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: (28, 'Connection timed out after 30002 milliseconds')\nhttp://mirrors.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')\nhttp://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')\nhttp://mirrors.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')"}
PLAY RECAP ***********************************************************************************************************************************
192.168.0.2 : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
问题原因:
报错中地址为http,可能已经失效,替换为https 或者删除现在的源
排查步骤:
- 查看现在已启用的源
yum repolist enabled
发现有个docker源已启用
已加载插件:fastestmirror Loading mirror speeds from cached hostfile 源标识 源名称 状态 !docker-ce-stable/7/x86_64 Docker CE Stable - x86_64 337 repolist: 337