在跳板機上安裝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"