在跳板机上安装ansible,再通过ansible的playbook,给被管理节点安装docker。
跳板机配置
实验环境
- 华为云上按需开两台2核2G的Ubuntu的ECS;
- 2台公网IP为5Mbit/s,按需按流量;
- 2台服务器在一个子网内;
- 跳板机和被管理节点主机分别挂不通的安全组
在跳板机上安装ansible
给跳板机安装ansible,后续通过ansible管理被管理节点。
# 在跳板机上安装ansible,安装Ansible及其中文语言包
sudo apt updatesudo apt install -y ansible-coresudo 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 webservershosts: webserversremote_user: roottasks:- name: Install Dockerapt:name: docker.iostate: latestupdate_cache: yes- name: Configure Docker mirrorcopy:dest: /etc/docker/daemon.jsoncontent: |{"registry-mirrors": ["https://镜像加速地址,这个自己选"]}notify:- Restart Docker- name: Ensure Docker is runningservice:name: dockerstate: startedenabled: yeshandlers:- name: Restart Dockerservice:name: dockerstate: restarted
执行Playbook
ansible-playbook /etc/ansible/playbooks/install_docker.yml
验证安装结果
登录进入被管理节点,验证docker是否成功安装。
ansible webservers -m command -a "docker --version"