使用Vagrant和Ansible来搭建开发环境(操作系统安装部分)
这次要进行的事情是什么
我之前在主机端搭建了ansible2的执行环境。
这次我们将使用vagrant创建虚拟环境,并进行最基本的ansible初始化。
需要注意的是,我们创建的文件可以在以下链接找到:
https://github.com/ak-ymst/vm_config
使用Vagrant来准备虚拟环境。
在使用Ansible进行配置之前,我们使用Vagrant来构建虚拟环境。 我们决定从这里(http://www.vagrantbox.es/)下载CentOS7.1作为操作系统镜像并使用。
Vagrantfile的使用如下所示。
Vagrant.configure("2") do |config|
config.vm.provider :virtualbox do |v|
v.name = "centos7.1"
v.customize ["modifyvm", :id, "--memory", 3072]
end
config.vm.box = "centos7.1"
config.vm.box_url = "https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box"
config.vm.network :private_network, ip: "192.168.33.100"
config.ssh.forward_agent = true
end
在准备好上述的Vagrantfile之后,执行以下命令。
请启动Vagrant。
确认在命令结束后(仅在初次安装时需要下载一些时间)能够使用SSH登录。
$ vagrant ssh
[vagrant@localhost ~]$
[vagrant@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[vagrant@localhost ~]$
对Ansible进行操作验证
首先,在 Vagrantfile 中添加以下内容以执行配置。
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/playbook.yml"
ansible.inventory_path = "ansible/hosts"
ansible.limit = 'all'
end
ansible.inventory_path是保存目标主机清单的文件名,其内容如下所示。
[vagrant-centos7.1]
192.168.33.100
先行動作として、プレイブック中の実際のプロビジョニング内容に関しては、とりあえずyumの更新を行います。
ansible/playbook.yml 的释义:ansible/playbook.yml 是一个文件的名称或路径。
---
- hosts: all
become: true
roles:
- init
ansible/roles/init/tasks/main.yml的含义是:主要任务是在初始化时执行的操作。
---
- name: yum update
become: yes
yum: name=* state=latest
然后,执行provision。
$ vagrant provision
==> default: Running provisioner: ansible...
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [192.168.33.100]
TASK [init : yum update] *******************************************************
changed: [192.168.33.100]
PLAY RECAP *********************************************************************
192.168.33.100 : ok=2 changed=1 unreachable=0 failed=0
$
修改时区
将CentOS的默认时区从UTC更改为日本时间。
[vagrant@vagrant-centos7 ~]$ date
2016年 2月 1日 月曜日 08:12:04 GMT
[vagrant@vagrant-centos7 ~]$ ll /etc/localtime
lrwxrwxrwx. 1 root root 35 11月 2 14:19 /etc/localtime -> ../usr/share/zoneinfo/Europe/London
请将以下内容添加到ansible/roles/init/tasks/main.yml文件中。
- name: change timezone to Asia/Tokyo
become: yes
file: src=/usr/share/zoneinfo/Asia/Tokyo dest=/etc/localtime state=link force=true
然后重新执行Provision。
$ vagrant provision
==> default: Running provisioner: ansible...
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [192.168.33.100]
TASK [init : yum update] *******************************************************
ok: [192.168.33.100]
TASK [init : change timezone to Asia/Tokyo] ************************************
changed: [192.168.33.100]
PLAY RECAP *********************************************************************
192.168.33.100 : ok=3 changed=1 unreachable=0 failed=0
$ vagrant ssh
Last login: Mon Feb 1 17:21:47 2016 from 192.168.33.1
[vagrant@vagrant-centos7 ~]$ date
2016年 2月 1日 月曜日 17:23:44 JST
[vagrant@vagrant-centos7 ~]$ ll /etc/localtime
lrwxrwxrwx 1 root root 30 2月 1 17:21 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
[vagrant@vagrant-centos7 ~]$
確認了時區已經被更改,我們就結束本次了。
下一次,我們將進行httpd等軟體的安裝。