使用Ansible-Galaxy在Linux上安装Docker
每次在Linux上安装Docker时,
「安装Ubuntu的Docker」
「安装CentOS的Docker」
我通常会在谷歌上搜索相关信息,并从Docker官方网站手动安装。
因为每次都要进行安装很麻烦,所以我想实现自动化。就在这时,我发现了一个名为ansible-galaxy的出色OSS工具,我想向大家推荐一下。
使用Ansible Galaxy
Ansible Galaxy:https://galaxy.ansible.com/geerlingguy/docker
GitHub:https://github.com/geerlingguy/ansible-role-docker
答案集市:https://galaxy.ansible.com/geerlingguy/docker
GitHub:https://github.com/geerlingguy/ansible-role-docker
尝试编写Ansible Playbook
使用VirtualBox在Ubuntu20.04上创建一个虚拟机。
使用Vagrant作为Provisioning工具,使用Ansible在该虚拟机上安装Docker。
创建Vagrantfile
我将创建以下的Vagrantfile。
IP地址将设为192.168.0.3/24。
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "ansible-docker" do |node|
node.vm.box = "bento/ubuntu-20.04"
node.vm.hostname = "ansible-docker"
node.vm.network "private", ip: "192.168.0.3", netmask: "255.255.255.0"
node.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "./install_docker.yml"
ansible.inventory_path = "./inventory.ini"
ansible.limit = 'all'
end
end
安装role
创建一个roles目录,并在其中安装本次使用的角色。
mkdir roles
ansible-galaxy install geerlingguy.docker -p roles/
创建清单和操作手册
库存.ini
[ansible-docker]
192.168.0.3
安装_docker.yml
---
hosts: all
roles:
role: geerlingguy.docker
become: yes
执行Playbook
目录结构如下。
.
├── Vagrantfile
├── install_docker.yml
├── inventory.ini
└── roles
└── geerlingguy.docker
├── LICENSE
├── README.md
├── defaults
│ └── main.yml
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── molecule
│ └── default
│ ├── converge.yml
│ └── molecule.yml
└── tasks
├── docker-compose.yml
├── docker-users.yml
├── main.yml
├── setup-Debian.yml
└── setup-RedHat.yml
以下指令用于创建虚拟机。(需要在主机操作系统上配置好Ansible执行环境。)
vagrant up
您可以确认已经安装了 Docker 和 Docker Compose。
vagrant@ansible-docker:~$ sudo docker -v
Docker version 19.03.12, build 48a66213fe
vagrant@ansible-docker:~$ sudo docker-compose -v
docker-compose version 1.26.0, build d4451659