尝试使用Vagrant和Ansible
首先
因为在业务中需要使用Ansible,所以我将把调研到的内容等整理成备忘录形式。
环境构建
用 Vagrant + Virtual Box 来为虚拟机准备两个实例。
VMcontrollernode用途Ansible をインストール管理対象OSCentOS 7Ubuntu 18.04IP192.168.100.10192.168.100.20
控制器
$ mkdir ansible
$ cd ansible
$ mkdir data
$ vagrant init
$ vi Vagrantfile
以中文母语进行改写,只需要一个选项:
如下所述
Vagrant.configure("2") do |config|
config.vm.define "controller" do |controller|
controller.vm.box = "bento/ubuntu-18.04"
controller.vm.hostname = "controller"
controller.vm.network "private_network", ip: "192.168.100.10", virtualbox__intnet: "mynetwork"
controller.vm.synced_folder "./data", "/home/vagrant/data"
end
config.vm.define "node" do |node|
node.vm.box = "centos/7"
node.vm.hostname = "node"
node.vm.network "private_network", ip: "192.168.100.20", virtualbox__intnet: "mynetwork"
end
end
可以通过以下命令来确认 VM 的 SSH 连接信息。
$ vagrant ssh-config
Host controller
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/f/Vagrant/ansible_x/.vagrant/machines/controller/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
特別重要的是,IdentityFile~這行。
在這裡,存儲著私鑰,因此在SSH連接時會使用這些信息。
將這個私鑰複製到虛擬機中,從控制器可以SSH連接到節點。
连接控制器时,请执行以下命令。
$ ssh -i /Users/f/Vagrant/ansible/controller/.vagrant/machines/default/virtualbox/private_key vagrant@192.168.100.10
请注意,原始的Vagrant SSH连接使用vagrant ssh命令。
如果确认连接成功,就在controller上安装Ansible。
安装 Ansible
[注意]
在控制器的虚拟机上进行操作。
按照公式的安装指南进行安装。
$ sudo apt -y update
$ sudo apt -y install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt -y install ansible
确认安装
$ ansible --version
ansible 2.9.2
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/vagrant/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.15+ (default, Oct 7 2019, 17:39:04) [GCC 7.4.0]
执行Ansible
使用Ansible在节点上安装并启动Apache。
创建下列文件
$ tree
.
└── sample
├── inventory
└── playbook.yml
[node]
192.168.1.200
ansible_ssh_private_key_file=~/.ssh/key/node_private_key
请注意:将节点的私钥存储在~ / .ssh / key / node_private_key 中,并设置权限为600。
- hosts: node
become: yes
tasks:
- name: install package
yum:
name: httpd
state: installed
- name: start service
systemd:
name: httpd
state: started
enabled: yes
当准备好所需的文件后,请执行以下命令。
$ ansible-playbook -i inventory playbook.yml
当在 node 中启动 Apache Web 服务器时,
通过浏览器访问 http://192.168.100.20,
将显示欢迎页面。
给你的附赠品
如果有这个,只需在 inventory 中写下主机名即可。
Host node
User vagrant
HostName 192.168.100.20
IdentityFile ~/.ssh/private_key/node_private_key