如何使用带有Vagrant的Ansible PlayBook
时间:2020-02-23 14:40:22 来源:igfitidea点击:
vagrant是开发人员最喜欢的工具之一。
VAGRANT是一种工具,旨在使用户能够使用其选择的虚拟化环境创建和配置轻量级,可重复和便携式开发环境 - VirtualBox,KVM,VMware 等。
那么我如何使用Vagrant使用Ansible进行清洁自动化?
我们可以使用Vagrant使用Ansible,以自动配置Vagrant Machines的要求和设置软件依赖项。
本教程不会对Vagrant和Ansible进行非常详细的详细信息,而是概述如何使用Vagrant使用Ansible。
我会创建一个项目目录。
$mkdir ~/myvagrant $cd ~/myvagrant
我将创建一个简单的Ansible PlayBook来更新操作系统并安装基本包。
我们可以扩展以涵盖我们需要设置的内容。
$vim provision.yaml -- - hosts: all become: yes become_method: sudo tasks: - name: Update OS package: name: '*' state: latest - name: Install Basic packages package: name: ['vim', 'zip', 'bash-completion', 'wget', 'tmux']
然后创建一个VAGRANTFILE,定义ANSIBLE Provisioner。
$vim Vagrantfile # -*- mode: ruby -* # vi: set ft=ruby : ENV['VAGRANT_DEFAULT_PROVIDER'] = 'libvirt' Vagrant.configure("2") do |config| ##### VM definition ##### config.vm.define "cent01" do |config| config.vm.hostname = "cent01" config.vm.box = "centos/8" config.vm.box_check_update = false config.vm.provision :ansible do |ansible| ansible.limit = "all" ansible.playbook = "provision.yaml" end config.vm.provider :libvirt do |v| v.memory = 1024 v.cpus = 1 end end end
可以在我们的vagrantfile中看到,我们正在使用provision.yaml playbook。
有两个PlayBook和VagrantFile准备后,运行Vagrant Up命令以启动虚拟机。
$vagrant up Bringing machine 'cent01' up with 'libvirt' provider... ==> cent01: Box 'centos/8' could not be found. Attempting to find and install... cent01: Box Provider: libvirt cent01: Box Version: >= 0 ==> cent01: Loading metadata for box 'centos/8' cent01: URL: https://vagrantcloud.com/centos/8 ==> cent01: Adding box 'centos/8' (v1905.1) for provider: libvirt cent01: Downloading: https://vagrantcloud.com/centos/boxes/8/versions/1905.1/providers/libvirt.box cent01: Download redirected to host: cloud.centos.org cent01: Calculating and comparing box checksum... ==> cent01: Successfully added box 'centos/8' (v1905.1) for 'libvirt'! ==> cent01: Uploading base box image as volume into libvirt storage... ==> cent01: Creating image (snapshot of base box volume). ==> cent01: Creating domain with the following settings... ==> cent01: -- Name: cent8_cent01 ==> cent01: -- Domain type: kvm ==> cent01: -- Cpus: 2 ==> cent01: -- Feature: acpi ==> cent01: -- Feature: apic ==> cent01: -- Feature: pae ==> cent01: -- Memory: 1024M ==> cent01: -- Management MAC: ==> cent01: -- Loader: ==> cent01: -- Nvram: ==> cent01: -- Base box: centos/8 ==> cent01: -- Storage pool: default ==> cent01: -- Image: /var/home/jkmutai/.local/share/libvirt/images/cent8_cent01.img (11G) ==> cent01: -- Volume Cache: default ==> cent01: -- Kernel: ==> cent01: -- Initrd: ==> cent01: -- Graphics Type: vnc ==> cent01: -- Graphics Port: -1 ==> cent01: -- Graphics IP: 127.0.0.1 ==> cent01: -- Graphics Password: Not defined ==> cent01: -- Video Type: cirrus ==> cent01: -- Video VRAM: 9216 ==> cent01: -- Sound Type: ==> cent01: -- Keymap: en-us ==> cent01: -- TPM Path: ==> cent01: -- INPUT: type=mouse, bus=ps2 ==> cent01: Creating shared folders metadata... ==> cent01: Starting domain. ==> cent01: Waiting for domain to get an IP address... ==> cent01: Waiting for SSH to become available... cent01: cent01: Vagrant insecure key detected. Vagrant will automatically replace cent01: this with a newly generated keypair for better security. cent01: cent01: Inserting generated public key within guest... cent01: Removing insecure key from the guest if it's present... cent01: Key inserted! Disconnecting and reconnecting using new SSH key... ==> cent01: Setting hostname... ==> cent01: Configuring and enabling network interfaces... cent01: SSH address: 192.168.122.48:22 cent01: SSH username: vagrant cent01: SSH auth method: private key ==> cent01: Rsyncing folder: /var/home/jkmutai/myhacks/vagrant/cent8/=> /vagrant ==> cent01: Running provisioner: ansible... Vagrant has automatically selected the compatibility mode '2.0' according to the Ansible version installed (2.9.5). Alternatively, the compatibility mode can be specified in your Vagrantfile: https://www.vagrantup.com/docs/provisioning/ansible_common.html#compatibility_mode cent01: Running ansible-playbook... PLAY [all] ** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** *** TASK [Gathering Facts] ** **** **** **** **** **** **** **** **** **** **** **** **** **** *** ok: [cent01] TASK [Update OS] ** **** **** **** **** **** **** **** **** **** **** **** ** changed: [cent01] TASK [Install Basic packages] ** **** **** **** **** **** **** **** **** **** **** **** ** changed: [cent01] PLAY RECAP ** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** *** cent01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
如果我们有VAGRANT机器,则使用命令:
vagrant provision
我们的执行成功,我们现在可以使用命令SSH到VM:
$vagrant ssh