尝试使用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
广告
将在 10 秒后关闭
bannerAds